Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Two ways of modeling a Natural Language Processing subdomain: 1) using subtype hierarchies in both dimensions, 2) using a subtype hierarchy in one dimension and a parametrized hierarchy in another dimension
import java.util.List;
import java.util.Locale;
import java.util.stream.Stream;
/* ****************************************
* 1) CORE LANGUAGE-SPECIFIC TYPES (AXIS Z)
******************************************/
/*
* 1.A) PART OF SPEECH
* https://en.wikipedia.org/wiki/Part_of_speech
*/
//
// 1.A.I) ENGLISH PART OF SPEECH
//
/**
* Implementing classes consist of one or more part-of-speech tags (each tag provided by a different tagger).
*/
interface PartOfSpeech {
}
class EnglishPartOfSpeech implements PartOfSpeech {
private final Type1EnglishTag type1Tag = Type1EnglishTag.TO; // SIMPLIFICATION
private final Type2EnglishTag type2Tag = Type2EnglishTag.GENERAL_PREPOSITION; // SIMPLIFICATION
boolean isInfinitiveMarker() {
return type1Tag == Type1EnglishTag.TO && type2Tag == Type2EnglishTag.INFINITIVE_MARKER;
}
}
enum Type1EnglishTag {
// SIMPLIFICATION (partial content)
TO // "to" as a preposition or an infinitive marker
}
enum Type2EnglishTag {
// SIMPLIFICATION (partial content)
GENERAL_PREPOSITION, // e.g. "to" in "I said to him that..."
INFINITIVE_MARKER // "to", e.g. in "I want to ask."
}
//
// 1.A.II) GERMAN PART OF SPEECH
//
class GermanPartOfSpeech implements PartOfSpeech {
private final Type1GermanTag type1Tag = Type1GermanTag.POSTPOSITION; // SIMPLIFICATION
boolean isPostposition() {
return type1Tag == Type1GermanTag.POSTPOSITION;
}
}
enum Type1GermanTag {
// SIMPLIFICATION (partial content)
POSTPOSITION, // e.g. "zufolge"
}
/*
* 1.B) CONSTITUENT
* https://en.wikipedia.org/wiki/Phrase_structure_grammar
*/
interface ConstituentType {
}
enum EnglishConstituentType implements ConstituentType {
// SIMPLIFICATION (partial content)
VERB_PHRASE, // e.g. "is doing nice"
WH_WORD_NOUN_PHRASE // e.g. "whose daughter"
}
// enum GermanConstituentType missing as of yet
/*
* 1.C) DEPENDENCY
* https://en.wikipedia.org/wiki/Dependency_grammar
*/
interface DependencyType {
}
enum EnglishDependencyType implements DependencyType {
// SIMPLIFICATION (partial content)
NOMINAL_SUBJECT, // e.g. "he" <- "walks" in "He walks."
PHRASAL_VERB_PARTICLE // e.g. "shut" -> "down" in "It was shut down."
}
// enum GermanDependencyType missing as of yet
/* ***************
* 2) HELPER TYPES
*****************/
interface TextualRange {
String text();
int startOffset(); // inclusive
int endOffset(); // exclusive
}
interface Seq {
/**
* Stub for <a href="https://www.jooq.org/products/jOOλ/javadoc/0.9.12/org/jooq/lambda/Seq.html#ofType-java.util.stream.Stream-java.lang.Class-">Seq.ofType()</a>.
*/
@SuppressWarnings("unchecked")
static <T, U> Stream<U> ofType(Stream<? extends T> stream, Class<? extends U> type) {
return stream.filter(type::isInstance).map(t -> (U) t);
}
}
/**
* Defines the stage of text processing (AXIS Y).
*/
enum Stage {
UNPROCESSED,
TOKENIZED, // tokens present
SENTENCIZED, // sentences present
TAGGED, // parts of speech present
PARSED // syntax present
}
/* ***************************
* 3) SOLUTION USING SUBTYPING
*****************************/
/*
* 3.A) GENERIC HIERARCHY (AXIS Y OVER X)
*/
//
// 3.A.I) UNPROCESSED
//
interface LocalizedText extends TextualRange {
Locale locale();
default Stage maxStage() {
return Stage.UNPROCESSED;
}
}
//
// 3.A.II) WITH TOKENS
//
enum TokenType {
WORD, NUMERIC // SIMPLIFICATION
}
interface Token extends TextualRange {
TokenType tokenType();
}
interface TokenizedText extends LocalizedText {
Stream<? extends Token> tokenStream();
int tokenCount();
@Override
default Stage maxStage() {
return Stage.TOKENIZED;
}
}
//
// 3.A.III) WITH SENTENCES
//
interface Sentence extends TextualRange {
List<? extends Token> tokens();
default Stage stage() {
return Stage.SENTENCIZED;
}
}
interface SentencizedText extends TokenizedText {
List<? extends Sentence> sentences();
@Override
default Stage maxStage() {
return Stage.SENTENCIZED;
}
}
//
// 3.A.IV) WITH PARTS OF SPEECH
//
interface TaggedToken<P extends PartOfSpeech> extends Token {
P partOfSpeech(); // see section 1.A above
}
interface TaggedSentence<P extends PartOfSpeech> extends Sentence {
@Override
List<? extends TaggedToken<P>> tokens();
@Override
default Stage stage() {
return Stage.TAGGED;
}
}
interface TaggedText<P extends PartOfSpeech> extends SentencizedText {
// some (or even all) sentences may remain untagged
Stream<? extends TaggedSentence<P>> taggedSentenceStream();
@Override
default Stage maxStage() {
return Stage.TAGGED;
}
}
//
// 3.A.V) WITH SYNTAX
//
interface Constituent<C extends ConstituentType, P extends PartOfSpeech> {
Stream<? extends Constituent<C, P>> childStream();
}
interface ConstituentBranch<C extends ConstituentType, P extends PartOfSpeech> extends Constituent<C, P> {
C type(); // see section 1.B above
}
interface ConstituentLeaf<C extends ConstituentType, P extends PartOfSpeech> extends Constituent<C, P> {
TaggedToken<P> token();
@Override
default Stream<? extends Constituent<C, P>> childStream() {
return Stream.empty();
}
}
interface Dependency<D extends DependencyType, P extends PartOfSpeech> {
D type(); // see section 1.C above
TaggedToken<P> governor();
TaggedToken<P> dependent();
}
interface SentenceSyntax<C extends ConstituentType, D extends DependencyType, P extends PartOfSpeech> {
ConstituentBranch<C, P> constituentTree();
List<? extends Dependency<D, P>> dependencies();
}
interface ParsedSentence<C extends ConstituentType, D extends DependencyType, P extends PartOfSpeech> extends TaggedSentence<P> {
SentenceSyntax<C, D, P> syntax();
@Override
default Stage stage() {
return Stage.PARSED;
}
}
interface ParsedText<C extends ConstituentType, D extends DependencyType, P extends PartOfSpeech> extends TaggedText<P> {
// some (or even all) sentences may remain unparsed
Stream<? extends ParsedSentence<C, D, P>> parsedSentenceStream();
@Override
default Stage maxStage() {
return Stage.PARSED;
}
}
/* ***********************
* 4) PRODUCERS OF THE API
*************************/
interface TextProcessingRequest { // SIMPLIFICATION
Locale locale();
String text();
Stage targetStage();
}
interface TextProcessor {
LocalizedText processText(TextProcessingRequest request);
}
/* ***********************
* 5) CONSUMERS OF THE API
*************************/
/*
* 5.A) DIRECT CONSUMERS
*/
class GermanPostpositionChecker {
void checkTaggedText(TaggedText<GermanPartOfSpeech> text) {
text.taggedSentenceStream().forEach(this::checkTaggedSentence);
}
private void checkTaggedSentence(TaggedSentence<GermanPartOfSpeech> sentence) {
sentence.tokens().stream()
.filter(this::isPostposition)
.forEach(this::checkPostposition);
}
private boolean isPostposition(TaggedToken<GermanPartOfSpeech> token) {
return token.partOfSpeech().isPostposition();
}
private void checkPostposition(TaggedToken<GermanPartOfSpeech> token) {
// logic
}
}
class EnglishNominalSubjectChecker {
void checkNominalSubjects(ParsedText<?, EnglishDependencyType, EnglishPartOfSpeech> text) {
text.parsedSentenceStream().forEach(this::checkNominalSubjects);
}
private void checkNominalSubjects(ParsedSentence<?, EnglishDependencyType, EnglishPartOfSpeech> sentence) {
sentence.syntax().dependencies().stream()
.filter(this::isCertainTypeOfNominalSubjectDependency)
.forEach(this::checkNominalSubject);
}
private boolean isCertainTypeOfNominalSubjectDependency(Dependency<EnglishDependencyType, EnglishPartOfSpeech> dependency) {
return dependency.type() == EnglishDependencyType.NOMINAL_SUBJECT && true; // SIMPLIFICATION
}
private void checkNominalSubject(Dependency<EnglishDependencyType, EnglishPartOfSpeech> dependency) {
checkNominalGovernor(dependency.governor());
checkNominalDependent(dependency.dependent());
}
private void checkNominalGovernor(TaggedToken<EnglishPartOfSpeech> governor) {
if (checkGovernorPartOfSpeech(governor.partOfSpeech())) {
// logic
}
}
private void checkNominalDependent(TaggedToken<EnglishPartOfSpeech> dependent) {
if (checkDependentPartOfSpeech(dependent.partOfSpeech())) {
// logic
}
}
private boolean checkGovernorPartOfSpeech(EnglishPartOfSpeech partOfSpeech) {
return true; // SIMPLIFICATION
}
private boolean checkDependentPartOfSpeech(EnglishPartOfSpeech partOfSpeech) {
return true; // SIMPLIFICATION
}
}
class EnglishRelevantConstituentHandler {
void handleRelevantConstituents(ParsedText<EnglishConstituentType, ?, EnglishPartOfSpeech> text) {
text.parsedSentenceStream().forEach(this::handleRelevantConstiuents);
}
private void handleRelevantConstiuents(ParsedSentence<EnglishConstituentType, ?, EnglishPartOfSpeech> sentence) {
Constituents.flatConstituentStream(sentence.syntax().constituentTree())
.filter(this::isRelevantConstituent)
.forEach(this::handleRelevantConstituent);
}
private boolean isRelevantConstituent(Constituent<EnglishConstituentType, EnglishPartOfSpeech> constituent) {
return true; // SIMPLIFICATION
}
private void handleRelevantConstituent(Constituent<EnglishConstituentType, EnglishPartOfSpeech> constituent) {
// logic
}
}
class Constituents {
/**
* Returns the constituent and all its descendants as a flattended Stream.
*/
static <C extends ConstituentType, P extends PartOfSpeech> Stream<Constituent<C, P>> flatConstituentStream(Constituent<C, P> constituent) {
return Stream.concat(
Stream.of(constituent),
constituent.childStream().flatMap(Constituents::flatConstituentStream)
);
}
}
/*
* 5.B) INDIRECT CONSUMERS
*/
interface ProcessedTextConsumer { // SIMPLIFICATION
Locale supportedLocale();
Stage requiredStage();
void consume(LocalizedText text);
}
class SampleUniversalTokenizedTextConsumer implements ProcessedTextConsumer {
@Override
public Locale supportedLocale() {
return Locale.ROOT;
}
@Override
public Stage requiredStage() {
return Stage.TOKENIZED;
}
@Override
public void consume(LocalizedText text) {
handleTokenizedText((TokenizedText) text);
}
private void handleTokenizedText(TokenizedText tokenizedText) {
// logic
}
}
class SampleGermanTaggedConsumer implements ProcessedTextConsumer {
@Override
public Locale supportedLocale() {
return Locale.GERMAN;
}
@Override
public Stage requiredStage() {
return Stage.TAGGED;
}
@Override
public void consume(LocalizedText text) {
// UNSAFE UNCHECKED CAST!
TaggedText<GermanPartOfSpeech> germanTaggedText = (TaggedText<GermanPartOfSpeech>) text;
new GermanPostpositionChecker().checkTaggedText(germanTaggedText);
}
}
class SampleEnglishParsedTextConsumer implements ProcessedTextConsumer {
@Override
public Locale supportedLocale() {
return Locale.ENGLISH;
}
@Override
public Stage requiredStage() {
return Stage.PARSED;
}
@Override
public void consume(LocalizedText text) {
// UNSAFE UNCHECKED CAST!
ParsedText<?, EnglishDependencyType, EnglishPartOfSpeech> englishParsedText
= (ParsedText<?, EnglishDependencyType, EnglishPartOfSpeech>) text;
new EnglishNominalSubjectChecker().checkNominalSubjects(englishParsedText);
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>File Compare</title>
<style type="text/css">
#page {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}
td {
white-space: nowrap;
font-family: monospace;
font-size: x-small;
vertical-align: top;
}
td.fileName {
background: #E6E6E6;
font-family: sans-serif;
font-size: small;
}
td.lineNumber {
text-align: right;
background: #FFC800;
}
td.added {
background: #BEF0BE;
}
td.removed {
background: #C8C8FF;
}
td.changed {
background: #FFC8C8;
}
td.equal {
background: #FFFFFF;
}
td.empty {
background: #F2F2F2;
}
</style>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<table>
<tr>
<td colspan="2" class="filename">Parametrization-for-Z-Axis-Solution.java</td>
<td colspan="2" class="filename">Subtyping-for-Z-Axis-Solution.java</td>
</tr>
<tr>
<td class="lineNumber">1</td><td class="equal">import&nbsp;java.util.List;</td><td class="lineNumber">1</td><td class="equal">import&nbsp;java.util.List;</td>
</tr>
<tr>
<td class="lineNumber">2</td><td class="equal">import&nbsp;java.util.Locale;</td><td class="lineNumber">2</td><td class="equal">import&nbsp;java.util.Locale;</td>
</tr>
<tr>
<td class="lineNumber">3</td><td class="equal">import&nbsp;java.util.stream.Stream;</td><td class="lineNumber">3</td><td class="equal">import&nbsp;java.util.stream.Stream;</td>
</tr>
<tr>
<td class="lineNumber">4</td><td class="equal"></td><td class="lineNumber">4</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">5</td><td class="equal">/*&nbsp;****************************************</td><td class="lineNumber">5</td><td class="equal">/*&nbsp;****************************************</td>
</tr>
<tr>
<td class="lineNumber">6</td><td class="equal">&nbsp;*&nbsp;1)&nbsp;CORE&nbsp;LANGUAGE-SPECIFIC&nbsp;TYPES&nbsp;(AXIS&nbsp;Z)</td><td class="lineNumber">6</td><td class="equal">&nbsp;*&nbsp;1)&nbsp;CORE&nbsp;LANGUAGE-SPECIFIC&nbsp;TYPES&nbsp;(AXIS&nbsp;Z)</td>
</tr>
<tr>
<td class="lineNumber">7</td><td class="equal">&nbsp;******************************************/</td><td class="lineNumber">7</td><td class="equal">&nbsp;******************************************/</td>
</tr>
<tr>
<td class="lineNumber">8</td><td class="equal"></td><td class="lineNumber">8</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">9</td><td class="equal">/*</td><td class="lineNumber">9</td><td class="equal">/*</td>
</tr>
<tr>
<td class="lineNumber">10</td><td class="equal">&nbsp;*&nbsp;1.A)&nbsp;PART&nbsp;OF&nbsp;SPEECH</td><td class="lineNumber">10</td><td class="equal">&nbsp;*&nbsp;1.A)&nbsp;PART&nbsp;OF&nbsp;SPEECH</td>
</tr>
<tr>
<td class="lineNumber">11</td><td class="equal">&nbsp;*&nbsp;https://en.wikipedia.org/wiki/Part_of_speech</td><td class="lineNumber">11</td><td class="equal">&nbsp;*&nbsp;https://en.wikipedia.org/wiki/Part_of_speech</td>
</tr>
<tr>
<td class="lineNumber">12</td><td class="equal">&nbsp;*/</td><td class="lineNumber">12</td><td class="equal">&nbsp;*/</td>
</tr>
<tr>
<td class="lineNumber">13</td><td class="equal"></td><td class="lineNumber">13</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">14</td><td class="equal">//</td><td class="lineNumber">14</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">15</td><td class="equal">//&nbsp;1.A.I)&nbsp;ENGLISH&nbsp;PART&nbsp;OF&nbsp;SPEECH</td><td class="lineNumber">15</td><td class="equal">//&nbsp;1.A.I)&nbsp;ENGLISH&nbsp;PART&nbsp;OF&nbsp;SPEECH</td>
</tr>
<tr>
<td class="lineNumber">16</td><td class="equal">//</td><td class="lineNumber">16</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">17</td><td class="equal"></td><td class="lineNumber">17</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">18</td><td class="equal">/**</td><td class="lineNumber">18</td><td class="equal">/**</td>
</tr>
<tr>
<td class="lineNumber">19</td><td class="equal">&nbsp;*&nbsp;Implementing&nbsp;classes&nbsp;consist&nbsp;of&nbsp;one&nbsp;or&nbsp;more&nbsp;part-of-speech&nbsp;tags&nbsp;(each&nbsp;tag&nbsp;provided&nbsp;by&nbsp;a&nbsp;different&nbsp;tagger).</td><td class="lineNumber">19</td><td class="equal">&nbsp;*&nbsp;Implementing&nbsp;classes&nbsp;consist&nbsp;of&nbsp;one&nbsp;or&nbsp;more&nbsp;part-of-speech&nbsp;tags&nbsp;(each&nbsp;tag&nbsp;provided&nbsp;by&nbsp;a&nbsp;different&nbsp;tagger).</td>
</tr>
<tr>
<td class="lineNumber">20</td><td class="equal">&nbsp;*/</td><td class="lineNumber">20</td><td class="equal">&nbsp;*/</td>
</tr>
<tr>
<td class="lineNumber">21</td><td class="equal">interface&nbsp;PartOfSpeech&nbsp;{</td><td class="lineNumber">21</td><td class="equal">interface&nbsp;PartOfSpeech&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">22</td><td class="equal">}</td><td class="lineNumber">22</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">23</td><td class="equal"></td><td class="lineNumber">23</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">24</td><td class="equal">class&nbsp;EnglishPartOfSpeech&nbsp;implements&nbsp;PartOfSpeech&nbsp;{</td><td class="lineNumber">24</td><td class="equal">class&nbsp;EnglishPartOfSpeech&nbsp;implements&nbsp;PartOfSpeech&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">25</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Type1EnglishTag&nbsp;type1Tag&nbsp;=&nbsp;Type1EnglishTag.TO;&nbsp;//&nbsp;SIMPLIFICATION</td><td class="lineNumber">25</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Type1EnglishTag&nbsp;type1Tag&nbsp;=&nbsp;Type1EnglishTag.TO;&nbsp;//&nbsp;SIMPLIFICATION</td>
</tr>
<tr>
<td class="lineNumber">26</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Type2EnglishTag&nbsp;type2Tag&nbsp;=&nbsp;Type2EnglishTag.GENERAL_PREPOSITION;&nbsp;//&nbsp;SIMPLIFICATION</td><td class="lineNumber">26</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Type2EnglishTag&nbsp;type2Tag&nbsp;=&nbsp;Type2EnglishTag.GENERAL_PREPOSITION;&nbsp;//&nbsp;SIMPLIFICATION</td>
</tr>
<tr>
<td class="lineNumber">27</td><td class="equal"></td><td class="lineNumber">27</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">28</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isInfinitiveMarker()&nbsp;{</td><td class="lineNumber">28</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isInfinitiveMarker()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">29</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;type1Tag&nbsp;==&nbsp;Type1EnglishTag.TO&nbsp;&amp;&amp;&nbsp;type2Tag&nbsp;==&nbsp;Type2EnglishTag.INFINITIVE_MARKER;</td><td class="lineNumber">29</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;type1Tag&nbsp;==&nbsp;Type1EnglishTag.TO&nbsp;&amp;&amp;&nbsp;type2Tag&nbsp;==&nbsp;Type2EnglishTag.INFINITIVE_MARKER;</td>
</tr>
<tr>
<td class="lineNumber">30</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">30</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">31</td><td class="equal">}</td><td class="lineNumber">31</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">32</td><td class="equal"></td><td class="lineNumber">32</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">33</td><td class="equal">enum&nbsp;Type1EnglishTag&nbsp;{</td><td class="lineNumber">33</td><td class="equal">enum&nbsp;Type1EnglishTag&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">34</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td><td class="lineNumber">34</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td>
</tr>
<tr>
<td class="lineNumber">35</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;TO&nbsp;//&nbsp;&quot;to&quot;&nbsp;as&nbsp;a&nbsp;preposition&nbsp;or&nbsp;an&nbsp;infinitive&nbsp;marker</td><td class="lineNumber">35</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;TO&nbsp;//&nbsp;&quot;to&quot;&nbsp;as&nbsp;a&nbsp;preposition&nbsp;or&nbsp;an&nbsp;infinitive&nbsp;marker</td>
</tr>
<tr>
<td class="lineNumber">36</td><td class="equal">}</td><td class="lineNumber">36</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">37</td><td class="equal"></td><td class="lineNumber">37</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">38</td><td class="equal">enum&nbsp;Type2EnglishTag&nbsp;{</td><td class="lineNumber">38</td><td class="equal">enum&nbsp;Type2EnglishTag&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">39</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td><td class="lineNumber">39</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td>
</tr>
<tr>
<td class="lineNumber">40</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;GENERAL_PREPOSITION,&nbsp;//&nbsp;e.g.&nbsp;&quot;to&quot;&nbsp;in&nbsp;&quot;I&nbsp;said&nbsp;to&nbsp;him&nbsp;that...&quot;</td><td class="lineNumber">40</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;GENERAL_PREPOSITION,&nbsp;//&nbsp;e.g.&nbsp;&quot;to&quot;&nbsp;in&nbsp;&quot;I&nbsp;said&nbsp;to&nbsp;him&nbsp;that...&quot;</td>
</tr>
<tr>
<td class="lineNumber">41</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;INFINITIVE_MARKER&nbsp;//&nbsp;&quot;to&quot;,&nbsp;e.g.&nbsp;in&nbsp;&quot;I&nbsp;want&nbsp;to&nbsp;ask.&quot;</td><td class="lineNumber">41</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;INFINITIVE_MARKER&nbsp;//&nbsp;&quot;to&quot;,&nbsp;e.g.&nbsp;in&nbsp;&quot;I&nbsp;want&nbsp;to&nbsp;ask.&quot;</td>
</tr>
<tr>
<td class="lineNumber">42</td><td class="equal">}</td><td class="lineNumber">42</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">43</td><td class="equal"></td><td class="lineNumber">43</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">44</td><td class="equal">//</td><td class="lineNumber">44</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">45</td><td class="equal">//&nbsp;1.A.II)&nbsp;GERMAN&nbsp;PART&nbsp;OF&nbsp;SPEECH</td><td class="lineNumber">45</td><td class="equal">//&nbsp;1.A.II)&nbsp;GERMAN&nbsp;PART&nbsp;OF&nbsp;SPEECH</td>
</tr>
<tr>
<td class="lineNumber">46</td><td class="equal">//</td><td class="lineNumber">46</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">47</td><td class="equal"></td><td class="lineNumber">47</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">48</td><td class="equal">class&nbsp;GermanPartOfSpeech&nbsp;implements&nbsp;PartOfSpeech&nbsp;{</td><td class="lineNumber">48</td><td class="equal">class&nbsp;GermanPartOfSpeech&nbsp;implements&nbsp;PartOfSpeech&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">49</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Type1GermanTag&nbsp;type1Tag&nbsp;=&nbsp;Type1GermanTag.POSTPOSITION;&nbsp;//&nbsp;SIMPLIFICATION</td><td class="lineNumber">49</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Type1GermanTag&nbsp;type1Tag&nbsp;=&nbsp;Type1GermanTag.POSTPOSITION;&nbsp;//&nbsp;SIMPLIFICATION</td>
</tr>
<tr>
<td class="lineNumber">50</td><td class="equal"></td><td class="lineNumber">50</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">51</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isPostposition()&nbsp;{</td><td class="lineNumber">51</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isPostposition()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">52</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;type1Tag&nbsp;==&nbsp;Type1GermanTag.POSTPOSITION;</td><td class="lineNumber">52</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;type1Tag&nbsp;==&nbsp;Type1GermanTag.POSTPOSITION;</td>
</tr>
<tr>
<td class="lineNumber">53</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">53</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">54</td><td class="equal">}</td><td class="lineNumber">54</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">55</td><td class="equal"></td><td class="lineNumber">55</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">56</td><td class="equal">enum&nbsp;Type1GermanTag&nbsp;{</td><td class="lineNumber">56</td><td class="equal">enum&nbsp;Type1GermanTag&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">57</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td><td class="lineNumber">57</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td>
</tr>
<tr>
<td class="lineNumber">58</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;POSTPOSITION,&nbsp;//&nbsp;e.g.&nbsp;&quot;zufolge&quot;</td><td class="lineNumber">58</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;POSTPOSITION,&nbsp;//&nbsp;e.g.&nbsp;&quot;zufolge&quot;</td>
</tr>
<tr>
<td class="lineNumber">59</td><td class="equal">}</td><td class="lineNumber">59</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">60</td><td class="equal"></td><td class="lineNumber">60</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">61</td><td class="equal">/*</td><td class="lineNumber">61</td><td class="equal">/*</td>
</tr>
<tr>
<td class="lineNumber">62</td><td class="equal">&nbsp;*&nbsp;1.B)&nbsp;CONSTITUENT</td><td class="lineNumber">62</td><td class="equal">&nbsp;*&nbsp;1.B)&nbsp;CONSTITUENT</td>
</tr>
<tr>
<td class="lineNumber">63</td><td class="equal">&nbsp;*&nbsp;https://en.wikipedia.org/wiki/Phrase_structure_grammar</td><td class="lineNumber">63</td><td class="equal">&nbsp;*&nbsp;https://en.wikipedia.org/wiki/Phrase_structure_grammar</td>
</tr>
<tr>
<td class="lineNumber">64</td><td class="equal">&nbsp;*/</td><td class="lineNumber">64</td><td class="equal">&nbsp;*/</td>
</tr>
<tr>
<td class="lineNumber">65</td><td class="equal">interface&nbsp;ConstituentType&nbsp;{</td><td class="lineNumber">65</td><td class="equal">interface&nbsp;ConstituentType&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">66</td><td class="equal">}</td><td class="lineNumber">66</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">67</td><td class="equal"></td><td class="lineNumber">67</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">68</td><td class="equal">enum&nbsp;EnglishConstituentType&nbsp;implements&nbsp;ConstituentType&nbsp;{</td><td class="lineNumber">68</td><td class="equal">enum&nbsp;EnglishConstituentType&nbsp;implements&nbsp;ConstituentType&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">69</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td><td class="lineNumber">69</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td>
</tr>
<tr>
<td class="lineNumber">70</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;VERB_PHRASE,&nbsp;//&nbsp;e.g.&nbsp;&quot;is&nbsp;doing&nbsp;nice&quot;</td><td class="lineNumber">70</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;VERB_PHRASE,&nbsp;//&nbsp;e.g.&nbsp;&quot;is&nbsp;doing&nbsp;nice&quot;</td>
</tr>
<tr>
<td class="lineNumber">71</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;WH_WORD_NOUN_PHRASE&nbsp;//&nbsp;e.g.&nbsp;&quot;whose&nbsp;daughter&quot;</td><td class="lineNumber">71</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;WH_WORD_NOUN_PHRASE&nbsp;//&nbsp;e.g.&nbsp;&quot;whose&nbsp;daughter&quot;</td>
</tr>
<tr>
<td class="lineNumber">72</td><td class="equal">}</td><td class="lineNumber">72</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">73</td><td class="equal"></td><td class="lineNumber">73</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">74</td><td class="equal">//&nbsp;enum&nbsp;GermanConstituentType&nbsp;missing&nbsp;as&nbsp;of&nbsp;yet</td><td class="lineNumber">74</td><td class="equal">//&nbsp;enum&nbsp;GermanConstituentType&nbsp;missing&nbsp;as&nbsp;of&nbsp;yet</td>
</tr>
<tr>
<td class="lineNumber">75</td><td class="equal"></td><td class="lineNumber">75</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">76</td><td class="equal">/*</td><td class="lineNumber">76</td><td class="equal">/*</td>
</tr>
<tr>
<td class="lineNumber">77</td><td class="equal">&nbsp;*&nbsp;1.C)&nbsp;DEPENDENCY</td><td class="lineNumber">77</td><td class="equal">&nbsp;*&nbsp;1.C)&nbsp;DEPENDENCY</td>
</tr>
<tr>
<td class="lineNumber">78</td><td class="equal">&nbsp;*&nbsp;https://en.wikipedia.org/wiki/Dependency_grammar</td><td class="lineNumber">78</td><td class="equal">&nbsp;*&nbsp;https://en.wikipedia.org/wiki/Dependency_grammar</td>
</tr>
<tr>
<td class="lineNumber">79</td><td class="equal">&nbsp;*/</td><td class="lineNumber">79</td><td class="equal">&nbsp;*/</td>
</tr>
<tr>
<td class="lineNumber">80</td><td class="equal">interface&nbsp;DependencyType&nbsp;{</td><td class="lineNumber">80</td><td class="equal">interface&nbsp;DependencyType&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">81</td><td class="equal">}</td><td class="lineNumber">81</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">82</td><td class="equal"></td><td class="lineNumber">82</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">83</td><td class="equal">enum&nbsp;EnglishDependencyType&nbsp;implements&nbsp;DependencyType&nbsp;{</td><td class="lineNumber">83</td><td class="equal">enum&nbsp;EnglishDependencyType&nbsp;implements&nbsp;DependencyType&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">84</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td><td class="lineNumber">84</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SIMPLIFICATION&nbsp;(partial&nbsp;content)</td>
</tr>
<tr>
<td class="lineNumber">85</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;NOMINAL_SUBJECT,&nbsp;//&nbsp;e.g.&nbsp;&quot;he&quot;&nbsp;&lt;-&nbsp;&quot;walks&quot;&nbsp;in&nbsp;&quot;He&nbsp;walks.&quot;</td><td class="lineNumber">85</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;NOMINAL_SUBJECT,&nbsp;//&nbsp;e.g.&nbsp;&quot;he&quot;&nbsp;&lt;-&nbsp;&quot;walks&quot;&nbsp;in&nbsp;&quot;He&nbsp;walks.&quot;</td>
</tr>
<tr>
<td class="lineNumber">86</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;PHRASAL_VERB_PARTICLE&nbsp;//&nbsp;e.g.&nbsp;&quot;shut&quot;&nbsp;-&gt;&nbsp;&quot;down&quot;&nbsp;in&nbsp;&quot;It&nbsp;was&nbsp;shut&nbsp;down.&quot;</td><td class="lineNumber">86</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;PHRASAL_VERB_PARTICLE&nbsp;//&nbsp;e.g.&nbsp;&quot;shut&quot;&nbsp;-&gt;&nbsp;&quot;down&quot;&nbsp;in&nbsp;&quot;It&nbsp;was&nbsp;shut&nbsp;down.&quot;</td>
</tr>
<tr>
<td class="lineNumber">87</td><td class="equal">}</td><td class="lineNumber">87</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">88</td><td class="equal"></td><td class="lineNumber">88</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">89</td><td class="equal">//&nbsp;enum&nbsp;GermanDependencyType&nbsp;missing&nbsp;as&nbsp;of&nbsp;yet</td><td class="lineNumber">89</td><td class="equal">//&nbsp;enum&nbsp;GermanDependencyType&nbsp;missing&nbsp;as&nbsp;of&nbsp;yet</td>
</tr>
<tr>
<td class="lineNumber">90</td><td class="equal"></td><td class="lineNumber">90</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">91</td><td class="equal">/*&nbsp;***************</td><td class="lineNumber">91</td><td class="equal">/*&nbsp;***************</td>
</tr>
<tr>
<td class="lineNumber">92</td><td class="equal">&nbsp;*&nbsp;2)&nbsp;HELPER&nbsp;TYPES</td><td class="lineNumber">92</td><td class="equal">&nbsp;*&nbsp;2)&nbsp;HELPER&nbsp;TYPES</td>
</tr>
<tr>
<td class="lineNumber">93</td><td class="equal">&nbsp;*****************/</td><td class="lineNumber">93</td><td class="equal">&nbsp;*****************/</td>
</tr>
<tr>
<td class="lineNumber">94</td><td class="equal">interface&nbsp;TextualRange&nbsp;{</td><td class="lineNumber">94</td><td class="equal">interface&nbsp;TextualRange&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">95</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;text();</td><td class="lineNumber">95</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;text();</td>
</tr>
<tr>
<td class="lineNumber">96</td><td class="equal"></td><td class="lineNumber">96</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">97</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;startOffset();&nbsp;//&nbsp;inclusive</td><td class="lineNumber">97</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;startOffset();&nbsp;//&nbsp;inclusive</td>
</tr>
<tr>
<td class="lineNumber">98</td><td class="equal"></td><td class="lineNumber">98</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">99</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;endOffset();&nbsp;//&nbsp;exclusive</td><td class="lineNumber">99</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;endOffset();&nbsp;//&nbsp;exclusive</td>
</tr>
<tr>
<td class="lineNumber">100</td><td class="equal">}</td><td class="lineNumber">100</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">101</td><td class="equal"></td><td class="lineNumber">101</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">102</td><td class="equal">interface&nbsp;Seq&nbsp;{</td><td class="lineNumber">102</td><td class="equal">interface&nbsp;Seq&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">103</td><td class="equal"></td><td class="lineNumber">103</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">104</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;/**</td><td class="lineNumber">104</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;/**</td>
</tr>
<tr>
<td class="lineNumber">105</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Stub&nbsp;for&nbsp;&lt;a&nbsp;href=&quot;https://www.jooq.org/products/jOO&#955;/javadoc/0.9.12/org/jooq/lambda/Seq.html#ofType-java.util.str<br>eam.Stream-java.lang.Class-&quot;&gt;Seq.ofType()&lt;/a&gt;.</td><td class="lineNumber">105</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Stub&nbsp;for&nbsp;&lt;a&nbsp;href=&quot;https://www.jooq.org/products/jOO&#955;/javadoc/0.9.12/org/jooq/lambda/Seq.html#ofType-java.util.str<br>eam.Stream-java.lang.Class-&quot;&gt;Seq.ofType()&lt;/a&gt;.</td>
</tr>
<tr>
<td class="lineNumber">106</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</td><td class="lineNumber">106</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</td>
</tr>
<tr>
<td class="lineNumber">107</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(&quot;unchecked&quot;)</td><td class="lineNumber">107</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(&quot;unchecked&quot;)</td>
</tr>
<tr>
<td class="lineNumber">108</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;&lt;T,&nbsp;U&gt;&nbsp;Stream&lt;U&gt;&nbsp;ofType(Stream&lt;?&nbsp;extends&nbsp;T&gt;&nbsp;stream,&nbsp;Class&lt;?&nbsp;extends&nbsp;U&gt;&nbsp;type)&nbsp;{</td><td class="lineNumber">108</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;&lt;T,&nbsp;U&gt;&nbsp;Stream&lt;U&gt;&nbsp;ofType(Stream&lt;?&nbsp;extends&nbsp;T&gt;&nbsp;stream,&nbsp;Class&lt;?&nbsp;extends&nbsp;U&gt;&nbsp;type)&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">109</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;stream.filter(type::isInstance).map(t&nbsp;-&gt;&nbsp;(U)&nbsp;t);</td><td class="lineNumber">109</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;stream.filter(type::isInstance).map(t&nbsp;-&gt;&nbsp;(U)&nbsp;t);</td>
</tr>
<tr>
<td class="lineNumber">110</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">110</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">111</td><td class="equal">}</td><td class="lineNumber">111</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">112</td><td class="equal"></td><td class="lineNumber">112</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">113</td><td class="equal">/**</td><td class="lineNumber">113</td><td class="equal">/**</td>
</tr>
<tr>
<td class="lineNumber">114</td><td class="equal">&nbsp;*&nbsp;Defines&nbsp;the&nbsp;stage&nbsp;of&nbsp;text&nbsp;processing&nbsp;(AXIS&nbsp;Y).</td><td class="lineNumber">114</td><td class="equal">&nbsp;*&nbsp;Defines&nbsp;the&nbsp;stage&nbsp;of&nbsp;text&nbsp;processing&nbsp;(AXIS&nbsp;Y).</td>
</tr>
<tr>
<td class="lineNumber">115</td><td class="equal">&nbsp;*/</td><td class="lineNumber">115</td><td class="equal">&nbsp;*/</td>
</tr>
<tr>
<td class="lineNumber">116</td><td class="equal">enum&nbsp;Stage&nbsp;{</td><td class="lineNumber">116</td><td class="equal">enum&nbsp;Stage&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">117</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;UNPROCESSED,</td><td class="lineNumber">117</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;UNPROCESSED,</td>
</tr>
<tr>
<td class="lineNumber">118</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;TOKENIZED,&nbsp;//&nbsp;tokens&nbsp;present</td><td class="lineNumber">118</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;TOKENIZED,&nbsp;//&nbsp;tokens&nbsp;present</td>
</tr>
<tr>
<td class="lineNumber">119</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;SENTENCIZED,&nbsp;//&nbsp;sentences&nbsp;present</td><td class="lineNumber">119</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;SENTENCIZED,&nbsp;//&nbsp;sentences&nbsp;present</td>
</tr>
<tr>
<td class="lineNumber">120</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;TAGGED,&nbsp;//&nbsp;parts&nbsp;of&nbsp;speech&nbsp;present</td><td class="lineNumber">120</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;TAGGED,&nbsp;//&nbsp;parts&nbsp;of&nbsp;speech&nbsp;present</td>
</tr>
<tr>
<td class="lineNumber">121</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;PARSED&nbsp;//&nbsp;syntax&nbsp;present</td><td class="lineNumber">121</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;PARSED&nbsp;//&nbsp;syntax&nbsp;present</td>
</tr>
<tr>
<td class="lineNumber">122</td><td class="equal">}</td><td class="lineNumber">122</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">123</td><td class="equal"></td><td class="lineNumber">123</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">124</td><td class="equal">/*&nbsp;***************************</td><td class="lineNumber">124</td><td class="equal">/*&nbsp;***************************</td>
</tr>
<tr>
<td class="lineNumber">125</td><td class="equal">&nbsp;*&nbsp;3)&nbsp;SOLUTION&nbsp;USING&nbsp;SUBTYPING</td><td class="lineNumber">125</td><td class="equal">&nbsp;*&nbsp;3)&nbsp;SOLUTION&nbsp;USING&nbsp;SUBTYPING</td>
</tr>
<tr>
<td class="lineNumber">126</td><td class="equal">&nbsp;*****************************/</td><td class="lineNumber">126</td><td class="equal">&nbsp;*****************************/</td>
</tr>
<tr>
<td class="lineNumber">127</td><td class="equal"></td><td class="lineNumber">127</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">128</td><td class="equal">/*</td><td class="lineNumber">128</td><td class="equal">/*</td>
</tr>
<tr>
<td class="lineNumber">129</td><td class="equal">&nbsp;*&nbsp;3.A)&nbsp;GENERIC&nbsp;HIERARCHY&nbsp;(AXIS&nbsp;Y&nbsp;OVER&nbsp;X)</td><td class="lineNumber">129</td><td class="equal">&nbsp;*&nbsp;3.A)&nbsp;GENERIC&nbsp;HIERARCHY&nbsp;(AXIS&nbsp;Y&nbsp;OVER&nbsp;X)</td>
</tr>
<tr>
<td class="lineNumber">130</td><td class="equal">&nbsp;*/</td><td class="lineNumber">130</td><td class="equal">&nbsp;*/</td>
</tr>
<tr>
<td class="lineNumber">131</td><td class="equal"></td><td class="lineNumber">131</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">132</td><td class="equal">//</td><td class="lineNumber">132</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">133</td><td class="equal">//&nbsp;3.A.I)&nbsp;UNPROCESSED</td><td class="lineNumber">133</td><td class="equal">//&nbsp;3.A.I)&nbsp;UNPROCESSED</td>
</tr>
<tr>
<td class="lineNumber">134</td><td class="equal">//</td><td class="lineNumber">134</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">135</td><td class="equal">interface&nbsp;LocalizedText&nbsp;extends&nbsp;TextualRange&nbsp;{</td><td class="lineNumber">135</td><td class="equal">interface&nbsp;LocalizedText&nbsp;extends&nbsp;TextualRange&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">136</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;Locale&nbsp;locale();</td><td class="lineNumber">136</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;Locale&nbsp;locale();</td>
</tr>
<tr>
<td class="lineNumber">137</td><td class="equal"></td><td class="lineNumber">137</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">138</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td><td class="lineNumber">138</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">139</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.UNPROCESSED;</td><td class="lineNumber">139</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.UNPROCESSED;</td>
</tr>
<tr>
<td class="lineNumber">140</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">140</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">141</td><td class="equal">}</td><td class="lineNumber">141</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">142</td><td class="equal"></td><td class="lineNumber">142</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">143</td><td class="equal">//</td><td class="lineNumber">143</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">144</td><td class="equal">//&nbsp;3.A.II)&nbsp;WITH&nbsp;TOKENS</td><td class="lineNumber">144</td><td class="equal">//&nbsp;3.A.II)&nbsp;WITH&nbsp;TOKENS</td>
</tr>
<tr>
<td class="lineNumber">145</td><td class="equal">//</td><td class="lineNumber">145</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">146</td><td class="equal">enum&nbsp;TokenType&nbsp;{</td><td class="lineNumber">146</td><td class="equal">enum&nbsp;TokenType&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">147</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;WORD,&nbsp;NUMERIC&nbsp;//&nbsp;SIMPLIFICATION</td><td class="lineNumber">147</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;WORD,&nbsp;NUMERIC&nbsp;//&nbsp;SIMPLIFICATION</td>
</tr>
<tr>
<td class="lineNumber">148</td><td class="equal">}</td><td class="lineNumber">148</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">149</td><td class="equal"></td><td class="lineNumber">149</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">150</td><td class="equal">interface&nbsp;Token&nbsp;extends&nbsp;TextualRange&nbsp;{</td><td class="lineNumber">150</td><td class="equal">interface&nbsp;Token&nbsp;extends&nbsp;TextualRange&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">151</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;TokenType&nbsp;tokenType();</td><td class="lineNumber">151</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;TokenType&nbsp;tokenType();</td>
</tr>
<tr>
<td class="lineNumber">152</td><td class="equal">}</td><td class="lineNumber">152</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">153</td><td class="equal"></td><td class="lineNumber">153</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">154</td><td class="equal">interface&nbsp;TokenizedText&nbsp;extends&nbsp;LocalizedText&nbsp;{</td><td class="lineNumber">154</td><td class="equal">interface&nbsp;TokenizedText&nbsp;extends&nbsp;LocalizedText&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">155</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;Token&gt;&nbsp;tokenStream();</td><td class="lineNumber">155</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;Token&gt;&nbsp;tokenStream();</td>
</tr>
<tr>
<td class="lineNumber">156</td><td class="equal"></td><td class="lineNumber">156</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">157</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;tokenCount();</td><td class="lineNumber">157</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;tokenCount();</td>
</tr>
<tr>
<td class="lineNumber">158</td><td class="equal"></td><td class="lineNumber">158</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">159</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td><td class="lineNumber">159</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber">160</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td><td class="lineNumber">160</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">161</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.TOKENIZED;</td><td class="lineNumber">161</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.TOKENIZED;</td>
</tr>
<tr>
<td class="lineNumber">162</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">162</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">163</td><td class="equal">}</td><td class="lineNumber">163</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">164</td><td class="equal"></td><td class="lineNumber">164</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">165</td><td class="equal">//</td><td class="lineNumber">165</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">166</td><td class="equal">//&nbsp;3.A.III)&nbsp;WITH&nbsp;SENTENCES</td><td class="lineNumber">166</td><td class="equal">//&nbsp;3.A.III)&nbsp;WITH&nbsp;SENTENCES</td>
</tr>
<tr>
<td class="lineNumber">167</td><td class="equal">//</td><td class="lineNumber">167</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">168</td><td class="equal">interface&nbsp;Sentence&nbsp;extends&nbsp;TextualRange&nbsp;{</td><td class="lineNumber">168</td><td class="equal">interface&nbsp;Sentence&nbsp;extends&nbsp;TextualRange&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">169</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;Token&gt;&nbsp;tokens();</td><td class="lineNumber">169</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;Token&gt;&nbsp;tokens();</td>
</tr>
<tr>
<td class="lineNumber">170</td><td class="equal"></td><td class="lineNumber">170</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">171</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;stage()&nbsp;{</td><td class="lineNumber">171</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;stage()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">172</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.SENTENCIZED;</td><td class="lineNumber">172</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.SENTENCIZED;</td>
</tr>
<tr>
<td class="lineNumber">173</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">173</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">174</td><td class="equal">}</td><td class="lineNumber">174</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">175</td><td class="equal"></td><td class="lineNumber">175</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">176</td><td class="equal">interface&nbsp;SentencizedText&nbsp;extends&nbsp;TokenizedText&nbsp;{</td><td class="lineNumber">176</td><td class="equal">interface&nbsp;SentencizedText&nbsp;extends&nbsp;TokenizedText&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">177</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;Sentence&gt;&nbsp;sentences();</td><td class="lineNumber">177</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;Sentence&gt;&nbsp;sentences();</td>
</tr>
<tr>
<td class="lineNumber">178</td><td class="equal"></td><td class="lineNumber">178</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">179</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td><td class="lineNumber">179</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber">180</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td><td class="lineNumber">180</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">181</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.SENTENCIZED;</td><td class="lineNumber">181</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.SENTENCIZED;</td>
</tr>
<tr>
<td class="lineNumber">182</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">182</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">183</td><td class="equal">}</td><td class="lineNumber">183</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">184</td><td class="equal"></td><td class="lineNumber">184</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">185</td><td class="equal">//</td><td class="lineNumber">185</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">186</td><td class="equal">//&nbsp;3.A.IV)&nbsp;WITH&nbsp;PARTS&nbsp;OF&nbsp;SPEECH</td><td class="lineNumber">186</td><td class="equal">//&nbsp;3.A.IV)&nbsp;WITH&nbsp;PARTS&nbsp;OF&nbsp;SPEECH</td>
</tr>
<tr>
<td class="lineNumber">187</td><td class="equal">//</td><td class="lineNumber">187</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">188</td><td class="changed">interface&nbsp;TaggedToken&lt;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;extends&nbsp;Token&nbsp;{</td><td class="lineNumber">188</td><td class="changed">interface&nbsp;TaggedToken&nbsp;extends&nbsp;Token&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">189</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;P&nbsp;partOfSpeech();&nbsp;//&nbsp;see&nbsp;section&nbsp;1.A&nbsp;above</td><td class="lineNumber">189</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;PartOfSpeech&nbsp;partOfSpeech();&nbsp;//&nbsp;see&nbsp;section&nbsp;1.A&nbsp;above</td>
</tr>
<tr>
<td class="lineNumber">190</td><td class="equal">}</td><td class="lineNumber">190</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">191</td><td class="equal"></td><td class="lineNumber">191</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">192</td><td class="changed">interface&nbsp;TaggedSentence&lt;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;extends&nbsp;Sentence&nbsp;{</td><td class="lineNumber">192</td><td class="changed">interface&nbsp;TaggedSentence&nbsp;extends&nbsp;Sentence&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">193</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td><td class="lineNumber">193</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber">194</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;TaggedToken&lt;P&gt;&gt;&nbsp;tokens();</td><td class="lineNumber">194</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;TaggedToken&gt;&nbsp;tokens();</td>
</tr>
<tr>
<td class="lineNumber">195</td><td class="equal"></td><td class="lineNumber">195</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">196</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td><td class="lineNumber">196</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber">197</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;stage()&nbsp;{</td><td class="lineNumber">197</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;stage()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">198</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.TAGGED;</td><td class="lineNumber">198</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.TAGGED;</td>
</tr>
<tr>
<td class="lineNumber">199</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">199</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">200</td><td class="equal">}</td><td class="lineNumber">200</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">201</td><td class="equal"></td><td class="lineNumber">201</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">202</td><td class="changed">interface&nbsp;TaggedText&lt;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;extends&nbsp;SentencizedText&nbsp;{</td><td class="lineNumber">202</td><td class="changed">interface&nbsp;TaggedText&nbsp;extends&nbsp;SentencizedText&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">203</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;some&nbsp;(or&nbsp;even&nbsp;all)&nbsp;sentences&nbsp;may&nbsp;remain&nbsp;untagged</td><td class="lineNumber">203</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;some&nbsp;(or&nbsp;even&nbsp;all)&nbsp;sentences&nbsp;may&nbsp;remain&nbsp;untagged</td>
</tr>
<tr>
<td class="lineNumber">204</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;TaggedSentence&lt;P&gt;&gt;&nbsp;taggedSentenceStream();</td><td class="lineNumber">204</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;TaggedSentence&gt;&nbsp;taggedSentenceStream();</td>
</tr>
<tr>
<td class="lineNumber">205</td><td class="equal"></td><td class="lineNumber">205</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">206</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td><td class="lineNumber">206</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber">207</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td><td class="lineNumber">207</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">208</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.TAGGED;</td><td class="lineNumber">208</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.TAGGED;</td>
</tr>
<tr>
<td class="lineNumber">209</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">209</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">210</td><td class="equal">}</td><td class="lineNumber">210</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">211</td><td class="equal"></td><td class="lineNumber">211</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">212</td><td class="equal">//</td><td class="lineNumber">212</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">213</td><td class="equal">//&nbsp;3.A.V)&nbsp;WITH&nbsp;SYNTAX</td><td class="lineNumber">213</td><td class="equal">//&nbsp;3.A.V)&nbsp;WITH&nbsp;SYNTAX</td>
</tr>
<tr>
<td class="lineNumber">214</td><td class="equal">//</td><td class="lineNumber">214</td><td class="equal">//</td>
</tr>
<tr>
<td class="lineNumber">215</td><td class="changed">interface&nbsp;Constituent&lt;C&nbsp;extends&nbsp;ConstituentType,&nbsp;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;{</td><td class="lineNumber">215</td><td class="changed">interface&nbsp;Constituent&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">216</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;Constituent&lt;C,&nbsp;P&gt;&gt;&nbsp;childStream();</td><td class="lineNumber">216</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;Constituent&gt;&nbsp;childStream();</td>
</tr>
<tr>
<td class="lineNumber">217</td><td class="equal">}</td><td class="lineNumber">217</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">218</td><td class="equal"></td><td class="lineNumber">218</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">219</td><td class="changed">interface&nbsp;ConstituentBranch&lt;C&nbsp;extends&nbsp;ConstituentType,&nbsp;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;extends&nbsp;Constituent&lt;C,&nbsp;P&gt;&nbsp;{</td><td class="lineNumber">219</td><td class="changed">interface&nbsp;ConstituentBranch&nbsp;extends&nbsp;Constituent&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">220</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;type();&nbsp;//&nbsp;see&nbsp;section&nbsp;1.B&nbsp;above</td><td class="lineNumber">220</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;ConstituentType&nbsp;type();&nbsp;//&nbsp;see&nbsp;section&nbsp;1.B&nbsp;above</td>
</tr>
<tr>
<td class="lineNumber">221</td><td class="equal">}</td><td class="lineNumber">221</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">222</td><td class="equal"></td><td class="lineNumber">222</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">223</td><td class="changed">interface&nbsp;ConstituentLeaf&lt;C&nbsp;extends&nbsp;ConstituentType,&nbsp;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;extends&nbsp;Constituent&lt;C,&nbsp;P&gt;&nbsp;{</td><td class="lineNumber">223</td><td class="changed">interface&nbsp;ConstituentLeaf&nbsp;extends&nbsp;Constituent&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">224</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;TaggedToken&lt;P&gt;&nbsp;token();</td><td class="lineNumber">224</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;TaggedToken&nbsp;token();</td>
</tr>
<tr>
<td class="lineNumber">225</td><td class="equal"></td><td class="lineNumber">225</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">226</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td><td class="lineNumber">226</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber">227</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stream&lt;?&nbsp;extends&nbsp;Constituent&lt;C,&nbsp;P&gt;&gt;&nbsp;childStream()&nbsp;{</td><td class="lineNumber">227</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stream&lt;?&nbsp;extends&nbsp;Constituent&gt;&nbsp;childStream()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">228</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stream.empty();</td><td class="lineNumber">228</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stream.empty();</td>
</tr>
<tr>
<td class="lineNumber">229</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">229</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">230</td><td class="equal">}</td><td class="lineNumber">230</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">231</td><td class="equal"></td><td class="lineNumber">231</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">232</td><td class="changed">interface&nbsp;Dependency&lt;D&nbsp;extends&nbsp;DependencyType,&nbsp;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;{</td><td class="lineNumber">232</td><td class="changed">interface&nbsp;Dependency&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">233</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;type();&nbsp;//&nbsp;see&nbsp;section&nbsp;1.C&nbsp;above</td><td class="lineNumber">233</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;DependencyType&nbsp;type();&nbsp;//&nbsp;see&nbsp;section&nbsp;1.C&nbsp;above</td>
</tr>
<tr>
<td class="lineNumber">234</td><td class="changed"></td><td class="lineNumber">234</td><td class="changed"></td>
</tr>
<tr>
<td class="lineNumber">235</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;TaggedToken&lt;P&gt;&nbsp;governor();</td><td class="lineNumber">235</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;TaggedToken&nbsp;governor();</td>
</tr>
<tr>
<td class="lineNumber">236</td><td class="changed"></td><td class="lineNumber">236</td><td class="changed"></td>
</tr>
<tr>
<td class="lineNumber">237</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;TaggedToken&lt;P&gt;&nbsp;dependent();</td><td class="lineNumber">237</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;TaggedToken&nbsp;dependent();</td>
</tr>
<tr>
<td class="lineNumber">238</td><td class="equal">}</td><td class="lineNumber">238</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">239</td><td class="equal"></td><td class="lineNumber">239</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">240</td><td class="changed">interface&nbsp;SentenceSyntax&lt;C&nbsp;extends&nbsp;ConstituentType,&nbsp;D&nbsp;extends&nbsp;DependencyType,&nbsp;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;{</td><td class="lineNumber">240</td><td class="changed">interface&nbsp;SentenceSyntax&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">241</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;ConstituentBranch&lt;C,&nbsp;P&gt;&nbsp;constituentTree();</td><td class="lineNumber">241</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;ConstituentBranch&nbsp;constituentTree();</td>
</tr>
<tr>
<td class="lineNumber">242</td><td class="changed"></td><td class="lineNumber">242</td><td class="changed"></td>
</tr>
<tr>
<td class="lineNumber">243</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;Dependency&lt;D,&nbsp;P&gt;&gt;&nbsp;dependencies();</td><td class="lineNumber">243</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;Dependency&gt;&nbsp;dependencies();</td>
</tr>
<tr>
<td class="lineNumber">244</td><td class="equal">}</td><td class="lineNumber">244</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">245</td><td class="equal"></td><td class="lineNumber">245</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">246</td><td class="changed">interface&nbsp;ParsedSentence&lt;C&nbsp;extends&nbsp;ConstituentType,&nbsp;D&nbsp;extends&nbsp;DependencyType,&nbsp;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;extends&nbsp;TaggedSent<br>ence&lt;P&gt;&nbsp;{</td><td class="lineNumber">246</td><td class="changed">interface&nbsp;ParsedSentence&nbsp;extends&nbsp;TaggedSentence&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">247</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;SentenceSyntax&lt;C,&nbsp;D,&nbsp;P&gt;&nbsp;syntax();</td><td class="lineNumber">247</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;SentenceSyntax&nbsp;syntax();</td>
</tr>
<tr>
<td class="lineNumber">248</td><td class="equal"></td><td class="lineNumber">248</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">249</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td><td class="lineNumber">249</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber">250</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;stage()&nbsp;{</td><td class="lineNumber">250</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;stage()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">251</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.PARSED;</td><td class="lineNumber">251</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.PARSED;</td>
</tr>
<tr>
<td class="lineNumber">252</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">252</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">253</td><td class="equal">}</td><td class="lineNumber">253</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">254</td><td class="equal"></td><td class="lineNumber">254</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">255</td><td class="changed">interface&nbsp;ParsedText&lt;C&nbsp;extends&nbsp;ConstituentType,&nbsp;D&nbsp;extends&nbsp;DependencyType,&nbsp;P&nbsp;extends&nbsp;PartOfSpeech&gt;&nbsp;extends&nbsp;TaggedText&lt;P&gt;&nbsp;<br>{</td><td class="lineNumber">255</td><td class="changed">interface&nbsp;ParsedText&nbsp;extends&nbsp;TaggedText&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">256</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;some&nbsp;(or&nbsp;even&nbsp;all)&nbsp;sentences&nbsp;may&nbsp;remain&nbsp;unparsed</td><td class="lineNumber">256</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;some&nbsp;(or&nbsp;even&nbsp;all)&nbsp;sentences&nbsp;may&nbsp;remain&nbsp;unparsed</td>
</tr>
<tr>
<td class="lineNumber">257</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;ParsedSentence&lt;C,&nbsp;D,&nbsp;P&gt;&gt;&nbsp;parsedSentenceStream();</td><td class="lineNumber">257</td><td class="changed">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;ParsedSentence&gt;&nbsp;parsedSentenceStream();</td>
</tr>
<tr>
<td class="lineNumber">258</td><td class="equal"></td><td class="lineNumber">258</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">259</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td><td class="lineNumber">259</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber">260</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td><td class="lineNumber">260</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stage&nbsp;maxStage()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">261</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.PARSED;</td><td class="lineNumber">261</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stage.PARSED;</td>
</tr>
<tr>
<td class="lineNumber">262</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td><td class="lineNumber">262</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber">263</td><td class="equal">}</td><td class="lineNumber">263</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">264</td><td class="equal"></td><td class="lineNumber">264</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">265</td><td class="added">/*</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">266</td><td class="added">&nbsp;*&nbsp;3.B)&nbsp;LANGUAGE-SPECIFIC&nbsp;HIERARCHY&nbsp;(AXIS&nbsp;Z&nbsp;OVER&nbsp;Y&nbsp;OVER&nbsp;X)</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">267</td><td class="added">&nbsp;*/</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">268</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">269</td><td class="added">//</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">270</td><td class="added">//&nbsp;3.B.I)&nbsp;ENGLISH</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">271</td><td class="added">//</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">272</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">273</td><td class="added">//&nbsp;3.B.I.a)&nbsp;ENGLISH&nbsp;PARTS&nbsp;OF&nbsp;SPEECH</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">274</td><td class="added">interface&nbsp;EnglishTaggedToken&nbsp;extends&nbsp;TaggedToken&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">275</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">276</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;EnglishPartOfSpeech&nbsp;partOfSpeech();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">277</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">278</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">279</td><td class="added">interface&nbsp;EnglishTaggedSentence&nbsp;extends&nbsp;TaggedSentence&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">280</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">281</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;EnglishTaggedToken&gt;&nbsp;tokens();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">282</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">283</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">284</td><td class="added">interface&nbsp;EnglishTaggedText&nbsp;extends&nbsp;TaggedText&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">285</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override&nbsp;//&nbsp;some&nbsp;(or&nbsp;even&nbsp;all)&nbsp;sentences&nbsp;may&nbsp;remain&nbsp;untagged</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">286</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stream&lt;?&nbsp;extends&nbsp;EnglishTaggedSentence&gt;&nbsp;taggedSentenceStream()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">287</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Seq.ofType(sentences().stream(),&nbsp;EnglishTaggedSentence.class);</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">288</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">289</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">290</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">291</td><td class="added">//&nbsp;3.B.I.b)&nbsp;ENGLISH&nbsp;SYNTAX</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">292</td><td class="added">interface&nbsp;EnglishConstituent&nbsp;extends&nbsp;Constituent&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">293</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">294</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;Stream&lt;?&nbsp;extends&nbsp;EnglishConstituent&gt;&nbsp;childStream();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">295</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">296</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">297</td><td class="added">interface&nbsp;EnglishConstituentBranch&nbsp;extends&nbsp;EnglishConstituent,&nbsp;ConstituentBranch&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">298</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">299</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;EnglishConstituentType&nbsp;type();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">300</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">301</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">302</td><td class="added">interface&nbsp;EnglishConstituentLeaf&nbsp;extends&nbsp;EnglishConstituent,&nbsp;ConstituentLeaf&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">303</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">304</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;EnglishTaggedToken&nbsp;token();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">305</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">306</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">307</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stream&lt;?&nbsp;extends&nbsp;EnglishConstituent&gt;&nbsp;childStream()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">308</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Stream.empty();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">309</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">310</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">311</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">312</td><td class="added">interface&nbsp;EnglishDependency&nbsp;extends&nbsp;Dependency&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">313</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">314</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;EnglishDependencyType&nbsp;type();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">315</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">316</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">317</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;EnglishTaggedToken&nbsp;governor();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">318</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">319</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">320</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;EnglishTaggedToken&nbsp;dependent();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">321</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">322</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">323</td><td class="added">interface&nbsp;EnglishSentenceSyntax&nbsp;extends&nbsp;SentenceSyntax&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">324</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">325</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;EnglishConstituentBranch&nbsp;constituentTree();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">326</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">327</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">328</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;EnglishDependency&gt;&nbsp;dependencies();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">329</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">330</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">331</td><td class="added">interface&nbsp;EnglishParsedSentence&nbsp;extends&nbsp;EnglishTaggedSentence,&nbsp;ParsedSentence&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">332</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">333</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;EnglishSentenceSyntax&nbsp;syntax();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">334</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">335</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">336</td><td class="added">interface&nbsp;EnglishParsedText&nbsp;extends&nbsp;EnglishTaggedText,&nbsp;ParsedText&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">337</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override&nbsp;//&nbsp;some&nbsp;(or&nbsp;even&nbsp;all)&nbsp;sentences&nbsp;may&nbsp;remain&nbsp;unparsed</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">338</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stream&lt;?&nbsp;extends&nbsp;EnglishParsedSentence&gt;&nbsp;parsedSentenceStream()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">339</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Seq.ofType(sentences().stream(),&nbsp;EnglishParsedSentence.class);</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">340</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">341</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">342</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">343</td><td class="added">//</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">344</td><td class="added">//&nbsp;3.B.II)&nbsp;GERMAN</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">345</td><td class="added">//</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">346</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">347</td><td class="added">//&nbsp;3.B.II.a)&nbsp;GERMAN&nbsp;PARTS&nbsp;OF&nbsp;SPEECH</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">348</td><td class="added">interface&nbsp;GermanTaggedToken&nbsp;extends&nbsp;TaggedToken&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">349</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">350</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;GermanPartOfSpeech&nbsp;partOfSpeech();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">351</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">352</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">353</td><td class="added">interface&nbsp;GermanTaggedSentence&nbsp;extends&nbsp;TaggedSentence&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">354</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">355</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;?&nbsp;extends&nbsp;GermanTaggedToken&gt;&nbsp;tokens();</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">356</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">357</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">358</td><td class="added">interface&nbsp;GermanTaggedText&nbsp;extends&nbsp;TaggedText&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">359</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;@Override</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">360</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;Stream&lt;?&nbsp;extends&nbsp;GermanTaggedSentence&gt;&nbsp;taggedSentenceStream()&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">361</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Seq.ofType(sentences().stream(),&nbsp;GermanTaggedSentence.class);</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">362</td><td class="added">&nbsp;&nbsp;&nbsp;&nbsp;}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">363</td><td class="added">}</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">364</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">365</td><td class="added">//&nbsp;3.B.II.b)&nbsp;GERMAN&nbsp;SYNTAX&nbsp;(missing&nbsp;as&nbsp;of&nbsp;yet)</td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">366</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber"></td><td class="empty"></td><td class="lineNumber">367</td><td class="added"></td>
</tr>
<tr>
<td class="lineNumber">265</td><td class="equal">/*&nbsp;***********************</td><td class="lineNumber">368</td><td class="equal">/*&nbsp;***********************</td>
</tr>
<tr>
<td class="lineNumber">266</td><td class="equal">&nbsp;*&nbsp;4)&nbsp;PRODUCERS&nbsp;OF&nbsp;THE&nbsp;API</td><td class="lineNumber">369</td><td class="equal">&nbsp;*&nbsp;4)&nbsp;PRODUCERS&nbsp;OF&nbsp;THE&nbsp;API</td>
</tr>
<tr>
<td class="lineNumber">267</td><td class="equal">&nbsp;*************************/</td><td class="lineNumber">370</td><td class="equal">&nbsp;*************************/</td>
</tr>
<tr>
<td class="lineNumber">268</td><td class="equal"></td><td class="lineNumber">371</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">269</td><td class="equal">interface&nbsp;TextProcessingRequest&nbsp;{&nbsp;//&nbsp;SIMPLIFICATION</td><td class="lineNumber">372</td><td class="equal">interface&nbsp;TextProcessingRequest&nbsp;{&nbsp;//&nbsp;SIMPLIFICATION</td>
</tr>
<tr>
<td class="lineNumber">270</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;Locale&nbsp;locale();</td><td class="lineNumber">373</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;Locale&nbsp;locale();</td>
</tr>
<tr>
<td class="lineNumber">271</td><td class="equal"></td><td class="lineNumber">374</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">272</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;text();</td><td class="lineNumber">375</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;text();</td>
</tr>
<tr>
<td class="lineNumber">273</td><td class="equal"></td><td class="lineNumber">376</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">274</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;Stage&nbsp;targetStage();</td><td class="lineNumber">377</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;Stage&nbsp;targetStage();</td>
</tr>
<tr>
<td class="lineNumber">275</td><td class="equal">}</td><td class="lineNumber">378</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">276</td><td class="equal"></td><td class="lineNumber">379</td><td class="equal"></td>
</tr>
<tr>
<td class="lineNumber">277</td><td class="equal">interface&nbsp;TextProcessor&nbsp;{</td><td class="lineNumber">380</td><td class="equal">interface&nbsp;TextProcessor&nbsp;{</td>
</tr>
<tr>
<td class="lineNumber">278</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;LocalizedText&nbsp;processText(TextProcessingRequest&nbsp;request);</td><td class="lineNumber">381</td><td class="equal">&nbsp;&nbsp;&nbsp;&nbsp;LocalizedText&nbsp;processText(TextProcessingRequest&nbsp;request);</td>
</tr>
<tr>
<td class="lineNumber">279</td><td class="equal">}</td><td class="lineNumber">382</td><td class="equal">}</td>
</tr>
<tr>
<td class="lineNumber">280</td><td class="equal"></td><td class="lineNumber">383</td><td class="equal"></td>
</tr>
<tr>
<