// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: CoreNLP.proto

package edu.stanford.nlp.pipeline;

public final class CoreNLPProtos {
  private CoreNLPProtos() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * <pre>
   * An enumeration for the valid languages allowed in CoreNLP
   * </pre>
   *
   * Protobuf enum {@code edu.stanford.nlp.pipeline.Language}
   */
  public enum Language
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>Unknown = 0;</code>
     */
    Unknown(0),
    /**
     * <code>Any = 1;</code>
     */
    Any(1),
    /**
     * <code>Arabic = 2;</code>
     */
    Arabic(2),
    /**
     * <code>Chinese = 3;</code>
     */
    Chinese(3),
    /**
     * <code>English = 4;</code>
     */
    English(4),
    /**
     * <code>German = 5;</code>
     */
    German(5),
    /**
     * <code>French = 6;</code>
     */
    French(6),
    /**
     * <code>Hebrew = 7;</code>
     */
    Hebrew(7),
    /**
     * <code>Spanish = 8;</code>
     */
    Spanish(8),
    /**
     * <code>UniversalEnglish = 9;</code>
     */
    UniversalEnglish(9),
    /**
     * <code>UniversalChinese = 10;</code>
     */
    UniversalChinese(10),
    ;

    /**
     * <code>Unknown = 0;</code>
     */
    public static final int Unknown_VALUE = 0;
    /**
     * <code>Any = 1;</code>
     */
    public static final int Any_VALUE = 1;
    /**
     * <code>Arabic = 2;</code>
     */
    public static final int Arabic_VALUE = 2;
    /**
     * <code>Chinese = 3;</code>
     */
    public static final int Chinese_VALUE = 3;
    /**
     * <code>English = 4;</code>
     */
    public static final int English_VALUE = 4;
    /**
     * <code>German = 5;</code>
     */
    public static final int German_VALUE = 5;
    /**
     * <code>French = 6;</code>
     */
    public static final int French_VALUE = 6;
    /**
     * <code>Hebrew = 7;</code>
     */
    public static final int Hebrew_VALUE = 7;
    /**
     * <code>Spanish = 8;</code>
     */
    public static final int Spanish_VALUE = 8;
    /**
     * <code>UniversalEnglish = 9;</code>
     */
    public static final int UniversalEnglish_VALUE = 9;
    /**
     * <code>UniversalChinese = 10;</code>
     */
    public static final int UniversalChinese_VALUE = 10;


    public final int getNumber() {
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static Language valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static Language forNumber(int value) {
      switch (value) {
        case 0: return Unknown;
        case 1: return Any;
        case 2: return Arabic;
        case 3: return Chinese;
        case 4: return English;
        case 5: return German;
        case 6: return French;
        case 7: return Hebrew;
        case 8: return Spanish;
        case 9: return UniversalEnglish;
        case 10: return UniversalChinese;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<Language>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Language> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Language>() {
            public Language findValueByNumber(int number) {
              return Language.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.getDescriptor().getEnumTypes().get(0);
    }

    private static final Language[] VALUES = values();

    public static Language valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private Language(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:edu.stanford.nlp.pipeline.Language)
  }

  /**
   * <pre>
   * An enumeration of valid sentiment values for the sentiment classifier.
   * </pre>
   *
   * Protobuf enum {@code edu.stanford.nlp.pipeline.Sentiment}
   */
  public enum Sentiment
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>STRONG_NEGATIVE = 0;</code>
     */
    STRONG_NEGATIVE(0),
    /**
     * <code>WEAK_NEGATIVE = 1;</code>
     */
    WEAK_NEGATIVE(1),
    /**
     * <code>NEUTRAL = 2;</code>
     */
    NEUTRAL(2),
    /**
     * <code>WEAK_POSITIVE = 3;</code>
     */
    WEAK_POSITIVE(3),
    /**
     * <code>STRONG_POSITIVE = 4;</code>
     */
    STRONG_POSITIVE(4),
    ;

    /**
     * <code>STRONG_NEGATIVE = 0;</code>
     */
    public static final int STRONG_NEGATIVE_VALUE = 0;
    /**
     * <code>WEAK_NEGATIVE = 1;</code>
     */
    public static final int WEAK_NEGATIVE_VALUE = 1;
    /**
     * <code>NEUTRAL = 2;</code>
     */
    public static final int NEUTRAL_VALUE = 2;
    /**
     * <code>WEAK_POSITIVE = 3;</code>
     */
    public static final int WEAK_POSITIVE_VALUE = 3;
    /**
     * <code>STRONG_POSITIVE = 4;</code>
     */
    public static final int STRONG_POSITIVE_VALUE = 4;


    public final int getNumber() {
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static Sentiment valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static Sentiment forNumber(int value) {
      switch (value) {
        case 0: return STRONG_NEGATIVE;
        case 1: return WEAK_NEGATIVE;
        case 2: return NEUTRAL;
        case 3: return WEAK_POSITIVE;
        case 4: return STRONG_POSITIVE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<Sentiment>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Sentiment> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Sentiment>() {
            public Sentiment findValueByNumber(int number) {
              return Sentiment.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.getDescriptor().getEnumTypes().get(1);
    }

    private static final Sentiment[] VALUES = values();

    public static Sentiment valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private Sentiment(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:edu.stanford.nlp.pipeline.Sentiment)
  }

  /**
   * <pre>
   * The seven informative Natural Logic relations
   * </pre>
   *
   * Protobuf enum {@code edu.stanford.nlp.pipeline.NaturalLogicRelation}
   */
  public enum NaturalLogicRelation
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>EQUIVALENCE = 0;</code>
     */
    EQUIVALENCE(0),
    /**
     * <code>FORWARD_ENTAILMENT = 1;</code>
     */
    FORWARD_ENTAILMENT(1),
    /**
     * <code>REVERSE_ENTAILMENT = 2;</code>
     */
    REVERSE_ENTAILMENT(2),
    /**
     * <code>NEGATION = 3;</code>
     */
    NEGATION(3),
    /**
     * <code>ALTERNATION = 4;</code>
     */
    ALTERNATION(4),
    /**
     * <code>COVER = 5;</code>
     */
    COVER(5),
    /**
     * <code>INDEPENDENCE = 6;</code>
     */
    INDEPENDENCE(6),
    ;

    /**
     * <code>EQUIVALENCE = 0;</code>
     */
    public static final int EQUIVALENCE_VALUE = 0;
    /**
     * <code>FORWARD_ENTAILMENT = 1;</code>
     */
    public static final int FORWARD_ENTAILMENT_VALUE = 1;
    /**
     * <code>REVERSE_ENTAILMENT = 2;</code>
     */
    public static final int REVERSE_ENTAILMENT_VALUE = 2;
    /**
     * <code>NEGATION = 3;</code>
     */
    public static final int NEGATION_VALUE = 3;
    /**
     * <code>ALTERNATION = 4;</code>
     */
    public static final int ALTERNATION_VALUE = 4;
    /**
     * <code>COVER = 5;</code>
     */
    public static final int COVER_VALUE = 5;
    /**
     * <code>INDEPENDENCE = 6;</code>
     */
    public static final int INDEPENDENCE_VALUE = 6;


    public final int getNumber() {
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static NaturalLogicRelation valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static NaturalLogicRelation forNumber(int value) {
      switch (value) {
        case 0: return EQUIVALENCE;
        case 1: return FORWARD_ENTAILMENT;
        case 2: return REVERSE_ENTAILMENT;
        case 3: return NEGATION;
        case 4: return ALTERNATION;
        case 5: return COVER;
        case 6: return INDEPENDENCE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<NaturalLogicRelation>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        NaturalLogicRelation> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<NaturalLogicRelation>() {
            public NaturalLogicRelation findValueByNumber(int number) {
              return NaturalLogicRelation.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.getDescriptor().getEnumTypes().get(2);
    }

    private static final NaturalLogicRelation[] VALUES = values();

    public static NaturalLogicRelation valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private NaturalLogicRelation(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:edu.stanford.nlp.pipeline.NaturalLogicRelation)
  }

  public interface DocumentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Document)
      com.google.protobuf.GeneratedMessageV3.
          ExtendableMessageOrBuilder<Document> {

    /**
     * <code>required string text = 1;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <code>required string text = 1;</code>
     * @return The text.
     */
    java.lang.String getText();
    /**
     * <code>required string text = 1;</code>
     * @return The bytes for text.
     */
    com.google.protobuf.ByteString
        getTextBytes();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence> 
        getSentenceList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getSentence(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    int getSentenceCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder> 
        getSentenceOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder getSentenceOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain> 
        getCorefChainList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain getCorefChain(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    int getCorefChainCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder> 
        getCorefChainOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder getCorefChainOrBuilder(
        int index);

    /**
     * <code>optional string docID = 4;</code>
     * @return Whether the docID field is set.
     */
    boolean hasDocID();
    /**
     * <code>optional string docID = 4;</code>
     * @return The docID.
     */
    java.lang.String getDocID();
    /**
     * <code>optional string docID = 4;</code>
     * @return The bytes for docID.
     */
    com.google.protobuf.ByteString
        getDocIDBytes();

    /**
     * <code>optional string docDate = 7;</code>
     * @return Whether the docDate field is set.
     */
    boolean hasDocDate();
    /**
     * <code>optional string docDate = 7;</code>
     * @return The docDate.
     */
    java.lang.String getDocDate();
    /**
     * <code>optional string docDate = 7;</code>
     * @return The bytes for docDate.
     */
    com.google.protobuf.ByteString
        getDocDateBytes();

    /**
     * <code>optional uint64 calendar = 8;</code>
     * @return Whether the calendar field is set.
     */
    boolean hasCalendar();
    /**
     * <code>optional uint64 calendar = 8;</code>
     * @return The calendar.
     */
    long getCalendar();

    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> 
        getSentencelessTokenList();
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Token getSentencelessToken(int index);
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    int getSentencelessTokenCount();
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getSentencelessTokenOrBuilderList();
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getSentencelessTokenOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> 
        getCharacterList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Token getCharacter(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    int getCharacterCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getCharacterOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getCharacterOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> 
        getQuoteList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getQuote(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    int getQuoteCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> 
        getQuoteOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder getQuoteOrBuilder(
        int index);

    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> 
        getMentionsList();
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getMentions(int index);
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    int getMentionsCount();
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> 
        getMentionsOrBuilderList();
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder getMentionsOrBuilder(
        int index);

    /**
     * <pre>
     * used to differentiate between null and empty list
     * </pre>
     *
     * <code>optional bool hasEntityMentionsAnnotation = 13;</code>
     * @return Whether the hasEntityMentionsAnnotation field is set.
     */
    boolean hasHasEntityMentionsAnnotation();
    /**
     * <pre>
     * used to differentiate between null and empty list
     * </pre>
     *
     * <code>optional bool hasEntityMentionsAnnotation = 13;</code>
     * @return The hasEntityMentionsAnnotation.
     */
    boolean getHasEntityMentionsAnnotation();

    /**
     * <pre>
     **
     * xml information
     * </pre>
     *
     * <code>optional bool xmlDoc = 11;</code>
     * @return Whether the xmlDoc field is set.
     */
    boolean hasXmlDoc();
    /**
     * <pre>
     **
     * xml information
     * </pre>
     *
     * <code>optional bool xmlDoc = 11;</code>
     * @return The xmlDoc.
     */
    boolean getXmlDoc();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Section> 
        getSectionsList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Section getSections(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    int getSectionsCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder> 
        getSectionsOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder getSectionsOrBuilder(
        int index);

    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> 
        getMentionsForCorefList();
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getMentionsForCoref(int index);
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    int getMentionsForCorefCount();
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> 
        getMentionsForCorefOrBuilderList();
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder getMentionsForCorefOrBuilder(
        int index);

    /**
     * <code>optional bool hasCorefMentionAnnotation = 15;</code>
     * @return Whether the hasCorefMentionAnnotation field is set.
     */
    boolean hasHasCorefMentionAnnotation();
    /**
     * <code>optional bool hasCorefMentionAnnotation = 15;</code>
     * @return The hasCorefMentionAnnotation.
     */
    boolean getHasCorefMentionAnnotation();

    /**
     * <code>optional bool hasCorefAnnotation = 16;</code>
     * @return Whether the hasCorefAnnotation field is set.
     */
    boolean hasHasCorefAnnotation();
    /**
     * <code>optional bool hasCorefAnnotation = 16;</code>
     * @return The hasCorefAnnotation.
     */
    boolean getHasCorefAnnotation();

    /**
     * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
     * @return A list containing the corefMentionToEntityMentionMappings.
     */
    java.util.List<java.lang.Integer> getCorefMentionToEntityMentionMappingsList();
    /**
     * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
     * @return The count of corefMentionToEntityMentionMappings.
     */
    int getCorefMentionToEntityMentionMappingsCount();
    /**
     * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
     * @param index The index of the element to return.
     * @return The corefMentionToEntityMentionMappings at the given index.
     */
    int getCorefMentionToEntityMentionMappings(int index);

    /**
     * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
     * @return A list containing the entityMentionToCorefMentionMappings.
     */
    java.util.List<java.lang.Integer> getEntityMentionToCorefMentionMappingsList();
    /**
     * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
     * @return The count of entityMentionToCorefMentionMappings.
     */
    int getEntityMentionToCorefMentionMappingsCount();
    /**
     * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
     * @param index The index of the element to return.
     * @return The entityMentionToCorefMentionMappings at the given index.
     */
    int getEntityMentionToCorefMentionMappings(int index);
  }
  /**
   * <pre>
   * A document; that is, the equivalent of an Annotation.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Document}
   */
  public static final class Document extends
      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
        Document> implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Document)
      DocumentOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Document.newBuilder() to construct.
    private Document(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<edu.stanford.nlp.pipeline.CoreNLPProtos.Document, ?> builder) {
      super(builder);
    }
    private Document() {
      text_ = "";
      sentence_ = java.util.Collections.emptyList();
      corefChain_ = java.util.Collections.emptyList();
      docID_ = "";
      docDate_ = "";
      sentencelessToken_ = java.util.Collections.emptyList();
      character_ = java.util.Collections.emptyList();
      quote_ = java.util.Collections.emptyList();
      mentions_ = java.util.Collections.emptyList();
      sections_ = java.util.Collections.emptyList();
      mentionsForCoref_ = java.util.Collections.emptyList();
      corefMentionToEntityMentionMappings_ = emptyIntList();
      entityMentionToCorefMentionMappings_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Document();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Document_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Document_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder.class);
    }

    private int bitField0_;
    public static final int TEXT_FIELD_NUMBER = 1;
    private volatile java.lang.Object text_;
    /**
     * <code>required string text = 1;</code>
     * @return Whether the text field is set.
     */
    @java.lang.Override
    public boolean hasText() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string text = 1;</code>
     * @return The text.
     */
    @java.lang.Override
    public java.lang.String getText() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          text_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string text = 1;</code>
     * @return The bytes for text.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTextBytes() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        text_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SENTENCE_FIELD_NUMBER = 2;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence> sentence_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence> getSentenceList() {
      return sentence_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder> 
        getSentenceOrBuilderList() {
      return sentence_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    @java.lang.Override
    public int getSentenceCount() {
      return sentence_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getSentence(int index) {
      return sentence_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder getSentenceOrBuilder(
        int index) {
      return sentence_.get(index);
    }

    public static final int COREFCHAIN_FIELD_NUMBER = 3;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain> corefChain_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain> getCorefChainList() {
      return corefChain_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder> 
        getCorefChainOrBuilderList() {
      return corefChain_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    @java.lang.Override
    public int getCorefChainCount() {
      return corefChain_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain getCorefChain(int index) {
      return corefChain_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder getCorefChainOrBuilder(
        int index) {
      return corefChain_.get(index);
    }

    public static final int DOCID_FIELD_NUMBER = 4;
    private volatile java.lang.Object docID_;
    /**
     * <code>optional string docID = 4;</code>
     * @return Whether the docID field is set.
     */
    @java.lang.Override
    public boolean hasDocID() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string docID = 4;</code>
     * @return The docID.
     */
    @java.lang.Override
    public java.lang.String getDocID() {
      java.lang.Object ref = docID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          docID_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string docID = 4;</code>
     * @return The bytes for docID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDocIDBytes() {
      java.lang.Object ref = docID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOCDATE_FIELD_NUMBER = 7;
    private volatile java.lang.Object docDate_;
    /**
     * <code>optional string docDate = 7;</code>
     * @return Whether the docDate field is set.
     */
    @java.lang.Override
    public boolean hasDocDate() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string docDate = 7;</code>
     * @return The docDate.
     */
    @java.lang.Override
    public java.lang.String getDocDate() {
      java.lang.Object ref = docDate_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          docDate_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string docDate = 7;</code>
     * @return The bytes for docDate.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDocDateBytes() {
      java.lang.Object ref = docDate_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docDate_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CALENDAR_FIELD_NUMBER = 8;
    private long calendar_;
    /**
     * <code>optional uint64 calendar = 8;</code>
     * @return Whether the calendar field is set.
     */
    @java.lang.Override
    public boolean hasCalendar() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional uint64 calendar = 8;</code>
     * @return The calendar.
     */
    @java.lang.Override
    public long getCalendar() {
      return calendar_;
    }

    public static final int SENTENCELESSTOKEN_FIELD_NUMBER = 5;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> sentencelessToken_;
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getSentencelessTokenList() {
      return sentencelessToken_;
    }
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getSentencelessTokenOrBuilderList() {
      return sentencelessToken_;
    }
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    @java.lang.Override
    public int getSentencelessTokenCount() {
      return sentencelessToken_.size();
    }
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getSentencelessToken(int index) {
      return sentencelessToken_.get(index);
    }
    /**
     * <pre>
     **
     * A peculiar field, for the corner case when a Document is
     * serialized without any sentences. Otherwise
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getSentencelessTokenOrBuilder(
        int index) {
      return sentencelessToken_.get(index);
    }

    public static final int CHARACTER_FIELD_NUMBER = 10;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> character_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getCharacterList() {
      return character_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getCharacterOrBuilderList() {
      return character_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    @java.lang.Override
    public int getCharacterCount() {
      return character_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getCharacter(int index) {
      return character_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getCharacterOrBuilder(
        int index) {
      return character_.get(index);
    }

    public static final int QUOTE_FIELD_NUMBER = 6;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> quote_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> getQuoteList() {
      return quote_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> 
        getQuoteOrBuilderList() {
      return quote_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    @java.lang.Override
    public int getQuoteCount() {
      return quote_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getQuote(int index) {
      return quote_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder getQuoteOrBuilder(
        int index) {
      return quote_.get(index);
    }

    public static final int MENTIONS_FIELD_NUMBER = 9;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> mentions_;
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> getMentionsList() {
      return mentions_;
    }
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> 
        getMentionsOrBuilderList() {
      return mentions_;
    }
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    @java.lang.Override
    public int getMentionsCount() {
      return mentions_.size();
    }
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getMentions(int index) {
      return mentions_.get(index);
    }
    /**
     * <pre>
     **
     * This field is for entity mentions across the document.
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder getMentionsOrBuilder(
        int index) {
      return mentions_.get(index);
    }

    public static final int HASENTITYMENTIONSANNOTATION_FIELD_NUMBER = 13;
    private boolean hasEntityMentionsAnnotation_;
    /**
     * <pre>
     * used to differentiate between null and empty list
     * </pre>
     *
     * <code>optional bool hasEntityMentionsAnnotation = 13;</code>
     * @return Whether the hasEntityMentionsAnnotation field is set.
     */
    @java.lang.Override
    public boolean hasHasEntityMentionsAnnotation() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * used to differentiate between null and empty list
     * </pre>
     *
     * <code>optional bool hasEntityMentionsAnnotation = 13;</code>
     * @return The hasEntityMentionsAnnotation.
     */
    @java.lang.Override
    public boolean getHasEntityMentionsAnnotation() {
      return hasEntityMentionsAnnotation_;
    }

    public static final int XMLDOC_FIELD_NUMBER = 11;
    private boolean xmlDoc_;
    /**
     * <pre>
     **
     * xml information
     * </pre>
     *
     * <code>optional bool xmlDoc = 11;</code>
     * @return Whether the xmlDoc field is set.
     */
    @java.lang.Override
    public boolean hasXmlDoc() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     **
     * xml information
     * </pre>
     *
     * <code>optional bool xmlDoc = 11;</code>
     * @return The xmlDoc.
     */
    @java.lang.Override
    public boolean getXmlDoc() {
      return xmlDoc_;
    }

    public static final int SECTIONS_FIELD_NUMBER = 12;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Section> sections_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Section> getSectionsList() {
      return sections_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder> 
        getSectionsOrBuilderList() {
      return sections_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    @java.lang.Override
    public int getSectionsCount() {
      return sections_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Section getSections(int index) {
      return sections_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder getSectionsOrBuilder(
        int index) {
      return sections_.get(index);
    }

    public static final int MENTIONSFORCOREF_FIELD_NUMBER = 14;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> mentionsForCoref_;
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> getMentionsForCorefList() {
      return mentionsForCoref_;
    }
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> 
        getMentionsForCorefOrBuilderList() {
      return mentionsForCoref_;
    }
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    @java.lang.Override
    public int getMentionsForCorefCount() {
      return mentionsForCoref_.size();
    }
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getMentionsForCoref(int index) {
      return mentionsForCoref_.get(index);
    }
    /**
     * <pre>
     ** coref mentions for entire document *
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder getMentionsForCorefOrBuilder(
        int index) {
      return mentionsForCoref_.get(index);
    }

    public static final int HASCOREFMENTIONANNOTATION_FIELD_NUMBER = 15;
    private boolean hasCorefMentionAnnotation_;
    /**
     * <code>optional bool hasCorefMentionAnnotation = 15;</code>
     * @return Whether the hasCorefMentionAnnotation field is set.
     */
    @java.lang.Override
    public boolean hasHasCorefMentionAnnotation() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional bool hasCorefMentionAnnotation = 15;</code>
     * @return The hasCorefMentionAnnotation.
     */
    @java.lang.Override
    public boolean getHasCorefMentionAnnotation() {
      return hasCorefMentionAnnotation_;
    }

    public static final int HASCOREFANNOTATION_FIELD_NUMBER = 16;
    private boolean hasCorefAnnotation_;
    /**
     * <code>optional bool hasCorefAnnotation = 16;</code>
     * @return Whether the hasCorefAnnotation field is set.
     */
    @java.lang.Override
    public boolean hasHasCorefAnnotation() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional bool hasCorefAnnotation = 16;</code>
     * @return The hasCorefAnnotation.
     */
    @java.lang.Override
    public boolean getHasCorefAnnotation() {
      return hasCorefAnnotation_;
    }

    public static final int COREFMENTIONTOENTITYMENTIONMAPPINGS_FIELD_NUMBER = 17;
    private com.google.protobuf.Internal.IntList corefMentionToEntityMentionMappings_;
    /**
     * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
     * @return A list containing the corefMentionToEntityMentionMappings.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getCorefMentionToEntityMentionMappingsList() {
      return corefMentionToEntityMentionMappings_;
    }
    /**
     * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
     * @return The count of corefMentionToEntityMentionMappings.
     */
    public int getCorefMentionToEntityMentionMappingsCount() {
      return corefMentionToEntityMentionMappings_.size();
    }
    /**
     * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
     * @param index The index of the element to return.
     * @return The corefMentionToEntityMentionMappings at the given index.
     */
    public int getCorefMentionToEntityMentionMappings(int index) {
      return corefMentionToEntityMentionMappings_.getInt(index);
    }

    public static final int ENTITYMENTIONTOCOREFMENTIONMAPPINGS_FIELD_NUMBER = 18;
    private com.google.protobuf.Internal.IntList entityMentionToCorefMentionMappings_;
    /**
     * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
     * @return A list containing the entityMentionToCorefMentionMappings.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getEntityMentionToCorefMentionMappingsList() {
      return entityMentionToCorefMentionMappings_;
    }
    /**
     * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
     * @return The count of entityMentionToCorefMentionMappings.
     */
    public int getEntityMentionToCorefMentionMappingsCount() {
      return entityMentionToCorefMentionMappings_.size();
    }
    /**
     * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
     * @param index The index of the element to return.
     * @return The entityMentionToCorefMentionMappings at the given index.
     */
    public int getEntityMentionToCorefMentionMappings(int index) {
      return entityMentionToCorefMentionMappings_.getInt(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasText()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSentenceCount(); i++) {
        if (!getSentence(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getCorefChainCount(); i++) {
        if (!getCorefChain(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSentencelessTokenCount(); i++) {
        if (!getSentencelessToken(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getCharacterCount(); i++) {
        if (!getCharacter(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getQuoteCount(); i++) {
        if (!getQuote(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getMentionsCount(); i++) {
        if (!getMentions(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSectionsCount(); i++) {
        if (!getSections(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .ExtendableMessage<edu.stanford.nlp.pipeline.CoreNLPProtos.Document>.ExtensionWriter
          extensionWriter = newExtensionWriter();
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, text_);
      }
      for (int i = 0; i < sentence_.size(); i++) {
        output.writeMessage(2, sentence_.get(i));
      }
      for (int i = 0; i < corefChain_.size(); i++) {
        output.writeMessage(3, corefChain_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, docID_);
      }
      for (int i = 0; i < sentencelessToken_.size(); i++) {
        output.writeMessage(5, sentencelessToken_.get(i));
      }
      for (int i = 0; i < quote_.size(); i++) {
        output.writeMessage(6, quote_.get(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, docDate_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt64(8, calendar_);
      }
      for (int i = 0; i < mentions_.size(); i++) {
        output.writeMessage(9, mentions_.get(i));
      }
      for (int i = 0; i < character_.size(); i++) {
        output.writeMessage(10, character_.get(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(11, xmlDoc_);
      }
      for (int i = 0; i < sections_.size(); i++) {
        output.writeMessage(12, sections_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(13, hasEntityMentionsAnnotation_);
      }
      for (int i = 0; i < mentionsForCoref_.size(); i++) {
        output.writeMessage(14, mentionsForCoref_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(15, hasCorefMentionAnnotation_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBool(16, hasCorefAnnotation_);
      }
      for (int i = 0; i < corefMentionToEntityMentionMappings_.size(); i++) {
        output.writeInt32(17, corefMentionToEntityMentionMappings_.getInt(i));
      }
      for (int i = 0; i < entityMentionToCorefMentionMappings_.size(); i++) {
        output.writeInt32(18, entityMentionToCorefMentionMappings_.getInt(i));
      }
      extensionWriter.writeUntil(256, output);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, text_);
      }
      for (int i = 0; i < sentence_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, sentence_.get(i));
      }
      for (int i = 0; i < corefChain_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, corefChain_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, docID_);
      }
      for (int i = 0; i < sentencelessToken_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, sentencelessToken_.get(i));
      }
      for (int i = 0; i < quote_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, quote_.get(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, docDate_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(8, calendar_);
      }
      for (int i = 0; i < mentions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, mentions_.get(i));
      }
      for (int i = 0; i < character_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, character_.get(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, xmlDoc_);
      }
      for (int i = 0; i < sections_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, sections_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, hasEntityMentionsAnnotation_);
      }
      for (int i = 0; i < mentionsForCoref_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, mentionsForCoref_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(15, hasCorefMentionAnnotation_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(16, hasCorefAnnotation_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < corefMentionToEntityMentionMappings_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(corefMentionToEntityMentionMappings_.getInt(i));
        }
        size += dataSize;
        size += 2 * getCorefMentionToEntityMentionMappingsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < entityMentionToCorefMentionMappings_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(entityMentionToCorefMentionMappings_.getInt(i));
        }
        size += dataSize;
        size += 2 * getEntityMentionToCorefMentionMappingsList().size();
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Document)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Document other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Document) obj;

      if (hasText() != other.hasText()) return false;
      if (hasText()) {
        if (!getText()
            .equals(other.getText())) return false;
      }
      if (!getSentenceList()
          .equals(other.getSentenceList())) return false;
      if (!getCorefChainList()
          .equals(other.getCorefChainList())) return false;
      if (hasDocID() != other.hasDocID()) return false;
      if (hasDocID()) {
        if (!getDocID()
            .equals(other.getDocID())) return false;
      }
      if (hasDocDate() != other.hasDocDate()) return false;
      if (hasDocDate()) {
        if (!getDocDate()
            .equals(other.getDocDate())) return false;
      }
      if (hasCalendar() != other.hasCalendar()) return false;
      if (hasCalendar()) {
        if (getCalendar()
            != other.getCalendar()) return false;
      }
      if (!getSentencelessTokenList()
          .equals(other.getSentencelessTokenList())) return false;
      if (!getCharacterList()
          .equals(other.getCharacterList())) return false;
      if (!getQuoteList()
          .equals(other.getQuoteList())) return false;
      if (!getMentionsList()
          .equals(other.getMentionsList())) return false;
      if (hasHasEntityMentionsAnnotation() != other.hasHasEntityMentionsAnnotation()) return false;
      if (hasHasEntityMentionsAnnotation()) {
        if (getHasEntityMentionsAnnotation()
            != other.getHasEntityMentionsAnnotation()) return false;
      }
      if (hasXmlDoc() != other.hasXmlDoc()) return false;
      if (hasXmlDoc()) {
        if (getXmlDoc()
            != other.getXmlDoc()) return false;
      }
      if (!getSectionsList()
          .equals(other.getSectionsList())) return false;
      if (!getMentionsForCorefList()
          .equals(other.getMentionsForCorefList())) return false;
      if (hasHasCorefMentionAnnotation() != other.hasHasCorefMentionAnnotation()) return false;
      if (hasHasCorefMentionAnnotation()) {
        if (getHasCorefMentionAnnotation()
            != other.getHasCorefMentionAnnotation()) return false;
      }
      if (hasHasCorefAnnotation() != other.hasHasCorefAnnotation()) return false;
      if (hasHasCorefAnnotation()) {
        if (getHasCorefAnnotation()
            != other.getHasCorefAnnotation()) return false;
      }
      if (!getCorefMentionToEntityMentionMappingsList()
          .equals(other.getCorefMentionToEntityMentionMappingsList())) return false;
      if (!getEntityMentionToCorefMentionMappingsList()
          .equals(other.getEntityMentionToCorefMentionMappingsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      if (!getExtensionFields().equals(other.getExtensionFields()))
        return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasText()) {
        hash = (37 * hash) + TEXT_FIELD_NUMBER;
        hash = (53 * hash) + getText().hashCode();
      }
      if (getSentenceCount() > 0) {
        hash = (37 * hash) + SENTENCE_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceList().hashCode();
      }
      if (getCorefChainCount() > 0) {
        hash = (37 * hash) + COREFCHAIN_FIELD_NUMBER;
        hash = (53 * hash) + getCorefChainList().hashCode();
      }
      if (hasDocID()) {
        hash = (37 * hash) + DOCID_FIELD_NUMBER;
        hash = (53 * hash) + getDocID().hashCode();
      }
      if (hasDocDate()) {
        hash = (37 * hash) + DOCDATE_FIELD_NUMBER;
        hash = (53 * hash) + getDocDate().hashCode();
      }
      if (hasCalendar()) {
        hash = (37 * hash) + CALENDAR_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCalendar());
      }
      if (getSentencelessTokenCount() > 0) {
        hash = (37 * hash) + SENTENCELESSTOKEN_FIELD_NUMBER;
        hash = (53 * hash) + getSentencelessTokenList().hashCode();
      }
      if (getCharacterCount() > 0) {
        hash = (37 * hash) + CHARACTER_FIELD_NUMBER;
        hash = (53 * hash) + getCharacterList().hashCode();
      }
      if (getQuoteCount() > 0) {
        hash = (37 * hash) + QUOTE_FIELD_NUMBER;
        hash = (53 * hash) + getQuoteList().hashCode();
      }
      if (getMentionsCount() > 0) {
        hash = (37 * hash) + MENTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMentionsList().hashCode();
      }
      if (hasHasEntityMentionsAnnotation()) {
        hash = (37 * hash) + HASENTITYMENTIONSANNOTATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasEntityMentionsAnnotation());
      }
      if (hasXmlDoc()) {
        hash = (37 * hash) + XMLDOC_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getXmlDoc());
      }
      if (getSectionsCount() > 0) {
        hash = (37 * hash) + SECTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getSectionsList().hashCode();
      }
      if (getMentionsForCorefCount() > 0) {
        hash = (37 * hash) + MENTIONSFORCOREF_FIELD_NUMBER;
        hash = (53 * hash) + getMentionsForCorefList().hashCode();
      }
      if (hasHasCorefMentionAnnotation()) {
        hash = (37 * hash) + HASCOREFMENTIONANNOTATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasCorefMentionAnnotation());
      }
      if (hasHasCorefAnnotation()) {
        hash = (37 * hash) + HASCOREFANNOTATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasCorefAnnotation());
      }
      if (getCorefMentionToEntityMentionMappingsCount() > 0) {
        hash = (37 * hash) + COREFMENTIONTOENTITYMENTIONMAPPINGS_FIELD_NUMBER;
        hash = (53 * hash) + getCorefMentionToEntityMentionMappingsList().hashCode();
      }
      if (getEntityMentionToCorefMentionMappingsCount() > 0) {
        hash = (37 * hash) + ENTITYMENTIONTOCOREFMENTIONMAPPINGS_FIELD_NUMBER;
        hash = (53 * hash) + getEntityMentionToCorefMentionMappingsList().hashCode();
      }
      hash = hashFields(hash, getExtensionFields());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Document prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A document; that is, the equivalent of an Annotation.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Document}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Document, Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Document)
        edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Document_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Document_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Document.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Document.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        text_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (sentenceBuilder_ == null) {
          sentence_ = java.util.Collections.emptyList();
        } else {
          sentence_ = null;
          sentenceBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (corefChainBuilder_ == null) {
          corefChain_ = java.util.Collections.emptyList();
        } else {
          corefChain_ = null;
          corefChainBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        docID_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        docDate_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        calendar_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (sentencelessTokenBuilder_ == null) {
          sentencelessToken_ = java.util.Collections.emptyList();
        } else {
          sentencelessToken_ = null;
          sentencelessTokenBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (characterBuilder_ == null) {
          character_ = java.util.Collections.emptyList();
        } else {
          character_ = null;
          characterBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (quoteBuilder_ == null) {
          quote_ = java.util.Collections.emptyList();
        } else {
          quote_ = null;
          quoteBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        if (mentionsBuilder_ == null) {
          mentions_ = java.util.Collections.emptyList();
        } else {
          mentions_ = null;
          mentionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        hasEntityMentionsAnnotation_ = false;
        bitField0_ = (bitField0_ & ~0x00000400);
        xmlDoc_ = false;
        bitField0_ = (bitField0_ & ~0x00000800);
        if (sectionsBuilder_ == null) {
          sections_ = java.util.Collections.emptyList();
        } else {
          sections_ = null;
          sectionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        if (mentionsForCorefBuilder_ == null) {
          mentionsForCoref_ = java.util.Collections.emptyList();
        } else {
          mentionsForCoref_ = null;
          mentionsForCorefBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00002000);
        hasCorefMentionAnnotation_ = false;
        bitField0_ = (bitField0_ & ~0x00004000);
        hasCorefAnnotation_ = false;
        bitField0_ = (bitField0_ & ~0x00008000);
        corefMentionToEntityMentionMappings_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00010000);
        entityMentionToCorefMentionMappings_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00020000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Document_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Document build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Document result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Document buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Document result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Document(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.text_ = text_;
        if (sentenceBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            sentence_ = java.util.Collections.unmodifiableList(sentence_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.sentence_ = sentence_;
        } else {
          result.sentence_ = sentenceBuilder_.build();
        }
        if (corefChainBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            corefChain_ = java.util.Collections.unmodifiableList(corefChain_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.corefChain_ = corefChain_;
        } else {
          result.corefChain_ = corefChainBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.docID_ = docID_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.docDate_ = docDate_;
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.calendar_ = calendar_;
          to_bitField0_ |= 0x00000008;
        }
        if (sentencelessTokenBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            sentencelessToken_ = java.util.Collections.unmodifiableList(sentencelessToken_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.sentencelessToken_ = sentencelessToken_;
        } else {
          result.sentencelessToken_ = sentencelessTokenBuilder_.build();
        }
        if (characterBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            character_ = java.util.Collections.unmodifiableList(character_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.character_ = character_;
        } else {
          result.character_ = characterBuilder_.build();
        }
        if (quoteBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            quote_ = java.util.Collections.unmodifiableList(quote_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.quote_ = quote_;
        } else {
          result.quote_ = quoteBuilder_.build();
        }
        if (mentionsBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0)) {
            mentions_ = java.util.Collections.unmodifiableList(mentions_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.mentions_ = mentions_;
        } else {
          result.mentions_ = mentionsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.hasEntityMentionsAnnotation_ = hasEntityMentionsAnnotation_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.xmlDoc_ = xmlDoc_;
          to_bitField0_ |= 0x00000020;
        }
        if (sectionsBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0)) {
            sections_ = java.util.Collections.unmodifiableList(sections_);
            bitField0_ = (bitField0_ & ~0x00001000);
          }
          result.sections_ = sections_;
        } else {
          result.sections_ = sectionsBuilder_.build();
        }
        if (mentionsForCorefBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0)) {
            mentionsForCoref_ = java.util.Collections.unmodifiableList(mentionsForCoref_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.mentionsForCoref_ = mentionsForCoref_;
        } else {
          result.mentionsForCoref_ = mentionsForCorefBuilder_.build();
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.hasCorefMentionAnnotation_ = hasCorefMentionAnnotation_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.hasCorefAnnotation_ = hasCorefAnnotation_;
          to_bitField0_ |= 0x00000080;
        }
        if (((bitField0_ & 0x00010000) != 0)) {
          corefMentionToEntityMentionMappings_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00010000);
        }
        result.corefMentionToEntityMentionMappings_ = corefMentionToEntityMentionMappings_;
        if (((bitField0_ & 0x00020000) != 0)) {
          entityMentionToCorefMentionMappings_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00020000);
        }
        result.entityMentionToCorefMentionMappings_ = entityMentionToCorefMentionMappings_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public <Type> Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document, Type> extension,
          Type value) {
        return super.setExtension(extension, value);
      }
      @java.lang.Override
      public <Type> Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document, java.util.List<Type>> extension,
          int index, Type value) {
        return super.setExtension(extension, index, value);
      }
      @java.lang.Override
      public <Type> Builder addExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document, java.util.List<Type>> extension,
          Type value) {
        return super.addExtension(extension, value);
      }
      @java.lang.Override
      public <Type> Builder clearExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document, ?> extension) {
        return super.clearExtension(extension);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Document) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Document)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Document other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance()) return this;
        if (other.hasText()) {
          bitField0_ |= 0x00000001;
          text_ = other.text_;
          onChanged();
        }
        if (sentenceBuilder_ == null) {
          if (!other.sentence_.isEmpty()) {
            if (sentence_.isEmpty()) {
              sentence_ = other.sentence_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSentenceIsMutable();
              sentence_.addAll(other.sentence_);
            }
            onChanged();
          }
        } else {
          if (!other.sentence_.isEmpty()) {
            if (sentenceBuilder_.isEmpty()) {
              sentenceBuilder_.dispose();
              sentenceBuilder_ = null;
              sentence_ = other.sentence_;
              bitField0_ = (bitField0_ & ~0x00000002);
              sentenceBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSentenceFieldBuilder() : null;
            } else {
              sentenceBuilder_.addAllMessages(other.sentence_);
            }
          }
        }
        if (corefChainBuilder_ == null) {
          if (!other.corefChain_.isEmpty()) {
            if (corefChain_.isEmpty()) {
              corefChain_ = other.corefChain_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureCorefChainIsMutable();
              corefChain_.addAll(other.corefChain_);
            }
            onChanged();
          }
        } else {
          if (!other.corefChain_.isEmpty()) {
            if (corefChainBuilder_.isEmpty()) {
              corefChainBuilder_.dispose();
              corefChainBuilder_ = null;
              corefChain_ = other.corefChain_;
              bitField0_ = (bitField0_ & ~0x00000004);
              corefChainBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getCorefChainFieldBuilder() : null;
            } else {
              corefChainBuilder_.addAllMessages(other.corefChain_);
            }
          }
        }
        if (other.hasDocID()) {
          bitField0_ |= 0x00000008;
          docID_ = other.docID_;
          onChanged();
        }
        if (other.hasDocDate()) {
          bitField0_ |= 0x00000010;
          docDate_ = other.docDate_;
          onChanged();
        }
        if (other.hasCalendar()) {
          setCalendar(other.getCalendar());
        }
        if (sentencelessTokenBuilder_ == null) {
          if (!other.sentencelessToken_.isEmpty()) {
            if (sentencelessToken_.isEmpty()) {
              sentencelessToken_ = other.sentencelessToken_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureSentencelessTokenIsMutable();
              sentencelessToken_.addAll(other.sentencelessToken_);
            }
            onChanged();
          }
        } else {
          if (!other.sentencelessToken_.isEmpty()) {
            if (sentencelessTokenBuilder_.isEmpty()) {
              sentencelessTokenBuilder_.dispose();
              sentencelessTokenBuilder_ = null;
              sentencelessToken_ = other.sentencelessToken_;
              bitField0_ = (bitField0_ & ~0x00000040);
              sentencelessTokenBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSentencelessTokenFieldBuilder() : null;
            } else {
              sentencelessTokenBuilder_.addAllMessages(other.sentencelessToken_);
            }
          }
        }
        if (characterBuilder_ == null) {
          if (!other.character_.isEmpty()) {
            if (character_.isEmpty()) {
              character_ = other.character_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureCharacterIsMutable();
              character_.addAll(other.character_);
            }
            onChanged();
          }
        } else {
          if (!other.character_.isEmpty()) {
            if (characterBuilder_.isEmpty()) {
              characterBuilder_.dispose();
              characterBuilder_ = null;
              character_ = other.character_;
              bitField0_ = (bitField0_ & ~0x00000080);
              characterBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getCharacterFieldBuilder() : null;
            } else {
              characterBuilder_.addAllMessages(other.character_);
            }
          }
        }
        if (quoteBuilder_ == null) {
          if (!other.quote_.isEmpty()) {
            if (quote_.isEmpty()) {
              quote_ = other.quote_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureQuoteIsMutable();
              quote_.addAll(other.quote_);
            }
            onChanged();
          }
        } else {
          if (!other.quote_.isEmpty()) {
            if (quoteBuilder_.isEmpty()) {
              quoteBuilder_.dispose();
              quoteBuilder_ = null;
              quote_ = other.quote_;
              bitField0_ = (bitField0_ & ~0x00000100);
              quoteBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getQuoteFieldBuilder() : null;
            } else {
              quoteBuilder_.addAllMessages(other.quote_);
            }
          }
        }
        if (mentionsBuilder_ == null) {
          if (!other.mentions_.isEmpty()) {
            if (mentions_.isEmpty()) {
              mentions_ = other.mentions_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureMentionsIsMutable();
              mentions_.addAll(other.mentions_);
            }
            onChanged();
          }
        } else {
          if (!other.mentions_.isEmpty()) {
            if (mentionsBuilder_.isEmpty()) {
              mentionsBuilder_.dispose();
              mentionsBuilder_ = null;
              mentions_ = other.mentions_;
              bitField0_ = (bitField0_ & ~0x00000200);
              mentionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMentionsFieldBuilder() : null;
            } else {
              mentionsBuilder_.addAllMessages(other.mentions_);
            }
          }
        }
        if (other.hasHasEntityMentionsAnnotation()) {
          setHasEntityMentionsAnnotation(other.getHasEntityMentionsAnnotation());
        }
        if (other.hasXmlDoc()) {
          setXmlDoc(other.getXmlDoc());
        }
        if (sectionsBuilder_ == null) {
          if (!other.sections_.isEmpty()) {
            if (sections_.isEmpty()) {
              sections_ = other.sections_;
              bitField0_ = (bitField0_ & ~0x00001000);
            } else {
              ensureSectionsIsMutable();
              sections_.addAll(other.sections_);
            }
            onChanged();
          }
        } else {
          if (!other.sections_.isEmpty()) {
            if (sectionsBuilder_.isEmpty()) {
              sectionsBuilder_.dispose();
              sectionsBuilder_ = null;
              sections_ = other.sections_;
              bitField0_ = (bitField0_ & ~0x00001000);
              sectionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSectionsFieldBuilder() : null;
            } else {
              sectionsBuilder_.addAllMessages(other.sections_);
            }
          }
        }
        if (mentionsForCorefBuilder_ == null) {
          if (!other.mentionsForCoref_.isEmpty()) {
            if (mentionsForCoref_.isEmpty()) {
              mentionsForCoref_ = other.mentionsForCoref_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureMentionsForCorefIsMutable();
              mentionsForCoref_.addAll(other.mentionsForCoref_);
            }
            onChanged();
          }
        } else {
          if (!other.mentionsForCoref_.isEmpty()) {
            if (mentionsForCorefBuilder_.isEmpty()) {
              mentionsForCorefBuilder_.dispose();
              mentionsForCorefBuilder_ = null;
              mentionsForCoref_ = other.mentionsForCoref_;
              bitField0_ = (bitField0_ & ~0x00002000);
              mentionsForCorefBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMentionsForCorefFieldBuilder() : null;
            } else {
              mentionsForCorefBuilder_.addAllMessages(other.mentionsForCoref_);
            }
          }
        }
        if (other.hasHasCorefMentionAnnotation()) {
          setHasCorefMentionAnnotation(other.getHasCorefMentionAnnotation());
        }
        if (other.hasHasCorefAnnotation()) {
          setHasCorefAnnotation(other.getHasCorefAnnotation());
        }
        if (!other.corefMentionToEntityMentionMappings_.isEmpty()) {
          if (corefMentionToEntityMentionMappings_.isEmpty()) {
            corefMentionToEntityMentionMappings_ = other.corefMentionToEntityMentionMappings_;
            bitField0_ = (bitField0_ & ~0x00010000);
          } else {
            ensureCorefMentionToEntityMentionMappingsIsMutable();
            corefMentionToEntityMentionMappings_.addAll(other.corefMentionToEntityMentionMappings_);
          }
          onChanged();
        }
        if (!other.entityMentionToCorefMentionMappings_.isEmpty()) {
          if (entityMentionToCorefMentionMappings_.isEmpty()) {
            entityMentionToCorefMentionMappings_ = other.entityMentionToCorefMentionMappings_;
            bitField0_ = (bitField0_ & ~0x00020000);
          } else {
            ensureEntityMentionToCorefMentionMappingsIsMutable();
            entityMentionToCorefMentionMappings_.addAll(other.entityMentionToCorefMentionMappings_);
          }
          onChanged();
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasText()) {
          return false;
        }
        for (int i = 0; i < getSentenceCount(); i++) {
          if (!getSentence(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getCorefChainCount(); i++) {
          if (!getCorefChain(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getSentencelessTokenCount(); i++) {
          if (!getSentencelessToken(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getCharacterCount(); i++) {
          if (!getCharacter(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getQuoteCount(); i++) {
          if (!getQuote(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getMentionsCount(); i++) {
          if (!getMentions(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getSectionsCount(); i++) {
          if (!getSections(i).isInitialized()) {
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                text_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.PARSER,
                        extensionRegistry);
                if (sentenceBuilder_ == null) {
                  ensureSentenceIsMutable();
                  sentence_.add(m);
                } else {
                  sentenceBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.PARSER,
                        extensionRegistry);
                if (corefChainBuilder_ == null) {
                  ensureCorefChainIsMutable();
                  corefChain_.add(m);
                } else {
                  corefChainBuilder_.addMessage(m);
                }
                break;
              } // case 26
              case 34: {
                docID_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Token m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Token.PARSER,
                        extensionRegistry);
                if (sentencelessTokenBuilder_ == null) {
                  ensureSentencelessTokenIsMutable();
                  sentencelessToken_.add(m);
                } else {
                  sentencelessTokenBuilder_.addMessage(m);
                }
                break;
              } // case 42
              case 50: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Quote m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.PARSER,
                        extensionRegistry);
                if (quoteBuilder_ == null) {
                  ensureQuoteIsMutable();
                  quote_.add(m);
                } else {
                  quoteBuilder_.addMessage(m);
                }
                break;
              } // case 50
              case 58: {
                docDate_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 58
              case 64: {
                calendar_ = input.readUInt64();
                bitField0_ |= 0x00000020;
                break;
              } // case 64
              case 74: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.PARSER,
                        extensionRegistry);
                if (mentionsBuilder_ == null) {
                  ensureMentionsIsMutable();
                  mentions_.add(m);
                } else {
                  mentionsBuilder_.addMessage(m);
                }
                break;
              } // case 74
              case 82: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Token m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Token.PARSER,
                        extensionRegistry);
                if (characterBuilder_ == null) {
                  ensureCharacterIsMutable();
                  character_.add(m);
                } else {
                  characterBuilder_.addMessage(m);
                }
                break;
              } // case 82
              case 88: {
                xmlDoc_ = input.readBool();
                bitField0_ |= 0x00000800;
                break;
              } // case 88
              case 98: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Section m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Section.PARSER,
                        extensionRegistry);
                if (sectionsBuilder_ == null) {
                  ensureSectionsIsMutable();
                  sections_.add(m);
                } else {
                  sectionsBuilder_.addMessage(m);
                }
                break;
              } // case 98
              case 104: {
                hasEntityMentionsAnnotation_ = input.readBool();
                bitField0_ |= 0x00000400;
                break;
              } // case 104
              case 114: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Mention m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.PARSER,
                        extensionRegistry);
                if (mentionsForCorefBuilder_ == null) {
                  ensureMentionsForCorefIsMutable();
                  mentionsForCoref_.add(m);
                } else {
                  mentionsForCorefBuilder_.addMessage(m);
                }
                break;
              } // case 114
              case 120: {
                hasCorefMentionAnnotation_ = input.readBool();
                bitField0_ |= 0x00004000;
                break;
              } // case 120
              case 128: {
                hasCorefAnnotation_ = input.readBool();
                bitField0_ |= 0x00008000;
                break;
              } // case 128
              case 136: {
                int v = input.readInt32();
                ensureCorefMentionToEntityMentionMappingsIsMutable();
                corefMentionToEntityMentionMappings_.addInt(v);
                break;
              } // case 136
              case 138: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureCorefMentionToEntityMentionMappingsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  corefMentionToEntityMentionMappings_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 138
              case 144: {
                int v = input.readInt32();
                ensureEntityMentionToCorefMentionMappingsIsMutable();
                entityMentionToCorefMentionMappings_.addInt(v);
                break;
              } // case 144
              case 146: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureEntityMentionToCorefMentionMappingsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  entityMentionToCorefMentionMappings_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 146
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object text_ = "";
      /**
       * <code>required string text = 1;</code>
       * @return Whether the text field is set.
       */
      public boolean hasText() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string text = 1;</code>
       * @return The text.
       */
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            text_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string text = 1;</code>
       * @return The bytes for text.
       */
      public com.google.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string text = 1;</code>
       * @param value The text to set.
       * @return This builder for chaining.
       */
      public Builder setText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string text = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearText() {
        bitField0_ = (bitField0_ & ~0x00000001);
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }
      /**
       * <code>required string text = 1;</code>
       * @param value The bytes for text to set.
       * @return This builder for chaining.
       */
      public Builder setTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        text_ = value;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence> sentence_ =
        java.util.Collections.emptyList();
      private void ensureSentenceIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          sentence_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence>(sentence_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder> sentenceBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence> getSentenceList() {
        if (sentenceBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sentence_);
        } else {
          return sentenceBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public int getSentenceCount() {
        if (sentenceBuilder_ == null) {
          return sentence_.size();
        } else {
          return sentenceBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getSentence(int index) {
        if (sentenceBuilder_ == null) {
          return sentence_.get(index);
        } else {
          return sentenceBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder setSentence(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence value) {
        if (sentenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentenceIsMutable();
          sentence_.set(index, value);
          onChanged();
        } else {
          sentenceBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder setSentence(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder builderForValue) {
        if (sentenceBuilder_ == null) {
          ensureSentenceIsMutable();
          sentence_.set(index, builderForValue.build());
          onChanged();
        } else {
          sentenceBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder addSentence(edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence value) {
        if (sentenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentenceIsMutable();
          sentence_.add(value);
          onChanged();
        } else {
          sentenceBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder addSentence(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence value) {
        if (sentenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentenceIsMutable();
          sentence_.add(index, value);
          onChanged();
        } else {
          sentenceBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder addSentence(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder builderForValue) {
        if (sentenceBuilder_ == null) {
          ensureSentenceIsMutable();
          sentence_.add(builderForValue.build());
          onChanged();
        } else {
          sentenceBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder addSentence(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder builderForValue) {
        if (sentenceBuilder_ == null) {
          ensureSentenceIsMutable();
          sentence_.add(index, builderForValue.build());
          onChanged();
        } else {
          sentenceBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder addAllSentence(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence> values) {
        if (sentenceBuilder_ == null) {
          ensureSentenceIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sentence_);
          onChanged();
        } else {
          sentenceBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder clearSentence() {
        if (sentenceBuilder_ == null) {
          sentence_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          sentenceBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public Builder removeSentence(int index) {
        if (sentenceBuilder_ == null) {
          ensureSentenceIsMutable();
          sentence_.remove(index);
          onChanged();
        } else {
          sentenceBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder getSentenceBuilder(
          int index) {
        return getSentenceFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder getSentenceOrBuilder(
          int index) {
        if (sentenceBuilder_ == null) {
          return sentence_.get(index);  } else {
          return sentenceBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder> 
           getSentenceOrBuilderList() {
        if (sentenceBuilder_ != null) {
          return sentenceBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sentence_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder addSentenceBuilder() {
        return getSentenceFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder addSentenceBuilder(
          int index) {
        return getSentenceFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Sentence sentence = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder> 
           getSentenceBuilderList() {
        return getSentenceFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder> 
          getSentenceFieldBuilder() {
        if (sentenceBuilder_ == null) {
          sentenceBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder>(
                  sentence_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          sentence_ = null;
        }
        return sentenceBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain> corefChain_ =
        java.util.Collections.emptyList();
      private void ensureCorefChainIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          corefChain_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain>(corefChain_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder> corefChainBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain> getCorefChainList() {
        if (corefChainBuilder_ == null) {
          return java.util.Collections.unmodifiableList(corefChain_);
        } else {
          return corefChainBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public int getCorefChainCount() {
        if (corefChainBuilder_ == null) {
          return corefChain_.size();
        } else {
          return corefChainBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain getCorefChain(int index) {
        if (corefChainBuilder_ == null) {
          return corefChain_.get(index);
        } else {
          return corefChainBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder setCorefChain(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain value) {
        if (corefChainBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCorefChainIsMutable();
          corefChain_.set(index, value);
          onChanged();
        } else {
          corefChainBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder setCorefChain(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder builderForValue) {
        if (corefChainBuilder_ == null) {
          ensureCorefChainIsMutable();
          corefChain_.set(index, builderForValue.build());
          onChanged();
        } else {
          corefChainBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder addCorefChain(edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain value) {
        if (corefChainBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCorefChainIsMutable();
          corefChain_.add(value);
          onChanged();
        } else {
          corefChainBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder addCorefChain(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain value) {
        if (corefChainBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCorefChainIsMutable();
          corefChain_.add(index, value);
          onChanged();
        } else {
          corefChainBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder addCorefChain(
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder builderForValue) {
        if (corefChainBuilder_ == null) {
          ensureCorefChainIsMutable();
          corefChain_.add(builderForValue.build());
          onChanged();
        } else {
          corefChainBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder addCorefChain(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder builderForValue) {
        if (corefChainBuilder_ == null) {
          ensureCorefChainIsMutable();
          corefChain_.add(index, builderForValue.build());
          onChanged();
        } else {
          corefChainBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder addAllCorefChain(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain> values) {
        if (corefChainBuilder_ == null) {
          ensureCorefChainIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, corefChain_);
          onChanged();
        } else {
          corefChainBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder clearCorefChain() {
        if (corefChainBuilder_ == null) {
          corefChain_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          corefChainBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public Builder removeCorefChain(int index) {
        if (corefChainBuilder_ == null) {
          ensureCorefChainIsMutable();
          corefChain_.remove(index);
          onChanged();
        } else {
          corefChainBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder getCorefChainBuilder(
          int index) {
        return getCorefChainFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder getCorefChainOrBuilder(
          int index) {
        if (corefChainBuilder_ == null) {
          return corefChain_.get(index);  } else {
          return corefChainBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder> 
           getCorefChainOrBuilderList() {
        if (corefChainBuilder_ != null) {
          return corefChainBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(corefChain_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder addCorefChainBuilder() {
        return getCorefChainFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder addCorefChainBuilder(
          int index) {
        return getCorefChainFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain corefChain = 3;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder> 
           getCorefChainBuilderList() {
        return getCorefChainFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder> 
          getCorefChainFieldBuilder() {
        if (corefChainBuilder_ == null) {
          corefChainBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder>(
                  corefChain_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          corefChain_ = null;
        }
        return corefChainBuilder_;
      }

      private java.lang.Object docID_ = "";
      /**
       * <code>optional string docID = 4;</code>
       * @return Whether the docID field is set.
       */
      public boolean hasDocID() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string docID = 4;</code>
       * @return The docID.
       */
      public java.lang.String getDocID() {
        java.lang.Object ref = docID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            docID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string docID = 4;</code>
       * @return The bytes for docID.
       */
      public com.google.protobuf.ByteString
          getDocIDBytes() {
        java.lang.Object ref = docID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string docID = 4;</code>
       * @param value The docID to set.
       * @return This builder for chaining.
       */
      public Builder setDocID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        docID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string docID = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDocID() {
        bitField0_ = (bitField0_ & ~0x00000008);
        docID_ = getDefaultInstance().getDocID();
        onChanged();
        return this;
      }
      /**
       * <code>optional string docID = 4;</code>
       * @param value The bytes for docID to set.
       * @return This builder for chaining.
       */
      public Builder setDocIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        docID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object docDate_ = "";
      /**
       * <code>optional string docDate = 7;</code>
       * @return Whether the docDate field is set.
       */
      public boolean hasDocDate() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string docDate = 7;</code>
       * @return The docDate.
       */
      public java.lang.String getDocDate() {
        java.lang.Object ref = docDate_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            docDate_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string docDate = 7;</code>
       * @return The bytes for docDate.
       */
      public com.google.protobuf.ByteString
          getDocDateBytes() {
        java.lang.Object ref = docDate_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docDate_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string docDate = 7;</code>
       * @param value The docDate to set.
       * @return This builder for chaining.
       */
      public Builder setDocDate(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        docDate_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string docDate = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearDocDate() {
        bitField0_ = (bitField0_ & ~0x00000010);
        docDate_ = getDefaultInstance().getDocDate();
        onChanged();
        return this;
      }
      /**
       * <code>optional string docDate = 7;</code>
       * @param value The bytes for docDate to set.
       * @return This builder for chaining.
       */
      public Builder setDocDateBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        docDate_ = value;
        onChanged();
        return this;
      }

      private long calendar_ ;
      /**
       * <code>optional uint64 calendar = 8;</code>
       * @return Whether the calendar field is set.
       */
      @java.lang.Override
      public boolean hasCalendar() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint64 calendar = 8;</code>
       * @return The calendar.
       */
      @java.lang.Override
      public long getCalendar() {
        return calendar_;
      }
      /**
       * <code>optional uint64 calendar = 8;</code>
       * @param value The calendar to set.
       * @return This builder for chaining.
       */
      public Builder setCalendar(long value) {
        bitField0_ |= 0x00000020;
        calendar_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 calendar = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearCalendar() {
        bitField0_ = (bitField0_ & ~0x00000020);
        calendar_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> sentencelessToken_ =
        java.util.Collections.emptyList();
      private void ensureSentencelessTokenIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          sentencelessToken_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Token>(sentencelessToken_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> sentencelessTokenBuilder_;

      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getSentencelessTokenList() {
        if (sentencelessTokenBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sentencelessToken_);
        } else {
          return sentencelessTokenBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public int getSentencelessTokenCount() {
        if (sentencelessTokenBuilder_ == null) {
          return sentencelessToken_.size();
        } else {
          return sentencelessTokenBuilder_.getCount();
        }
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getSentencelessToken(int index) {
        if (sentencelessTokenBuilder_ == null) {
          return sentencelessToken_.get(index);
        } else {
          return sentencelessTokenBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder setSentencelessToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (sentencelessTokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentencelessTokenIsMutable();
          sentencelessToken_.set(index, value);
          onChanged();
        } else {
          sentencelessTokenBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder setSentencelessToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (sentencelessTokenBuilder_ == null) {
          ensureSentencelessTokenIsMutable();
          sentencelessToken_.set(index, builderForValue.build());
          onChanged();
        } else {
          sentencelessTokenBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder addSentencelessToken(edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (sentencelessTokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentencelessTokenIsMutable();
          sentencelessToken_.add(value);
          onChanged();
        } else {
          sentencelessTokenBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder addSentencelessToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (sentencelessTokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentencelessTokenIsMutable();
          sentencelessToken_.add(index, value);
          onChanged();
        } else {
          sentencelessTokenBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder addSentencelessToken(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (sentencelessTokenBuilder_ == null) {
          ensureSentencelessTokenIsMutable();
          sentencelessToken_.add(builderForValue.build());
          onChanged();
        } else {
          sentencelessTokenBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder addSentencelessToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (sentencelessTokenBuilder_ == null) {
          ensureSentencelessTokenIsMutable();
          sentencelessToken_.add(index, builderForValue.build());
          onChanged();
        } else {
          sentencelessTokenBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder addAllSentencelessToken(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Token> values) {
        if (sentencelessTokenBuilder_ == null) {
          ensureSentencelessTokenIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sentencelessToken_);
          onChanged();
        } else {
          sentencelessTokenBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder clearSentencelessToken() {
        if (sentencelessTokenBuilder_ == null) {
          sentencelessToken_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          sentencelessTokenBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public Builder removeSentencelessToken(int index) {
        if (sentencelessTokenBuilder_ == null) {
          ensureSentencelessTokenIsMutable();
          sentencelessToken_.remove(index);
          onChanged();
        } else {
          sentencelessTokenBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder getSentencelessTokenBuilder(
          int index) {
        return getSentencelessTokenFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getSentencelessTokenOrBuilder(
          int index) {
        if (sentencelessTokenBuilder_ == null) {
          return sentencelessToken_.get(index);  } else {
          return sentencelessTokenBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
           getSentencelessTokenOrBuilderList() {
        if (sentencelessTokenBuilder_ != null) {
          return sentencelessTokenBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sentencelessToken_);
        }
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addSentencelessTokenBuilder() {
        return getSentencelessTokenFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addSentencelessTokenBuilder(
          int index) {
        return getSentencelessTokenFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <pre>
       **
       * A peculiar field, for the corner case when a Document is
       * serialized without any sentences. Otherwise
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token sentencelessToken = 5;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder> 
           getSentencelessTokenBuilderList() {
        return getSentencelessTokenFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
          getSentencelessTokenFieldBuilder() {
        if (sentencelessTokenBuilder_ == null) {
          sentencelessTokenBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder>(
                  sentencelessToken_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          sentencelessToken_ = null;
        }
        return sentencelessTokenBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> character_ =
        java.util.Collections.emptyList();
      private void ensureCharacterIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          character_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Token>(character_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> characterBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getCharacterList() {
        if (characterBuilder_ == null) {
          return java.util.Collections.unmodifiableList(character_);
        } else {
          return characterBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public int getCharacterCount() {
        if (characterBuilder_ == null) {
          return character_.size();
        } else {
          return characterBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getCharacter(int index) {
        if (characterBuilder_ == null) {
          return character_.get(index);
        } else {
          return characterBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder setCharacter(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (characterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCharacterIsMutable();
          character_.set(index, value);
          onChanged();
        } else {
          characterBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder setCharacter(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          character_.set(index, builderForValue.build());
          onChanged();
        } else {
          characterBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder addCharacter(edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (characterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCharacterIsMutable();
          character_.add(value);
          onChanged();
        } else {
          characterBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder addCharacter(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (characterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCharacterIsMutable();
          character_.add(index, value);
          onChanged();
        } else {
          characterBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder addCharacter(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          character_.add(builderForValue.build());
          onChanged();
        } else {
          characterBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder addCharacter(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          character_.add(index, builderForValue.build());
          onChanged();
        } else {
          characterBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder addAllCharacter(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Token> values) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, character_);
          onChanged();
        } else {
          characterBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder clearCharacter() {
        if (characterBuilder_ == null) {
          character_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          characterBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public Builder removeCharacter(int index) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          character_.remove(index);
          onChanged();
        } else {
          characterBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder getCharacterBuilder(
          int index) {
        return getCharacterFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getCharacterOrBuilder(
          int index) {
        if (characterBuilder_ == null) {
          return character_.get(index);  } else {
          return characterBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
           getCharacterOrBuilderList() {
        if (characterBuilder_ != null) {
          return characterBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(character_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addCharacterBuilder() {
        return getCharacterFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addCharacterBuilder(
          int index) {
        return getCharacterFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 10;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder> 
           getCharacterBuilderList() {
        return getCharacterFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
          getCharacterFieldBuilder() {
        if (characterBuilder_ == null) {
          characterBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder>(
                  character_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          character_ = null;
        }
        return characterBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> quote_ =
        java.util.Collections.emptyList();
      private void ensureQuoteIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          quote_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote>(quote_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Quote, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> quoteBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> getQuoteList() {
        if (quoteBuilder_ == null) {
          return java.util.Collections.unmodifiableList(quote_);
        } else {
          return quoteBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public int getQuoteCount() {
        if (quoteBuilder_ == null) {
          return quote_.size();
        } else {
          return quoteBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getQuote(int index) {
        if (quoteBuilder_ == null) {
          return quote_.get(index);
        } else {
          return quoteBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder setQuote(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote value) {
        if (quoteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQuoteIsMutable();
          quote_.set(index, value);
          onChanged();
        } else {
          quoteBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder setQuote(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder builderForValue) {
        if (quoteBuilder_ == null) {
          ensureQuoteIsMutable();
          quote_.set(index, builderForValue.build());
          onChanged();
        } else {
          quoteBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder addQuote(edu.stanford.nlp.pipeline.CoreNLPProtos.Quote value) {
        if (quoteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQuoteIsMutable();
          quote_.add(value);
          onChanged();
        } else {
          quoteBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder addQuote(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote value) {
        if (quoteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQuoteIsMutable();
          quote_.add(index, value);
          onChanged();
        } else {
          quoteBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder addQuote(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder builderForValue) {
        if (quoteBuilder_ == null) {
          ensureQuoteIsMutable();
          quote_.add(builderForValue.build());
          onChanged();
        } else {
          quoteBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder addQuote(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder builderForValue) {
        if (quoteBuilder_ == null) {
          ensureQuoteIsMutable();
          quote_.add(index, builderForValue.build());
          onChanged();
        } else {
          quoteBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder addAllQuote(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> values) {
        if (quoteBuilder_ == null) {
          ensureQuoteIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, quote_);
          onChanged();
        } else {
          quoteBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder clearQuote() {
        if (quoteBuilder_ == null) {
          quote_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          quoteBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public Builder removeQuote(int index) {
        if (quoteBuilder_ == null) {
          ensureQuoteIsMutable();
          quote_.remove(index);
          onChanged();
        } else {
          quoteBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder getQuoteBuilder(
          int index) {
        return getQuoteFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder getQuoteOrBuilder(
          int index) {
        if (quoteBuilder_ == null) {
          return quote_.get(index);  } else {
          return quoteBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> 
           getQuoteOrBuilderList() {
        if (quoteBuilder_ != null) {
          return quoteBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(quote_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder addQuoteBuilder() {
        return getQuoteFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder addQuoteBuilder(
          int index) {
        return getQuoteFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quote = 6;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder> 
           getQuoteBuilderList() {
        return getQuoteFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Quote, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> 
          getQuoteFieldBuilder() {
        if (quoteBuilder_ == null) {
          quoteBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Quote, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder>(
                  quote_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          quote_ = null;
        }
        return quoteBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> mentions_ =
        java.util.Collections.emptyList();
      private void ensureMentionsIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          mentions_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention>(mentions_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> mentionsBuilder_;

      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> getMentionsList() {
        if (mentionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mentions_);
        } else {
          return mentionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public int getMentionsCount() {
        if (mentionsBuilder_ == null) {
          return mentions_.size();
        } else {
          return mentionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getMentions(int index) {
        if (mentionsBuilder_ == null) {
          return mentions_.get(index);
        } else {
          return mentionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder setMentions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention value) {
        if (mentionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsIsMutable();
          mentions_.set(index, value);
          onChanged();
        } else {
          mentionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder setMentions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder builderForValue) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          mentions_.set(index, builderForValue.build());
          onChanged();
        } else {
          mentionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder addMentions(edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention value) {
        if (mentionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsIsMutable();
          mentions_.add(value);
          onChanged();
        } else {
          mentionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder addMentions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention value) {
        if (mentionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsIsMutable();
          mentions_.add(index, value);
          onChanged();
        } else {
          mentionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder addMentions(
          edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder builderForValue) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          mentions_.add(builderForValue.build());
          onChanged();
        } else {
          mentionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder addMentions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder builderForValue) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          mentions_.add(index, builderForValue.build());
          onChanged();
        } else {
          mentionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder addAllMentions(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> values) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, mentions_);
          onChanged();
        } else {
          mentionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder clearMentions() {
        if (mentionsBuilder_ == null) {
          mentions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          mentionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public Builder removeMentions(int index) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          mentions_.remove(index);
          onChanged();
        } else {
          mentionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder getMentionsBuilder(
          int index) {
        return getMentionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder getMentionsOrBuilder(
          int index) {
        if (mentionsBuilder_ == null) {
          return mentions_.get(index);  } else {
          return mentionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> 
           getMentionsOrBuilderList() {
        if (mentionsBuilder_ != null) {
          return mentionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mentions_);
        }
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder addMentionsBuilder() {
        return getMentionsFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.getDefaultInstance());
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder addMentionsBuilder(
          int index) {
        return getMentionsFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.getDefaultInstance());
      }
      /**
       * <pre>
       **
       * This field is for entity mentions across the document.
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 9;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder> 
           getMentionsBuilderList() {
        return getMentionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> 
          getMentionsFieldBuilder() {
        if (mentionsBuilder_ == null) {
          mentionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder>(
                  mentions_,
                  ((bitField0_ & 0x00000200) != 0),
                  getParentForChildren(),
                  isClean());
          mentions_ = null;
        }
        return mentionsBuilder_;
      }

      private boolean hasEntityMentionsAnnotation_ ;
      /**
       * <pre>
       * used to differentiate between null and empty list
       * </pre>
       *
       * <code>optional bool hasEntityMentionsAnnotation = 13;</code>
       * @return Whether the hasEntityMentionsAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasHasEntityMentionsAnnotation() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * used to differentiate between null and empty list
       * </pre>
       *
       * <code>optional bool hasEntityMentionsAnnotation = 13;</code>
       * @return The hasEntityMentionsAnnotation.
       */
      @java.lang.Override
      public boolean getHasEntityMentionsAnnotation() {
        return hasEntityMentionsAnnotation_;
      }
      /**
       * <pre>
       * used to differentiate between null and empty list
       * </pre>
       *
       * <code>optional bool hasEntityMentionsAnnotation = 13;</code>
       * @param value The hasEntityMentionsAnnotation to set.
       * @return This builder for chaining.
       */
      public Builder setHasEntityMentionsAnnotation(boolean value) {
        bitField0_ |= 0x00000400;
        hasEntityMentionsAnnotation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * used to differentiate between null and empty list
       * </pre>
       *
       * <code>optional bool hasEntityMentionsAnnotation = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasEntityMentionsAnnotation() {
        bitField0_ = (bitField0_ & ~0x00000400);
        hasEntityMentionsAnnotation_ = false;
        onChanged();
        return this;
      }

      private boolean xmlDoc_ ;
      /**
       * <pre>
       **
       * xml information
       * </pre>
       *
       * <code>optional bool xmlDoc = 11;</code>
       * @return Whether the xmlDoc field is set.
       */
      @java.lang.Override
      public boolean hasXmlDoc() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       **
       * xml information
       * </pre>
       *
       * <code>optional bool xmlDoc = 11;</code>
       * @return The xmlDoc.
       */
      @java.lang.Override
      public boolean getXmlDoc() {
        return xmlDoc_;
      }
      /**
       * <pre>
       **
       * xml information
       * </pre>
       *
       * <code>optional bool xmlDoc = 11;</code>
       * @param value The xmlDoc to set.
       * @return This builder for chaining.
       */
      public Builder setXmlDoc(boolean value) {
        bitField0_ |= 0x00000800;
        xmlDoc_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * xml information
       * </pre>
       *
       * <code>optional bool xmlDoc = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearXmlDoc() {
        bitField0_ = (bitField0_ & ~0x00000800);
        xmlDoc_ = false;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Section> sections_ =
        java.util.Collections.emptyList();
      private void ensureSectionsIsMutable() {
        if (!((bitField0_ & 0x00001000) != 0)) {
          sections_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Section>(sections_);
          bitField0_ |= 0x00001000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Section, edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder> sectionsBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Section> getSectionsList() {
        if (sectionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sections_);
        } else {
          return sectionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public int getSectionsCount() {
        if (sectionsBuilder_ == null) {
          return sections_.size();
        } else {
          return sectionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Section getSections(int index) {
        if (sectionsBuilder_ == null) {
          return sections_.get(index);
        } else {
          return sectionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder setSections(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Section value) {
        if (sectionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSectionsIsMutable();
          sections_.set(index, value);
          onChanged();
        } else {
          sectionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder setSections(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder builderForValue) {
        if (sectionsBuilder_ == null) {
          ensureSectionsIsMutable();
          sections_.set(index, builderForValue.build());
          onChanged();
        } else {
          sectionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder addSections(edu.stanford.nlp.pipeline.CoreNLPProtos.Section value) {
        if (sectionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSectionsIsMutable();
          sections_.add(value);
          onChanged();
        } else {
          sectionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder addSections(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Section value) {
        if (sectionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSectionsIsMutable();
          sections_.add(index, value);
          onChanged();
        } else {
          sectionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder addSections(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder builderForValue) {
        if (sectionsBuilder_ == null) {
          ensureSectionsIsMutable();
          sections_.add(builderForValue.build());
          onChanged();
        } else {
          sectionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder addSections(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder builderForValue) {
        if (sectionsBuilder_ == null) {
          ensureSectionsIsMutable();
          sections_.add(index, builderForValue.build());
          onChanged();
        } else {
          sectionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder addAllSections(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Section> values) {
        if (sectionsBuilder_ == null) {
          ensureSectionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sections_);
          onChanged();
        } else {
          sectionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder clearSections() {
        if (sectionsBuilder_ == null) {
          sections_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          onChanged();
        } else {
          sectionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public Builder removeSections(int index) {
        if (sectionsBuilder_ == null) {
          ensureSectionsIsMutable();
          sections_.remove(index);
          onChanged();
        } else {
          sectionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder getSectionsBuilder(
          int index) {
        return getSectionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder getSectionsOrBuilder(
          int index) {
        if (sectionsBuilder_ == null) {
          return sections_.get(index);  } else {
          return sectionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder> 
           getSectionsOrBuilderList() {
        if (sectionsBuilder_ != null) {
          return sectionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sections_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder addSectionsBuilder() {
        return getSectionsFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Section.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder addSectionsBuilder(
          int index) {
        return getSectionsFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Section.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Section sections = 12;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder> 
           getSectionsBuilderList() {
        return getSectionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Section, edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder> 
          getSectionsFieldBuilder() {
        if (sectionsBuilder_ == null) {
          sectionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Section, edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder>(
                  sections_,
                  ((bitField0_ & 0x00001000) != 0),
                  getParentForChildren(),
                  isClean());
          sections_ = null;
        }
        return sectionsBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> mentionsForCoref_ =
        java.util.Collections.emptyList();
      private void ensureMentionsForCorefIsMutable() {
        if (!((bitField0_ & 0x00002000) != 0)) {
          mentionsForCoref_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention>(mentionsForCoref_);
          bitField0_ |= 0x00002000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Mention, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> mentionsForCorefBuilder_;

      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> getMentionsForCorefList() {
        if (mentionsForCorefBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mentionsForCoref_);
        } else {
          return mentionsForCorefBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public int getMentionsForCorefCount() {
        if (mentionsForCorefBuilder_ == null) {
          return mentionsForCoref_.size();
        } else {
          return mentionsForCorefBuilder_.getCount();
        }
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getMentionsForCoref(int index) {
        if (mentionsForCorefBuilder_ == null) {
          return mentionsForCoref_.get(index);
        } else {
          return mentionsForCorefBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder setMentionsForCoref(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention value) {
        if (mentionsForCorefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.set(index, value);
          onChanged();
        } else {
          mentionsForCorefBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder setMentionsForCoref(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder builderForValue) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.set(index, builderForValue.build());
          onChanged();
        } else {
          mentionsForCorefBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder addMentionsForCoref(edu.stanford.nlp.pipeline.CoreNLPProtos.Mention value) {
        if (mentionsForCorefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.add(value);
          onChanged();
        } else {
          mentionsForCorefBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder addMentionsForCoref(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention value) {
        if (mentionsForCorefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.add(index, value);
          onChanged();
        } else {
          mentionsForCorefBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder addMentionsForCoref(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder builderForValue) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.add(builderForValue.build());
          onChanged();
        } else {
          mentionsForCorefBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder addMentionsForCoref(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder builderForValue) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.add(index, builderForValue.build());
          onChanged();
        } else {
          mentionsForCorefBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder addAllMentionsForCoref(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> values) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, mentionsForCoref_);
          onChanged();
        } else {
          mentionsForCorefBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder clearMentionsForCoref() {
        if (mentionsForCorefBuilder_ == null) {
          mentionsForCoref_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
        } else {
          mentionsForCorefBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public Builder removeMentionsForCoref(int index) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.remove(index);
          onChanged();
        } else {
          mentionsForCorefBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder getMentionsForCorefBuilder(
          int index) {
        return getMentionsForCorefFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder getMentionsForCorefOrBuilder(
          int index) {
        if (mentionsForCorefBuilder_ == null) {
          return mentionsForCoref_.get(index);  } else {
          return mentionsForCorefBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> 
           getMentionsForCorefOrBuilderList() {
        if (mentionsForCorefBuilder_ != null) {
          return mentionsForCorefBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mentionsForCoref_);
        }
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder addMentionsForCorefBuilder() {
        return getMentionsForCorefFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.getDefaultInstance());
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder addMentionsForCorefBuilder(
          int index) {
        return getMentionsForCorefFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.getDefaultInstance());
      }
      /**
       * <pre>
       ** coref mentions for entire document *
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 14;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder> 
           getMentionsForCorefBuilderList() {
        return getMentionsForCorefFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Mention, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> 
          getMentionsForCorefFieldBuilder() {
        if (mentionsForCorefBuilder_ == null) {
          mentionsForCorefBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Mention, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder>(
                  mentionsForCoref_,
                  ((bitField0_ & 0x00002000) != 0),
                  getParentForChildren(),
                  isClean());
          mentionsForCoref_ = null;
        }
        return mentionsForCorefBuilder_;
      }

      private boolean hasCorefMentionAnnotation_ ;
      /**
       * <code>optional bool hasCorefMentionAnnotation = 15;</code>
       * @return Whether the hasCorefMentionAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasHasCorefMentionAnnotation() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <code>optional bool hasCorefMentionAnnotation = 15;</code>
       * @return The hasCorefMentionAnnotation.
       */
      @java.lang.Override
      public boolean getHasCorefMentionAnnotation() {
        return hasCorefMentionAnnotation_;
      }
      /**
       * <code>optional bool hasCorefMentionAnnotation = 15;</code>
       * @param value The hasCorefMentionAnnotation to set.
       * @return This builder for chaining.
       */
      public Builder setHasCorefMentionAnnotation(boolean value) {
        bitField0_ |= 0x00004000;
        hasCorefMentionAnnotation_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool hasCorefMentionAnnotation = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasCorefMentionAnnotation() {
        bitField0_ = (bitField0_ & ~0x00004000);
        hasCorefMentionAnnotation_ = false;
        onChanged();
        return this;
      }

      private boolean hasCorefAnnotation_ ;
      /**
       * <code>optional bool hasCorefAnnotation = 16;</code>
       * @return Whether the hasCorefAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasHasCorefAnnotation() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <code>optional bool hasCorefAnnotation = 16;</code>
       * @return The hasCorefAnnotation.
       */
      @java.lang.Override
      public boolean getHasCorefAnnotation() {
        return hasCorefAnnotation_;
      }
      /**
       * <code>optional bool hasCorefAnnotation = 16;</code>
       * @param value The hasCorefAnnotation to set.
       * @return This builder for chaining.
       */
      public Builder setHasCorefAnnotation(boolean value) {
        bitField0_ |= 0x00008000;
        hasCorefAnnotation_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool hasCorefAnnotation = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasCorefAnnotation() {
        bitField0_ = (bitField0_ & ~0x00008000);
        hasCorefAnnotation_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList corefMentionToEntityMentionMappings_ = emptyIntList();
      private void ensureCorefMentionToEntityMentionMappingsIsMutable() {
        if (!((bitField0_ & 0x00010000) != 0)) {
          corefMentionToEntityMentionMappings_ = mutableCopy(corefMentionToEntityMentionMappings_);
          bitField0_ |= 0x00010000;
         }
      }
      /**
       * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
       * @return A list containing the corefMentionToEntityMentionMappings.
       */
      public java.util.List<java.lang.Integer>
          getCorefMentionToEntityMentionMappingsList() {
        return ((bitField0_ & 0x00010000) != 0) ?
                 java.util.Collections.unmodifiableList(corefMentionToEntityMentionMappings_) : corefMentionToEntityMentionMappings_;
      }
      /**
       * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
       * @return The count of corefMentionToEntityMentionMappings.
       */
      public int getCorefMentionToEntityMentionMappingsCount() {
        return corefMentionToEntityMentionMappings_.size();
      }
      /**
       * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
       * @param index The index of the element to return.
       * @return The corefMentionToEntityMentionMappings at the given index.
       */
      public int getCorefMentionToEntityMentionMappings(int index) {
        return corefMentionToEntityMentionMappings_.getInt(index);
      }
      /**
       * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
       * @param index The index to set the value at.
       * @param value The corefMentionToEntityMentionMappings to set.
       * @return This builder for chaining.
       */
      public Builder setCorefMentionToEntityMentionMappings(
          int index, int value) {
        ensureCorefMentionToEntityMentionMappingsIsMutable();
        corefMentionToEntityMentionMappings_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
       * @param value The corefMentionToEntityMentionMappings to add.
       * @return This builder for chaining.
       */
      public Builder addCorefMentionToEntityMentionMappings(int value) {
        ensureCorefMentionToEntityMentionMappingsIsMutable();
        corefMentionToEntityMentionMappings_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
       * @param values The corefMentionToEntityMentionMappings to add.
       * @return This builder for chaining.
       */
      public Builder addAllCorefMentionToEntityMentionMappings(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureCorefMentionToEntityMentionMappingsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, corefMentionToEntityMentionMappings_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 corefMentionToEntityMentionMappings = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearCorefMentionToEntityMentionMappings() {
        corefMentionToEntityMentionMappings_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList entityMentionToCorefMentionMappings_ = emptyIntList();
      private void ensureEntityMentionToCorefMentionMappingsIsMutable() {
        if (!((bitField0_ & 0x00020000) != 0)) {
          entityMentionToCorefMentionMappings_ = mutableCopy(entityMentionToCorefMentionMappings_);
          bitField0_ |= 0x00020000;
         }
      }
      /**
       * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
       * @return A list containing the entityMentionToCorefMentionMappings.
       */
      public java.util.List<java.lang.Integer>
          getEntityMentionToCorefMentionMappingsList() {
        return ((bitField0_ & 0x00020000) != 0) ?
                 java.util.Collections.unmodifiableList(entityMentionToCorefMentionMappings_) : entityMentionToCorefMentionMappings_;
      }
      /**
       * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
       * @return The count of entityMentionToCorefMentionMappings.
       */
      public int getEntityMentionToCorefMentionMappingsCount() {
        return entityMentionToCorefMentionMappings_.size();
      }
      /**
       * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
       * @param index The index of the element to return.
       * @return The entityMentionToCorefMentionMappings at the given index.
       */
      public int getEntityMentionToCorefMentionMappings(int index) {
        return entityMentionToCorefMentionMappings_.getInt(index);
      }
      /**
       * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
       * @param index The index to set the value at.
       * @param value The entityMentionToCorefMentionMappings to set.
       * @return This builder for chaining.
       */
      public Builder setEntityMentionToCorefMentionMappings(
          int index, int value) {
        ensureEntityMentionToCorefMentionMappingsIsMutable();
        entityMentionToCorefMentionMappings_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
       * @param value The entityMentionToCorefMentionMappings to add.
       * @return This builder for chaining.
       */
      public Builder addEntityMentionToCorefMentionMappings(int value) {
        ensureEntityMentionToCorefMentionMappingsIsMutable();
        entityMentionToCorefMentionMappings_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
       * @param values The entityMentionToCorefMentionMappings to add.
       * @return This builder for chaining.
       */
      public Builder addAllEntityMentionToCorefMentionMappings(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureEntityMentionToCorefMentionMappingsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, entityMentionToCorefMentionMappings_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 entityMentionToCorefMentionMappings = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearEntityMentionToCorefMentionMappings() {
        entityMentionToCorefMentionMappings_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Document)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Document)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Document DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Document();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Document>
        PARSER = new com.google.protobuf.AbstractParser<Document>() {
      @java.lang.Override
      public Document parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Document> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Document> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SentenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Sentence)
      com.google.protobuf.GeneratedMessageV3.
          ExtendableMessageOrBuilder<Sentence> {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> 
        getTokenList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    int getTokenCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getTokenOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
        int index);

    /**
     * <code>required uint32 tokenOffsetBegin = 2;</code>
     * @return Whether the tokenOffsetBegin field is set.
     */
    boolean hasTokenOffsetBegin();
    /**
     * <code>required uint32 tokenOffsetBegin = 2;</code>
     * @return The tokenOffsetBegin.
     */
    int getTokenOffsetBegin();

    /**
     * <code>required uint32 tokenOffsetEnd = 3;</code>
     * @return Whether the tokenOffsetEnd field is set.
     */
    boolean hasTokenOffsetEnd();
    /**
     * <code>required uint32 tokenOffsetEnd = 3;</code>
     * @return The tokenOffsetEnd.
     */
    int getTokenOffsetEnd();

    /**
     * <code>optional uint32 sentenceIndex = 4;</code>
     * @return Whether the sentenceIndex field is set.
     */
    boolean hasSentenceIndex();
    /**
     * <code>optional uint32 sentenceIndex = 4;</code>
     * @return The sentenceIndex.
     */
    int getSentenceIndex();

    /**
     * <code>optional uint32 characterOffsetBegin = 5;</code>
     * @return Whether the characterOffsetBegin field is set.
     */
    boolean hasCharacterOffsetBegin();
    /**
     * <code>optional uint32 characterOffsetBegin = 5;</code>
     * @return The characterOffsetBegin.
     */
    int getCharacterOffsetBegin();

    /**
     * <code>optional uint32 characterOffsetEnd = 6;</code>
     * @return Whether the characterOffsetEnd field is set.
     */
    boolean hasCharacterOffsetEnd();
    /**
     * <code>optional uint32 characterOffsetEnd = 6;</code>
     * @return The characterOffsetEnd.
     */
    int getCharacterOffsetEnd();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
     * @return Whether the parseTree field is set.
     */
    boolean hasParseTree();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
     * @return The parseTree.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getParseTree();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getParseTreeOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
     * @return Whether the binarizedParseTree field is set.
     */
    boolean hasBinarizedParseTree();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
     * @return The binarizedParseTree.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getBinarizedParseTree();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getBinarizedParseTreeOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
     * @return Whether the annotatedParseTree field is set.
     */
    boolean hasAnnotatedParseTree();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
     * @return The annotatedParseTree.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getAnnotatedParseTree();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getAnnotatedParseTreeOrBuilder();

    /**
     * <code>optional string sentiment = 33;</code>
     * @return Whether the sentiment field is set.
     */
    boolean hasSentiment();
    /**
     * <code>optional string sentiment = 33;</code>
     * @return The sentiment.
     */
    java.lang.String getSentiment();
    /**
     * <code>optional string sentiment = 33;</code>
     * @return The bytes for sentiment.
     */
    com.google.protobuf.ByteString
        getSentimentBytes();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> 
        getKBestParseTreesList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getKBestParseTrees(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    int getKBestParseTreesCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
        getKBestParseTreesOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getKBestParseTreesOrBuilder(
        int index);

    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
     * @return Whether the basicDependencies field is set.
     */
    boolean hasBasicDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
     * @return The basicDependencies.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getBasicDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getBasicDependenciesOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
     * @return Whether the collapsedDependencies field is set.
     */
    boolean hasCollapsedDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
     * @return The collapsedDependencies.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getCollapsedDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getCollapsedDependenciesOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
     * @return Whether the collapsedCCProcessedDependencies field is set.
     */
    boolean hasCollapsedCCProcessedDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
     * @return The collapsedCCProcessedDependencies.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getCollapsedCCProcessedDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getCollapsedCCProcessedDependenciesOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
     * @return Whether the alternativeDependencies field is set.
     */
    boolean hasAlternativeDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
     * @return The alternativeDependencies.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getAlternativeDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getAlternativeDependenciesOrBuilder();

    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> 
        getOpenieTripleList();
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getOpenieTriple(int index);
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    int getOpenieTripleCount();
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> 
        getOpenieTripleOrBuilderList();
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder getOpenieTripleOrBuilder(
        int index);

    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> 
        getKbpTripleList();
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getKbpTriple(int index);
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    int getKbpTripleCount();
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> 
        getKbpTripleOrBuilderList();
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder getKbpTripleOrBuilder(
        int index);

    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> 
        getEntailedSentenceList();
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getEntailedSentence(int index);
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    int getEntailedSentenceCount();
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> 
        getEntailedSentenceOrBuilderList();
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder getEntailedSentenceOrBuilder(
        int index);

    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> 
        getEntailedClauseList();
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getEntailedClause(int index);
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    int getEntailedClauseCount();
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> 
        getEntailedClauseOrBuilderList();
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder getEntailedClauseOrBuilder(
        int index);

    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
     * @return Whether the enhancedDependencies field is set.
     */
    boolean hasEnhancedDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
     * @return The enhancedDependencies.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getEnhancedDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getEnhancedDependenciesOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
     * @return Whether the enhancedPlusPlusDependencies field is set.
     */
    boolean hasEnhancedPlusPlusDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
     * @return The enhancedPlusPlusDependencies.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getEnhancedPlusPlusDependencies();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getEnhancedPlusPlusDependenciesOrBuilder();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> 
        getCharacterList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Token getCharacter(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    int getCharacterCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getCharacterOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getCharacterOrBuilder(
        int index);

    /**
     * <code>optional uint32 paragraph = 11;</code>
     * @return Whether the paragraph field is set.
     */
    boolean hasParagraph();
    /**
     * <code>optional uint32 paragraph = 11;</code>
     * @return The paragraph.
     */
    int getParagraph();

    /**
     * <pre>
     * Only needed if we're only saving the sentence.
     * </pre>
     *
     * <code>optional string text = 12;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <pre>
     * Only needed if we're only saving the sentence.
     * </pre>
     *
     * <code>optional string text = 12;</code>
     * @return The text.
     */
    java.lang.String getText();
    /**
     * <pre>
     * Only needed if we're only saving the sentence.
     * </pre>
     *
     * <code>optional string text = 12;</code>
     * @return The bytes for text.
     */
    com.google.protobuf.ByteString
        getTextBytes();

    /**
     * <code>optional uint32 lineNumber = 20;</code>
     * @return Whether the lineNumber field is set.
     */
    boolean hasLineNumber();
    /**
     * <code>optional uint32 lineNumber = 20;</code>
     * @return The lineNumber.
     */
    int getLineNumber();

    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional bool hasRelationAnnotations = 51;</code>
     * @return Whether the hasRelationAnnotations field is set.
     */
    boolean hasHasRelationAnnotations();
    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional bool hasRelationAnnotations = 51;</code>
     * @return The hasRelationAnnotations.
     */
    boolean getHasRelationAnnotations();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> 
        getEntityList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getEntity(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    int getEntityCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> 
        getEntityOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder getEntityOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Relation> 
        getRelationList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Relation getRelation(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    int getRelationCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder> 
        getRelationOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder getRelationOrBuilder(
        int index);

    /**
     * <code>optional bool hasNumerizedTokensAnnotation = 54;</code>
     * @return Whether the hasNumerizedTokensAnnotation field is set.
     */
    boolean hasHasNumerizedTokensAnnotation();
    /**
     * <code>optional bool hasNumerizedTokensAnnotation = 54;</code>
     * @return The hasNumerizedTokensAnnotation.
     */
    boolean getHasNumerizedTokensAnnotation();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> 
        getMentionsList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getMentions(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    int getMentionsCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> 
        getMentionsOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder getMentionsOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> 
        getMentionsForCorefList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getMentionsForCoref(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    int getMentionsForCorefCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> 
        getMentionsForCorefOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder getMentionsForCorefOrBuilder(
        int index);

    /**
     * <code>optional bool hasCorefMentionsAnnotation = 57;</code>
     * @return Whether the hasCorefMentionsAnnotation field is set.
     */
    boolean hasHasCorefMentionsAnnotation();
    /**
     * <code>optional bool hasCorefMentionsAnnotation = 57;</code>
     * @return The hasCorefMentionsAnnotation.
     */
    boolean getHasCorefMentionsAnnotation();

    /**
     * <pre>
     * Useful when storing sentences (e.g. ForEach)
     * </pre>
     *
     * <code>optional string sentenceID = 58;</code>
     * @return Whether the sentenceID field is set.
     */
    boolean hasSentenceID();
    /**
     * <pre>
     * Useful when storing sentences (e.g. ForEach)
     * </pre>
     *
     * <code>optional string sentenceID = 58;</code>
     * @return The sentenceID.
     */
    java.lang.String getSentenceID();
    /**
     * <pre>
     * Useful when storing sentences (e.g. ForEach)
     * </pre>
     *
     * <code>optional string sentenceID = 58;</code>
     * @return The bytes for sentenceID.
     */
    com.google.protobuf.ByteString
        getSentenceIDBytes();

    /**
     * <pre>
     * date of section
     * </pre>
     *
     * <code>optional string sectionDate = 59;</code>
     * @return Whether the sectionDate field is set.
     */
    boolean hasSectionDate();
    /**
     * <pre>
     * date of section
     * </pre>
     *
     * <code>optional string sectionDate = 59;</code>
     * @return The sectionDate.
     */
    java.lang.String getSectionDate();
    /**
     * <pre>
     * date of section
     * </pre>
     *
     * <code>optional string sectionDate = 59;</code>
     * @return The bytes for sectionDate.
     */
    com.google.protobuf.ByteString
        getSectionDateBytes();

    /**
     * <pre>
     * section index for this sentence's section
     * </pre>
     *
     * <code>optional uint32 sectionIndex = 60;</code>
     * @return Whether the sectionIndex field is set.
     */
    boolean hasSectionIndex();
    /**
     * <pre>
     * section index for this sentence's section
     * </pre>
     *
     * <code>optional uint32 sectionIndex = 60;</code>
     * @return The sectionIndex.
     */
    int getSectionIndex();

    /**
     * <pre>
     * name of section
     * </pre>
     *
     * <code>optional string sectionName = 61;</code>
     * @return Whether the sectionName field is set.
     */
    boolean hasSectionName();
    /**
     * <pre>
     * name of section
     * </pre>
     *
     * <code>optional string sectionName = 61;</code>
     * @return The sectionName.
     */
    java.lang.String getSectionName();
    /**
     * <pre>
     * name of section
     * </pre>
     *
     * <code>optional string sectionName = 61;</code>
     * @return The bytes for sectionName.
     */
    com.google.protobuf.ByteString
        getSectionNameBytes();

    /**
     * <pre>
     * author of section
     * </pre>
     *
     * <code>optional string sectionAuthor = 62;</code>
     * @return Whether the sectionAuthor field is set.
     */
    boolean hasSectionAuthor();
    /**
     * <pre>
     * author of section
     * </pre>
     *
     * <code>optional string sectionAuthor = 62;</code>
     * @return The sectionAuthor.
     */
    java.lang.String getSectionAuthor();
    /**
     * <pre>
     * author of section
     * </pre>
     *
     * <code>optional string sectionAuthor = 62;</code>
     * @return The bytes for sectionAuthor.
     */
    com.google.protobuf.ByteString
        getSectionAuthorBytes();

    /**
     * <pre>
     * doc id
     * </pre>
     *
     * <code>optional string docID = 63;</code>
     * @return Whether the docID field is set.
     */
    boolean hasDocID();
    /**
     * <pre>
     * doc id
     * </pre>
     *
     * <code>optional string docID = 63;</code>
     * @return The docID.
     */
    java.lang.String getDocID();
    /**
     * <pre>
     * doc id
     * </pre>
     *
     * <code>optional string docID = 63;</code>
     * @return The bytes for docID.
     */
    com.google.protobuf.ByteString
        getDocIDBytes();

    /**
     * <pre>
     * is this sentence in an xml quote in a post
     * </pre>
     *
     * <code>optional bool sectionQuoted = 64;</code>
     * @return Whether the sectionQuoted field is set.
     */
    boolean hasSectionQuoted();
    /**
     * <pre>
     * is this sentence in an xml quote in a post
     * </pre>
     *
     * <code>optional bool sectionQuoted = 64;</code>
     * @return The sectionQuoted.
     */
    boolean getSectionQuoted();

    /**
     * <pre>
     * check if there are entity mentions
     * </pre>
     *
     * <code>optional bool hasEntityMentionsAnnotation = 65;</code>
     * @return Whether the hasEntityMentionsAnnotation field is set.
     */
    boolean hasHasEntityMentionsAnnotation();
    /**
     * <pre>
     * check if there are entity mentions
     * </pre>
     *
     * <code>optional bool hasEntityMentionsAnnotation = 65;</code>
     * @return The hasEntityMentionsAnnotation.
     */
    boolean getHasEntityMentionsAnnotation();

    /**
     * <pre>
     * check if there are KBP triples
     * </pre>
     *
     * <code>optional bool hasKBPTriplesAnnotation = 68;</code>
     * @return Whether the hasKBPTriplesAnnotation field is set.
     */
    boolean hasHasKBPTriplesAnnotation();
    /**
     * <pre>
     * check if there are KBP triples
     * </pre>
     *
     * <code>optional bool hasKBPTriplesAnnotation = 68;</code>
     * @return The hasKBPTriplesAnnotation.
     */
    boolean getHasKBPTriplesAnnotation();

    /**
     * <pre>
     * check if there are OpenIE triples
     * </pre>
     *
     * <code>optional bool hasOpenieTriplesAnnotation = 69;</code>
     * @return Whether the hasOpenieTriplesAnnotation field is set.
     */
    boolean hasHasOpenieTriplesAnnotation();
    /**
     * <pre>
     * check if there are OpenIE triples
     * </pre>
     *
     * <code>optional bool hasOpenieTriplesAnnotation = 69;</code>
     * @return The hasOpenieTriplesAnnotation.
     */
    boolean getHasOpenieTriplesAnnotation();

    /**
     * <pre>
     * quote stuff
     * </pre>
     *
     * <code>optional uint32 chapterIndex = 66;</code>
     * @return Whether the chapterIndex field is set.
     */
    boolean hasChapterIndex();
    /**
     * <pre>
     * quote stuff
     * </pre>
     *
     * <code>optional uint32 chapterIndex = 66;</code>
     * @return The chapterIndex.
     */
    int getChapterIndex();

    /**
     * <code>optional uint32 paragraphIndex = 67;</code>
     * @return Whether the paragraphIndex field is set.
     */
    boolean hasParagraphIndex();
    /**
     * <code>optional uint32 paragraphIndex = 67;</code>
     * @return The paragraphIndex.
     */
    int getParagraphIndex();

    /**
     * <pre>
     * the quote annotator can soometimes add merged sentences
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
     * @return Whether the enhancedSentence field is set.
     */
    boolean hasEnhancedSentence();
    /**
     * <pre>
     * the quote annotator can soometimes add merged sentences
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
     * @return The enhancedSentence.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getEnhancedSentence();
    /**
     * <pre>
     * the quote annotator can soometimes add merged sentences
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder getEnhancedSentenceOrBuilder();

    /**
     * <pre>
     * speaker stuff
     * </pre>
     *
     * <code>optional string speaker = 71;</code>
     * @return Whether the speaker field is set.
     */
    boolean hasSpeaker();
    /**
     * <pre>
     * speaker stuff
     * </pre>
     *
     * <code>optional string speaker = 71;</code>
     * @return The speaker.
     */
    java.lang.String getSpeaker();
    /**
     * <pre>
     * speaker stuff
     * </pre>
     *
     * <code>optional string speaker = 71;</code>
     * @return The bytes for speaker.
     */
    com.google.protobuf.ByteString
        getSpeakerBytes();

    /**
     * <pre>
     * The type of speaker speaking this sentence
     * </pre>
     *
     * <code>optional string speakerType = 72;</code>
     * @return Whether the speakerType field is set.
     */
    boolean hasSpeakerType();
    /**
     * <pre>
     * The type of speaker speaking this sentence
     * </pre>
     *
     * <code>optional string speakerType = 72;</code>
     * @return The speakerType.
     */
    java.lang.String getSpeakerType();
    /**
     * <pre>
     * The type of speaker speaking this sentence
     * </pre>
     *
     * <code>optional string speakerType = 72;</code>
     * @return The bytes for speakerType.
     */
    com.google.protobuf.ByteString
        getSpeakerTypeBytes();
  }
  /**
   * <pre>
   * The serialized version of a CoreMap representing a sentence.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Sentence}
   */
  public static final class Sentence extends
      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
        Sentence> implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Sentence)
      SentenceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Sentence.newBuilder() to construct.
    private Sentence(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, ?> builder) {
      super(builder);
    }
    private Sentence() {
      token_ = java.util.Collections.emptyList();
      sentiment_ = "";
      kBestParseTrees_ = java.util.Collections.emptyList();
      openieTriple_ = java.util.Collections.emptyList();
      kbpTriple_ = java.util.Collections.emptyList();
      entailedSentence_ = java.util.Collections.emptyList();
      entailedClause_ = java.util.Collections.emptyList();
      character_ = java.util.Collections.emptyList();
      text_ = "";
      entity_ = java.util.Collections.emptyList();
      relation_ = java.util.Collections.emptyList();
      mentions_ = java.util.Collections.emptyList();
      mentionsForCoref_ = java.util.Collections.emptyList();
      sentenceID_ = "";
      sectionDate_ = "";
      sectionName_ = "";
      sectionAuthor_ = "";
      docID_ = "";
      speaker_ = "";
      speakerType_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Sentence();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Sentence_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Sentence_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder.class);
    }

    private int bitField0_;
    private int bitField1_;
    public static final int TOKEN_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> token_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getTokenList() {
      return token_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getTokenOrBuilderList() {
      return token_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    @java.lang.Override
    public int getTokenCount() {
      return token_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index) {
      return token_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
        int index) {
      return token_.get(index);
    }

    public static final int TOKENOFFSETBEGIN_FIELD_NUMBER = 2;
    private int tokenOffsetBegin_;
    /**
     * <code>required uint32 tokenOffsetBegin = 2;</code>
     * @return Whether the tokenOffsetBegin field is set.
     */
    @java.lang.Override
    public boolean hasTokenOffsetBegin() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required uint32 tokenOffsetBegin = 2;</code>
     * @return The tokenOffsetBegin.
     */
    @java.lang.Override
    public int getTokenOffsetBegin() {
      return tokenOffsetBegin_;
    }

    public static final int TOKENOFFSETEND_FIELD_NUMBER = 3;
    private int tokenOffsetEnd_;
    /**
     * <code>required uint32 tokenOffsetEnd = 3;</code>
     * @return Whether the tokenOffsetEnd field is set.
     */
    @java.lang.Override
    public boolean hasTokenOffsetEnd() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 tokenOffsetEnd = 3;</code>
     * @return The tokenOffsetEnd.
     */
    @java.lang.Override
    public int getTokenOffsetEnd() {
      return tokenOffsetEnd_;
    }

    public static final int SENTENCEINDEX_FIELD_NUMBER = 4;
    private int sentenceIndex_;
    /**
     * <code>optional uint32 sentenceIndex = 4;</code>
     * @return Whether the sentenceIndex field is set.
     */
    @java.lang.Override
    public boolean hasSentenceIndex() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional uint32 sentenceIndex = 4;</code>
     * @return The sentenceIndex.
     */
    @java.lang.Override
    public int getSentenceIndex() {
      return sentenceIndex_;
    }

    public static final int CHARACTEROFFSETBEGIN_FIELD_NUMBER = 5;
    private int characterOffsetBegin_;
    /**
     * <code>optional uint32 characterOffsetBegin = 5;</code>
     * @return Whether the characterOffsetBegin field is set.
     */
    @java.lang.Override
    public boolean hasCharacterOffsetBegin() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional uint32 characterOffsetBegin = 5;</code>
     * @return The characterOffsetBegin.
     */
    @java.lang.Override
    public int getCharacterOffsetBegin() {
      return characterOffsetBegin_;
    }

    public static final int CHARACTEROFFSETEND_FIELD_NUMBER = 6;
    private int characterOffsetEnd_;
    /**
     * <code>optional uint32 characterOffsetEnd = 6;</code>
     * @return Whether the characterOffsetEnd field is set.
     */
    @java.lang.Override
    public boolean hasCharacterOffsetEnd() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional uint32 characterOffsetEnd = 6;</code>
     * @return The characterOffsetEnd.
     */
    @java.lang.Override
    public int getCharacterOffsetEnd() {
      return characterOffsetEnd_;
    }

    public static final int PARSETREE_FIELD_NUMBER = 7;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseTree_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
     * @return Whether the parseTree field is set.
     */
    @java.lang.Override
    public boolean hasParseTree() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
     * @return The parseTree.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getParseTree() {
      return parseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : parseTree_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getParseTreeOrBuilder() {
      return parseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : parseTree_;
    }

    public static final int BINARIZEDPARSETREE_FIELD_NUMBER = 31;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree binarizedParseTree_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
     * @return Whether the binarizedParseTree field is set.
     */
    @java.lang.Override
    public boolean hasBinarizedParseTree() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
     * @return The binarizedParseTree.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getBinarizedParseTree() {
      return binarizedParseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : binarizedParseTree_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getBinarizedParseTreeOrBuilder() {
      return binarizedParseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : binarizedParseTree_;
    }

    public static final int ANNOTATEDPARSETREE_FIELD_NUMBER = 32;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree annotatedParseTree_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
     * @return Whether the annotatedParseTree field is set.
     */
    @java.lang.Override
    public boolean hasAnnotatedParseTree() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
     * @return The annotatedParseTree.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getAnnotatedParseTree() {
      return annotatedParseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : annotatedParseTree_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getAnnotatedParseTreeOrBuilder() {
      return annotatedParseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : annotatedParseTree_;
    }

    public static final int SENTIMENT_FIELD_NUMBER = 33;
    private volatile java.lang.Object sentiment_;
    /**
     * <code>optional string sentiment = 33;</code>
     * @return Whether the sentiment field is set.
     */
    @java.lang.Override
    public boolean hasSentiment() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional string sentiment = 33;</code>
     * @return The sentiment.
     */
    @java.lang.Override
    public java.lang.String getSentiment() {
      java.lang.Object ref = sentiment_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sentiment_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string sentiment = 33;</code>
     * @return The bytes for sentiment.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSentimentBytes() {
      java.lang.Object ref = sentiment_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sentiment_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KBESTPARSETREES_FIELD_NUMBER = 34;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> kBestParseTrees_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> getKBestParseTreesList() {
      return kBestParseTrees_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
        getKBestParseTreesOrBuilderList() {
      return kBestParseTrees_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    @java.lang.Override
    public int getKBestParseTreesCount() {
      return kBestParseTrees_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getKBestParseTrees(int index) {
      return kBestParseTrees_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getKBestParseTreesOrBuilder(
        int index) {
      return kBestParseTrees_.get(index);
    }

    public static final int BASICDEPENDENCIES_FIELD_NUMBER = 8;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph basicDependencies_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
     * @return Whether the basicDependencies field is set.
     */
    @java.lang.Override
    public boolean hasBasicDependencies() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
     * @return The basicDependencies.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getBasicDependencies() {
      return basicDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : basicDependencies_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getBasicDependenciesOrBuilder() {
      return basicDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : basicDependencies_;
    }

    public static final int COLLAPSEDDEPENDENCIES_FIELD_NUMBER = 9;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph collapsedDependencies_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
     * @return Whether the collapsedDependencies field is set.
     */
    @java.lang.Override
    public boolean hasCollapsedDependencies() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
     * @return The collapsedDependencies.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getCollapsedDependencies() {
      return collapsedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : collapsedDependencies_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getCollapsedDependenciesOrBuilder() {
      return collapsedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : collapsedDependencies_;
    }

    public static final int COLLAPSEDCCPROCESSEDDEPENDENCIES_FIELD_NUMBER = 10;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph collapsedCCProcessedDependencies_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
     * @return Whether the collapsedCCProcessedDependencies field is set.
     */
    @java.lang.Override
    public boolean hasCollapsedCCProcessedDependencies() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
     * @return The collapsedCCProcessedDependencies.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getCollapsedCCProcessedDependencies() {
      return collapsedCCProcessedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : collapsedCCProcessedDependencies_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getCollapsedCCProcessedDependenciesOrBuilder() {
      return collapsedCCProcessedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : collapsedCCProcessedDependencies_;
    }

    public static final int ALTERNATIVEDEPENDENCIES_FIELD_NUMBER = 13;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph alternativeDependencies_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
     * @return Whether the alternativeDependencies field is set.
     */
    @java.lang.Override
    public boolean hasAlternativeDependencies() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
     * @return The alternativeDependencies.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getAlternativeDependencies() {
      return alternativeDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : alternativeDependencies_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getAlternativeDependenciesOrBuilder() {
      return alternativeDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : alternativeDependencies_;
    }

    public static final int OPENIETRIPLE_FIELD_NUMBER = 14;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> openieTriple_;
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> getOpenieTripleList() {
      return openieTriple_;
    }
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> 
        getOpenieTripleOrBuilderList() {
      return openieTriple_;
    }
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    @java.lang.Override
    public int getOpenieTripleCount() {
      return openieTriple_.size();
    }
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getOpenieTriple(int index) {
      return openieTriple_.get(index);
    }
    /**
     * <pre>
     * The OpenIE triples in the sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder getOpenieTripleOrBuilder(
        int index) {
      return openieTriple_.get(index);
    }

    public static final int KBPTRIPLE_FIELD_NUMBER = 16;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> kbpTriple_;
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> getKbpTripleList() {
      return kbpTriple_;
    }
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> 
        getKbpTripleOrBuilderList() {
      return kbpTriple_;
    }
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    @java.lang.Override
    public int getKbpTripleCount() {
      return kbpTriple_.size();
    }
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getKbpTriple(int index) {
      return kbpTriple_.get(index);
    }
    /**
     * <pre>
     * The KBP triples in this sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder getKbpTripleOrBuilder(
        int index) {
      return kbpTriple_.get(index);
    }

    public static final int ENTAILEDSENTENCE_FIELD_NUMBER = 15;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> entailedSentence_;
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> getEntailedSentenceList() {
      return entailedSentence_;
    }
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> 
        getEntailedSentenceOrBuilderList() {
      return entailedSentence_;
    }
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    @java.lang.Override
    public int getEntailedSentenceCount() {
      return entailedSentence_.size();
    }
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getEntailedSentence(int index) {
      return entailedSentence_.get(index);
    }
    /**
     * <pre>
     * The entailed sentences, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder getEntailedSentenceOrBuilder(
        int index) {
      return entailedSentence_.get(index);
    }

    public static final int ENTAILEDCLAUSE_FIELD_NUMBER = 35;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> entailedClause_;
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> getEntailedClauseList() {
      return entailedClause_;
    }
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> 
        getEntailedClauseOrBuilderList() {
      return entailedClause_;
    }
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    @java.lang.Override
    public int getEntailedClauseCount() {
      return entailedClause_.size();
    }
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getEntailedClause(int index) {
      return entailedClause_.get(index);
    }
    /**
     * <pre>
     * The entailed clauses, by natural logic
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder getEntailedClauseOrBuilder(
        int index) {
      return entailedClause_.get(index);
    }

    public static final int ENHANCEDDEPENDENCIES_FIELD_NUMBER = 17;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph enhancedDependencies_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
     * @return Whether the enhancedDependencies field is set.
     */
    @java.lang.Override
    public boolean hasEnhancedDependencies() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
     * @return The enhancedDependencies.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getEnhancedDependencies() {
      return enhancedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : enhancedDependencies_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getEnhancedDependenciesOrBuilder() {
      return enhancedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : enhancedDependencies_;
    }

    public static final int ENHANCEDPLUSPLUSDEPENDENCIES_FIELD_NUMBER = 18;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph enhancedPlusPlusDependencies_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
     * @return Whether the enhancedPlusPlusDependencies field is set.
     */
    @java.lang.Override
    public boolean hasEnhancedPlusPlusDependencies() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
     * @return The enhancedPlusPlusDependencies.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getEnhancedPlusPlusDependencies() {
      return enhancedPlusPlusDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : enhancedPlusPlusDependencies_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getEnhancedPlusPlusDependenciesOrBuilder() {
      return enhancedPlusPlusDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : enhancedPlusPlusDependencies_;
    }

    public static final int CHARACTER_FIELD_NUMBER = 19;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> character_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getCharacterList() {
      return character_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getCharacterOrBuilderList() {
      return character_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    @java.lang.Override
    public int getCharacterCount() {
      return character_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getCharacter(int index) {
      return character_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getCharacterOrBuilder(
        int index) {
      return character_.get(index);
    }

    public static final int PARAGRAPH_FIELD_NUMBER = 11;
    private int paragraph_;
    /**
     * <code>optional uint32 paragraph = 11;</code>
     * @return Whether the paragraph field is set.
     */
    @java.lang.Override
    public boolean hasParagraph() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>optional uint32 paragraph = 11;</code>
     * @return The paragraph.
     */
    @java.lang.Override
    public int getParagraph() {
      return paragraph_;
    }

    public static final int TEXT_FIELD_NUMBER = 12;
    private volatile java.lang.Object text_;
    /**
     * <pre>
     * Only needed if we're only saving the sentence.
     * </pre>
     *
     * <code>optional string text = 12;</code>
     * @return Whether the text field is set.
     */
    @java.lang.Override
    public boolean hasText() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <pre>
     * Only needed if we're only saving the sentence.
     * </pre>
     *
     * <code>optional string text = 12;</code>
     * @return The text.
     */
    @java.lang.Override
    public java.lang.String getText() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          text_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Only needed if we're only saving the sentence.
     * </pre>
     *
     * <code>optional string text = 12;</code>
     * @return The bytes for text.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTextBytes() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        text_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LINENUMBER_FIELD_NUMBER = 20;
    private int lineNumber_;
    /**
     * <code>optional uint32 lineNumber = 20;</code>
     * @return Whether the lineNumber field is set.
     */
    @java.lang.Override
    public boolean hasLineNumber() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>optional uint32 lineNumber = 20;</code>
     * @return The lineNumber.
     */
    @java.lang.Override
    public int getLineNumber() {
      return lineNumber_;
    }

    public static final int HASRELATIONANNOTATIONS_FIELD_NUMBER = 51;
    private boolean hasRelationAnnotations_;
    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional bool hasRelationAnnotations = 51;</code>
     * @return Whether the hasRelationAnnotations field is set.
     */
    @java.lang.Override
    public boolean hasHasRelationAnnotations() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional bool hasRelationAnnotations = 51;</code>
     * @return The hasRelationAnnotations.
     */
    @java.lang.Override
    public boolean getHasRelationAnnotations() {
      return hasRelationAnnotations_;
    }

    public static final int ENTITY_FIELD_NUMBER = 52;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> entity_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> getEntityList() {
      return entity_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> 
        getEntityOrBuilderList() {
      return entity_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    @java.lang.Override
    public int getEntityCount() {
      return entity_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getEntity(int index) {
      return entity_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder getEntityOrBuilder(
        int index) {
      return entity_.get(index);
    }

    public static final int RELATION_FIELD_NUMBER = 53;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Relation> relation_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Relation> getRelationList() {
      return relation_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder> 
        getRelationOrBuilderList() {
      return relation_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    @java.lang.Override
    public int getRelationCount() {
      return relation_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation getRelation(int index) {
      return relation_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder getRelationOrBuilder(
        int index) {
      return relation_.get(index);
    }

    public static final int HASNUMERIZEDTOKENSANNOTATION_FIELD_NUMBER = 54;
    private boolean hasNumerizedTokensAnnotation_;
    /**
     * <code>optional bool hasNumerizedTokensAnnotation = 54;</code>
     * @return Whether the hasNumerizedTokensAnnotation field is set.
     */
    @java.lang.Override
    public boolean hasHasNumerizedTokensAnnotation() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <code>optional bool hasNumerizedTokensAnnotation = 54;</code>
     * @return The hasNumerizedTokensAnnotation.
     */
    @java.lang.Override
    public boolean getHasNumerizedTokensAnnotation() {
      return hasNumerizedTokensAnnotation_;
    }

    public static final int MENTIONS_FIELD_NUMBER = 55;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> mentions_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> getMentionsList() {
      return mentions_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> 
        getMentionsOrBuilderList() {
      return mentions_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    @java.lang.Override
    public int getMentionsCount() {
      return mentions_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getMentions(int index) {
      return mentions_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder getMentionsOrBuilder(
        int index) {
      return mentions_.get(index);
    }

    public static final int MENTIONSFORCOREF_FIELD_NUMBER = 56;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> mentionsForCoref_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> getMentionsForCorefList() {
      return mentionsForCoref_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> 
        getMentionsForCorefOrBuilderList() {
      return mentionsForCoref_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    @java.lang.Override
    public int getMentionsForCorefCount() {
      return mentionsForCoref_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getMentionsForCoref(int index) {
      return mentionsForCoref_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder getMentionsForCorefOrBuilder(
        int index) {
      return mentionsForCoref_.get(index);
    }

    public static final int HASCOREFMENTIONSANNOTATION_FIELD_NUMBER = 57;
    private boolean hasCorefMentionsAnnotation_;
    /**
     * <code>optional bool hasCorefMentionsAnnotation = 57;</code>
     * @return Whether the hasCorefMentionsAnnotation field is set.
     */
    @java.lang.Override
    public boolean hasHasCorefMentionsAnnotation() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <code>optional bool hasCorefMentionsAnnotation = 57;</code>
     * @return The hasCorefMentionsAnnotation.
     */
    @java.lang.Override
    public boolean getHasCorefMentionsAnnotation() {
      return hasCorefMentionsAnnotation_;
    }

    public static final int SENTENCEID_FIELD_NUMBER = 58;
    private volatile java.lang.Object sentenceID_;
    /**
     * <pre>
     * Useful when storing sentences (e.g. ForEach)
     * </pre>
     *
     * <code>optional string sentenceID = 58;</code>
     * @return Whether the sentenceID field is set.
     */
    @java.lang.Override
    public boolean hasSentenceID() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * <pre>
     * Useful when storing sentences (e.g. ForEach)
     * </pre>
     *
     * <code>optional string sentenceID = 58;</code>
     * @return The sentenceID.
     */
    @java.lang.Override
    public java.lang.String getSentenceID() {
      java.lang.Object ref = sentenceID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sentenceID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Useful when storing sentences (e.g. ForEach)
     * </pre>
     *
     * <code>optional string sentenceID = 58;</code>
     * @return The bytes for sentenceID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSentenceIDBytes() {
      java.lang.Object ref = sentenceID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sentenceID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECTIONDATE_FIELD_NUMBER = 59;
    private volatile java.lang.Object sectionDate_;
    /**
     * <pre>
     * date of section
     * </pre>
     *
     * <code>optional string sectionDate = 59;</code>
     * @return Whether the sectionDate field is set.
     */
    @java.lang.Override
    public boolean hasSectionDate() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * <pre>
     * date of section
     * </pre>
     *
     * <code>optional string sectionDate = 59;</code>
     * @return The sectionDate.
     */
    @java.lang.Override
    public java.lang.String getSectionDate() {
      java.lang.Object ref = sectionDate_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sectionDate_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * date of section
     * </pre>
     *
     * <code>optional string sectionDate = 59;</code>
     * @return The bytes for sectionDate.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSectionDateBytes() {
      java.lang.Object ref = sectionDate_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sectionDate_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECTIONINDEX_FIELD_NUMBER = 60;
    private int sectionIndex_;
    /**
     * <pre>
     * section index for this sentence's section
     * </pre>
     *
     * <code>optional uint32 sectionIndex = 60;</code>
     * @return Whether the sectionIndex field is set.
     */
    @java.lang.Override
    public boolean hasSectionIndex() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * <pre>
     * section index for this sentence's section
     * </pre>
     *
     * <code>optional uint32 sectionIndex = 60;</code>
     * @return The sectionIndex.
     */
    @java.lang.Override
    public int getSectionIndex() {
      return sectionIndex_;
    }

    public static final int SECTIONNAME_FIELD_NUMBER = 61;
    private volatile java.lang.Object sectionName_;
    /**
     * <pre>
     * name of section
     * </pre>
     *
     * <code>optional string sectionName = 61;</code>
     * @return Whether the sectionName field is set.
     */
    @java.lang.Override
    public boolean hasSectionName() {
      return ((bitField0_ & 0x01000000) != 0);
    }
    /**
     * <pre>
     * name of section
     * </pre>
     *
     * <code>optional string sectionName = 61;</code>
     * @return The sectionName.
     */
    @java.lang.Override
    public java.lang.String getSectionName() {
      java.lang.Object ref = sectionName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sectionName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * name of section
     * </pre>
     *
     * <code>optional string sectionName = 61;</code>
     * @return The bytes for sectionName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSectionNameBytes() {
      java.lang.Object ref = sectionName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sectionName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECTIONAUTHOR_FIELD_NUMBER = 62;
    private volatile java.lang.Object sectionAuthor_;
    /**
     * <pre>
     * author of section
     * </pre>
     *
     * <code>optional string sectionAuthor = 62;</code>
     * @return Whether the sectionAuthor field is set.
     */
    @java.lang.Override
    public boolean hasSectionAuthor() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * <pre>
     * author of section
     * </pre>
     *
     * <code>optional string sectionAuthor = 62;</code>
     * @return The sectionAuthor.
     */
    @java.lang.Override
    public java.lang.String getSectionAuthor() {
      java.lang.Object ref = sectionAuthor_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sectionAuthor_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * author of section
     * </pre>
     *
     * <code>optional string sectionAuthor = 62;</code>
     * @return The bytes for sectionAuthor.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSectionAuthorBytes() {
      java.lang.Object ref = sectionAuthor_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sectionAuthor_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOCID_FIELD_NUMBER = 63;
    private volatile java.lang.Object docID_;
    /**
     * <pre>
     * doc id
     * </pre>
     *
     * <code>optional string docID = 63;</code>
     * @return Whether the docID field is set.
     */
    @java.lang.Override
    public boolean hasDocID() {
      return ((bitField0_ & 0x04000000) != 0);
    }
    /**
     * <pre>
     * doc id
     * </pre>
     *
     * <code>optional string docID = 63;</code>
     * @return The docID.
     */
    @java.lang.Override
    public java.lang.String getDocID() {
      java.lang.Object ref = docID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          docID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * doc id
     * </pre>
     *
     * <code>optional string docID = 63;</code>
     * @return The bytes for docID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDocIDBytes() {
      java.lang.Object ref = docID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECTIONQUOTED_FIELD_NUMBER = 64;
    private boolean sectionQuoted_;
    /**
     * <pre>
     * is this sentence in an xml quote in a post
     * </pre>
     *
     * <code>optional bool sectionQuoted = 64;</code>
     * @return Whether the sectionQuoted field is set.
     */
    @java.lang.Override
    public boolean hasSectionQuoted() {
      return ((bitField0_ & 0x08000000) != 0);
    }
    /**
     * <pre>
     * is this sentence in an xml quote in a post
     * </pre>
     *
     * <code>optional bool sectionQuoted = 64;</code>
     * @return The sectionQuoted.
     */
    @java.lang.Override
    public boolean getSectionQuoted() {
      return sectionQuoted_;
    }

    public static final int HASENTITYMENTIONSANNOTATION_FIELD_NUMBER = 65;
    private boolean hasEntityMentionsAnnotation_;
    /**
     * <pre>
     * check if there are entity mentions
     * </pre>
     *
     * <code>optional bool hasEntityMentionsAnnotation = 65;</code>
     * @return Whether the hasEntityMentionsAnnotation field is set.
     */
    @java.lang.Override
    public boolean hasHasEntityMentionsAnnotation() {
      return ((bitField0_ & 0x10000000) != 0);
    }
    /**
     * <pre>
     * check if there are entity mentions
     * </pre>
     *
     * <code>optional bool hasEntityMentionsAnnotation = 65;</code>
     * @return The hasEntityMentionsAnnotation.
     */
    @java.lang.Override
    public boolean getHasEntityMentionsAnnotation() {
      return hasEntityMentionsAnnotation_;
    }

    public static final int HASKBPTRIPLESANNOTATION_FIELD_NUMBER = 68;
    private boolean hasKBPTriplesAnnotation_;
    /**
     * <pre>
     * check if there are KBP triples
     * </pre>
     *
     * <code>optional bool hasKBPTriplesAnnotation = 68;</code>
     * @return Whether the hasKBPTriplesAnnotation field is set.
     */
    @java.lang.Override
    public boolean hasHasKBPTriplesAnnotation() {
      return ((bitField0_ & 0x20000000) != 0);
    }
    /**
     * <pre>
     * check if there are KBP triples
     * </pre>
     *
     * <code>optional bool hasKBPTriplesAnnotation = 68;</code>
     * @return The hasKBPTriplesAnnotation.
     */
    @java.lang.Override
    public boolean getHasKBPTriplesAnnotation() {
      return hasKBPTriplesAnnotation_;
    }

    public static final int HASOPENIETRIPLESANNOTATION_FIELD_NUMBER = 69;
    private boolean hasOpenieTriplesAnnotation_;
    /**
     * <pre>
     * check if there are OpenIE triples
     * </pre>
     *
     * <code>optional bool hasOpenieTriplesAnnotation = 69;</code>
     * @return Whether the hasOpenieTriplesAnnotation field is set.
     */
    @java.lang.Override
    public boolean hasHasOpenieTriplesAnnotation() {
      return ((bitField0_ & 0x40000000) != 0);
    }
    /**
     * <pre>
     * check if there are OpenIE triples
     * </pre>
     *
     * <code>optional bool hasOpenieTriplesAnnotation = 69;</code>
     * @return The hasOpenieTriplesAnnotation.
     */
    @java.lang.Override
    public boolean getHasOpenieTriplesAnnotation() {
      return hasOpenieTriplesAnnotation_;
    }

    public static final int CHAPTERINDEX_FIELD_NUMBER = 66;
    private int chapterIndex_;
    /**
     * <pre>
     * quote stuff
     * </pre>
     *
     * <code>optional uint32 chapterIndex = 66;</code>
     * @return Whether the chapterIndex field is set.
     */
    @java.lang.Override
    public boolean hasChapterIndex() {
      return ((bitField0_ & 0x80000000) != 0);
    }
    /**
     * <pre>
     * quote stuff
     * </pre>
     *
     * <code>optional uint32 chapterIndex = 66;</code>
     * @return The chapterIndex.
     */
    @java.lang.Override
    public int getChapterIndex() {
      return chapterIndex_;
    }

    public static final int PARAGRAPHINDEX_FIELD_NUMBER = 67;
    private int paragraphIndex_;
    /**
     * <code>optional uint32 paragraphIndex = 67;</code>
     * @return Whether the paragraphIndex field is set.
     */
    @java.lang.Override
    public boolean hasParagraphIndex() {
      return ((bitField1_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint32 paragraphIndex = 67;</code>
     * @return The paragraphIndex.
     */
    @java.lang.Override
    public int getParagraphIndex() {
      return paragraphIndex_;
    }

    public static final int ENHANCEDSENTENCE_FIELD_NUMBER = 70;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence enhancedSentence_;
    /**
     * <pre>
     * the quote annotator can soometimes add merged sentences
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
     * @return Whether the enhancedSentence field is set.
     */
    @java.lang.Override
    public boolean hasEnhancedSentence() {
      return ((bitField1_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * the quote annotator can soometimes add merged sentences
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
     * @return The enhancedSentence.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getEnhancedSentence() {
      return enhancedSentence_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance() : enhancedSentence_;
    }
    /**
     * <pre>
     * the quote annotator can soometimes add merged sentences
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder getEnhancedSentenceOrBuilder() {
      return enhancedSentence_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance() : enhancedSentence_;
    }

    public static final int SPEAKER_FIELD_NUMBER = 71;
    private volatile java.lang.Object speaker_;
    /**
     * <pre>
     * speaker stuff
     * </pre>
     *
     * <code>optional string speaker = 71;</code>
     * @return Whether the speaker field is set.
     */
    @java.lang.Override
    public boolean hasSpeaker() {
      return ((bitField1_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * speaker stuff
     * </pre>
     *
     * <code>optional string speaker = 71;</code>
     * @return The speaker.
     */
    @java.lang.Override
    public java.lang.String getSpeaker() {
      java.lang.Object ref = speaker_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          speaker_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * speaker stuff
     * </pre>
     *
     * <code>optional string speaker = 71;</code>
     * @return The bytes for speaker.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSpeakerBytes() {
      java.lang.Object ref = speaker_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        speaker_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SPEAKERTYPE_FIELD_NUMBER = 72;
    private volatile java.lang.Object speakerType_;
    /**
     * <pre>
     * The type of speaker speaking this sentence
     * </pre>
     *
     * <code>optional string speakerType = 72;</code>
     * @return Whether the speakerType field is set.
     */
    @java.lang.Override
    public boolean hasSpeakerType() {
      return ((bitField1_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The type of speaker speaking this sentence
     * </pre>
     *
     * <code>optional string speakerType = 72;</code>
     * @return The speakerType.
     */
    @java.lang.Override
    public java.lang.String getSpeakerType() {
      java.lang.Object ref = speakerType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          speakerType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The type of speaker speaking this sentence
     * </pre>
     *
     * <code>optional string speakerType = 72;</code>
     * @return The bytes for speakerType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSpeakerTypeBytes() {
      java.lang.Object ref = speakerType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        speakerType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTokenOffsetBegin()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTokenOffsetEnd()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getTokenCount(); i++) {
        if (!getToken(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBasicDependencies()) {
        if (!getBasicDependencies().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCollapsedDependencies()) {
        if (!getCollapsedDependencies().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasCollapsedCCProcessedDependencies()) {
        if (!getCollapsedCCProcessedDependencies().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAlternativeDependencies()) {
        if (!getAlternativeDependencies().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getOpenieTripleCount(); i++) {
        if (!getOpenieTriple(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getKbpTripleCount(); i++) {
        if (!getKbpTriple(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasEnhancedDependencies()) {
        if (!getEnhancedDependencies().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasEnhancedPlusPlusDependencies()) {
        if (!getEnhancedPlusPlusDependencies().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getCharacterCount(); i++) {
        if (!getCharacter(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getMentionsCount(); i++) {
        if (!getMentions(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasEnhancedSentence()) {
        if (!getEnhancedSentence().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .ExtendableMessage<edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence>.ExtensionWriter
          extensionWriter = newExtensionWriter();
      for (int i = 0; i < token_.size(); i++) {
        output.writeMessage(1, token_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(2, tokenOffsetBegin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(3, tokenOffsetEnd_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(4, sentenceIndex_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(5, characterOffsetBegin_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt32(6, characterOffsetEnd_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(7, getParseTree());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeMessage(8, getBasicDependencies());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeMessage(9, getCollapsedDependencies());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeMessage(10, getCollapsedCCProcessedDependencies());
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeUInt32(11, paragraph_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, text_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeMessage(13, getAlternativeDependencies());
      }
      for (int i = 0; i < openieTriple_.size(); i++) {
        output.writeMessage(14, openieTriple_.get(i));
      }
      for (int i = 0; i < entailedSentence_.size(); i++) {
        output.writeMessage(15, entailedSentence_.get(i));
      }
      for (int i = 0; i < kbpTriple_.size(); i++) {
        output.writeMessage(16, kbpTriple_.get(i));
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeMessage(17, getEnhancedDependencies());
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeMessage(18, getEnhancedPlusPlusDependencies());
      }
      for (int i = 0; i < character_.size(); i++) {
        output.writeMessage(19, character_.get(i));
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        output.writeUInt32(20, lineNumber_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(31, getBinarizedParseTree());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(32, getAnnotatedParseTree());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 33, sentiment_);
      }
      for (int i = 0; i < kBestParseTrees_.size(); i++) {
        output.writeMessage(34, kBestParseTrees_.get(i));
      }
      for (int i = 0; i < entailedClause_.size(); i++) {
        output.writeMessage(35, entailedClause_.get(i));
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeBool(51, hasRelationAnnotations_);
      }
      for (int i = 0; i < entity_.size(); i++) {
        output.writeMessage(52, entity_.get(i));
      }
      for (int i = 0; i < relation_.size(); i++) {
        output.writeMessage(53, relation_.get(i));
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeBool(54, hasNumerizedTokensAnnotation_);
      }
      for (int i = 0; i < mentions_.size(); i++) {
        output.writeMessage(55, mentions_.get(i));
      }
      for (int i = 0; i < mentionsForCoref_.size(); i++) {
        output.writeMessage(56, mentionsForCoref_.get(i));
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeBool(57, hasCorefMentionsAnnotation_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 58, sentenceID_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 59, sectionDate_);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        output.writeUInt32(60, sectionIndex_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 61, sectionName_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 62, sectionAuthor_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 63, docID_);
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        output.writeBool(64, sectionQuoted_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        output.writeBool(65, hasEntityMentionsAnnotation_);
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        output.writeUInt32(66, chapterIndex_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        output.writeUInt32(67, paragraphIndex_);
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        output.writeBool(68, hasKBPTriplesAnnotation_);
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        output.writeBool(69, hasOpenieTriplesAnnotation_);
      }
      if (((bitField1_ & 0x00000002) != 0)) {
        output.writeMessage(70, getEnhancedSentence());
      }
      if (((bitField1_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 71, speaker_);
      }
      if (((bitField1_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 72, speakerType_);
      }
      extensionWriter.writeUntil(256, output);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < token_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, token_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, tokenOffsetBegin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, tokenOffsetEnd_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, sentenceIndex_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, characterOffsetBegin_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, characterOffsetEnd_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getParseTree());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getBasicDependencies());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getCollapsedDependencies());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getCollapsedCCProcessedDependencies());
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(11, paragraph_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, text_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, getAlternativeDependencies());
      }
      for (int i = 0; i < openieTriple_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, openieTriple_.get(i));
      }
      for (int i = 0; i < entailedSentence_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, entailedSentence_.get(i));
      }
      for (int i = 0; i < kbpTriple_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, kbpTriple_.get(i));
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, getEnhancedDependencies());
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, getEnhancedPlusPlusDependencies());
      }
      for (int i = 0; i < character_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, character_.get(i));
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(20, lineNumber_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(31, getBinarizedParseTree());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(32, getAnnotatedParseTree());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33, sentiment_);
      }
      for (int i = 0; i < kBestParseTrees_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(34, kBestParseTrees_.get(i));
      }
      for (int i = 0; i < entailedClause_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(35, entailedClause_.get(i));
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(51, hasRelationAnnotations_);
      }
      for (int i = 0; i < entity_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(52, entity_.get(i));
      }
      for (int i = 0; i < relation_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(53, relation_.get(i));
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(54, hasNumerizedTokensAnnotation_);
      }
      for (int i = 0; i < mentions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(55, mentions_.get(i));
      }
      for (int i = 0; i < mentionsForCoref_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(56, mentionsForCoref_.get(i));
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(57, hasCorefMentionsAnnotation_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(58, sentenceID_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(59, sectionDate_);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(60, sectionIndex_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(61, sectionName_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(62, sectionAuthor_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(63, docID_);
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(64, sectionQuoted_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(65, hasEntityMentionsAnnotation_);
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(66, chapterIndex_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(67, paragraphIndex_);
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(68, hasKBPTriplesAnnotation_);
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(69, hasOpenieTriplesAnnotation_);
      }
      if (((bitField1_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(70, getEnhancedSentence());
      }
      if (((bitField1_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(71, speaker_);
      }
      if (((bitField1_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(72, speakerType_);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence) obj;

      if (!getTokenList()
          .equals(other.getTokenList())) return false;
      if (hasTokenOffsetBegin() != other.hasTokenOffsetBegin()) return false;
      if (hasTokenOffsetBegin()) {
        if (getTokenOffsetBegin()
            != other.getTokenOffsetBegin()) return false;
      }
      if (hasTokenOffsetEnd() != other.hasTokenOffsetEnd()) return false;
      if (hasTokenOffsetEnd()) {
        if (getTokenOffsetEnd()
            != other.getTokenOffsetEnd()) return false;
      }
      if (hasSentenceIndex() != other.hasSentenceIndex()) return false;
      if (hasSentenceIndex()) {
        if (getSentenceIndex()
            != other.getSentenceIndex()) return false;
      }
      if (hasCharacterOffsetBegin() != other.hasCharacterOffsetBegin()) return false;
      if (hasCharacterOffsetBegin()) {
        if (getCharacterOffsetBegin()
            != other.getCharacterOffsetBegin()) return false;
      }
      if (hasCharacterOffsetEnd() != other.hasCharacterOffsetEnd()) return false;
      if (hasCharacterOffsetEnd()) {
        if (getCharacterOffsetEnd()
            != other.getCharacterOffsetEnd()) return false;
      }
      if (hasParseTree() != other.hasParseTree()) return false;
      if (hasParseTree()) {
        if (!getParseTree()
            .equals(other.getParseTree())) return false;
      }
      if (hasBinarizedParseTree() != other.hasBinarizedParseTree()) return false;
      if (hasBinarizedParseTree()) {
        if (!getBinarizedParseTree()
            .equals(other.getBinarizedParseTree())) return false;
      }
      if (hasAnnotatedParseTree() != other.hasAnnotatedParseTree()) return false;
      if (hasAnnotatedParseTree()) {
        if (!getAnnotatedParseTree()
            .equals(other.getAnnotatedParseTree())) return false;
      }
      if (hasSentiment() != other.hasSentiment()) return false;
      if (hasSentiment()) {
        if (!getSentiment()
            .equals(other.getSentiment())) return false;
      }
      if (!getKBestParseTreesList()
          .equals(other.getKBestParseTreesList())) return false;
      if (hasBasicDependencies() != other.hasBasicDependencies()) return false;
      if (hasBasicDependencies()) {
        if (!getBasicDependencies()
            .equals(other.getBasicDependencies())) return false;
      }
      if (hasCollapsedDependencies() != other.hasCollapsedDependencies()) return false;
      if (hasCollapsedDependencies()) {
        if (!getCollapsedDependencies()
            .equals(other.getCollapsedDependencies())) return false;
      }
      if (hasCollapsedCCProcessedDependencies() != other.hasCollapsedCCProcessedDependencies()) return false;
      if (hasCollapsedCCProcessedDependencies()) {
        if (!getCollapsedCCProcessedDependencies()
            .equals(other.getCollapsedCCProcessedDependencies())) return false;
      }
      if (hasAlternativeDependencies() != other.hasAlternativeDependencies()) return false;
      if (hasAlternativeDependencies()) {
        if (!getAlternativeDependencies()
            .equals(other.getAlternativeDependencies())) return false;
      }
      if (!getOpenieTripleList()
          .equals(other.getOpenieTripleList())) return false;
      if (!getKbpTripleList()
          .equals(other.getKbpTripleList())) return false;
      if (!getEntailedSentenceList()
          .equals(other.getEntailedSentenceList())) return false;
      if (!getEntailedClauseList()
          .equals(other.getEntailedClauseList())) return false;
      if (hasEnhancedDependencies() != other.hasEnhancedDependencies()) return false;
      if (hasEnhancedDependencies()) {
        if (!getEnhancedDependencies()
            .equals(other.getEnhancedDependencies())) return false;
      }
      if (hasEnhancedPlusPlusDependencies() != other.hasEnhancedPlusPlusDependencies()) return false;
      if (hasEnhancedPlusPlusDependencies()) {
        if (!getEnhancedPlusPlusDependencies()
            .equals(other.getEnhancedPlusPlusDependencies())) return false;
      }
      if (!getCharacterList()
          .equals(other.getCharacterList())) return false;
      if (hasParagraph() != other.hasParagraph()) return false;
      if (hasParagraph()) {
        if (getParagraph()
            != other.getParagraph()) return false;
      }
      if (hasText() != other.hasText()) return false;
      if (hasText()) {
        if (!getText()
            .equals(other.getText())) return false;
      }
      if (hasLineNumber() != other.hasLineNumber()) return false;
      if (hasLineNumber()) {
        if (getLineNumber()
            != other.getLineNumber()) return false;
      }
      if (hasHasRelationAnnotations() != other.hasHasRelationAnnotations()) return false;
      if (hasHasRelationAnnotations()) {
        if (getHasRelationAnnotations()
            != other.getHasRelationAnnotations()) return false;
      }
      if (!getEntityList()
          .equals(other.getEntityList())) return false;
      if (!getRelationList()
          .equals(other.getRelationList())) return false;
      if (hasHasNumerizedTokensAnnotation() != other.hasHasNumerizedTokensAnnotation()) return false;
      if (hasHasNumerizedTokensAnnotation()) {
        if (getHasNumerizedTokensAnnotation()
            != other.getHasNumerizedTokensAnnotation()) return false;
      }
      if (!getMentionsList()
          .equals(other.getMentionsList())) return false;
      if (!getMentionsForCorefList()
          .equals(other.getMentionsForCorefList())) return false;
      if (hasHasCorefMentionsAnnotation() != other.hasHasCorefMentionsAnnotation()) return false;
      if (hasHasCorefMentionsAnnotation()) {
        if (getHasCorefMentionsAnnotation()
            != other.getHasCorefMentionsAnnotation()) return false;
      }
      if (hasSentenceID() != other.hasSentenceID()) return false;
      if (hasSentenceID()) {
        if (!getSentenceID()
            .equals(other.getSentenceID())) return false;
      }
      if (hasSectionDate() != other.hasSectionDate()) return false;
      if (hasSectionDate()) {
        if (!getSectionDate()
            .equals(other.getSectionDate())) return false;
      }
      if (hasSectionIndex() != other.hasSectionIndex()) return false;
      if (hasSectionIndex()) {
        if (getSectionIndex()
            != other.getSectionIndex()) return false;
      }
      if (hasSectionName() != other.hasSectionName()) return false;
      if (hasSectionName()) {
        if (!getSectionName()
            .equals(other.getSectionName())) return false;
      }
      if (hasSectionAuthor() != other.hasSectionAuthor()) return false;
      if (hasSectionAuthor()) {
        if (!getSectionAuthor()
            .equals(other.getSectionAuthor())) return false;
      }
      if (hasDocID() != other.hasDocID()) return false;
      if (hasDocID()) {
        if (!getDocID()
            .equals(other.getDocID())) return false;
      }
      if (hasSectionQuoted() != other.hasSectionQuoted()) return false;
      if (hasSectionQuoted()) {
        if (getSectionQuoted()
            != other.getSectionQuoted()) return false;
      }
      if (hasHasEntityMentionsAnnotation() != other.hasHasEntityMentionsAnnotation()) return false;
      if (hasHasEntityMentionsAnnotation()) {
        if (getHasEntityMentionsAnnotation()
            != other.getHasEntityMentionsAnnotation()) return false;
      }
      if (hasHasKBPTriplesAnnotation() != other.hasHasKBPTriplesAnnotation()) return false;
      if (hasHasKBPTriplesAnnotation()) {
        if (getHasKBPTriplesAnnotation()
            != other.getHasKBPTriplesAnnotation()) return false;
      }
      if (hasHasOpenieTriplesAnnotation() != other.hasHasOpenieTriplesAnnotation()) return false;
      if (hasHasOpenieTriplesAnnotation()) {
        if (getHasOpenieTriplesAnnotation()
            != other.getHasOpenieTriplesAnnotation()) return false;
      }
      if (hasChapterIndex() != other.hasChapterIndex()) return false;
      if (hasChapterIndex()) {
        if (getChapterIndex()
            != other.getChapterIndex()) return false;
      }
      if (hasParagraphIndex() != other.hasParagraphIndex()) return false;
      if (hasParagraphIndex()) {
        if (getParagraphIndex()
            != other.getParagraphIndex()) return false;
      }
      if (hasEnhancedSentence() != other.hasEnhancedSentence()) return false;
      if (hasEnhancedSentence()) {
        if (!getEnhancedSentence()
            .equals(other.getEnhancedSentence())) return false;
      }
      if (hasSpeaker() != other.hasSpeaker()) return false;
      if (hasSpeaker()) {
        if (!getSpeaker()
            .equals(other.getSpeaker())) return false;
      }
      if (hasSpeakerType() != other.hasSpeakerType()) return false;
      if (hasSpeakerType()) {
        if (!getSpeakerType()
            .equals(other.getSpeakerType())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      if (!getExtensionFields().equals(other.getExtensionFields()))
        return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTokenCount() > 0) {
        hash = (37 * hash) + TOKEN_FIELD_NUMBER;
        hash = (53 * hash) + getTokenList().hashCode();
      }
      if (hasTokenOffsetBegin()) {
        hash = (37 * hash) + TOKENOFFSETBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getTokenOffsetBegin();
      }
      if (hasTokenOffsetEnd()) {
        hash = (37 * hash) + TOKENOFFSETEND_FIELD_NUMBER;
        hash = (53 * hash) + getTokenOffsetEnd();
      }
      if (hasSentenceIndex()) {
        hash = (37 * hash) + SENTENCEINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceIndex();
      }
      if (hasCharacterOffsetBegin()) {
        hash = (37 * hash) + CHARACTEROFFSETBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getCharacterOffsetBegin();
      }
      if (hasCharacterOffsetEnd()) {
        hash = (37 * hash) + CHARACTEROFFSETEND_FIELD_NUMBER;
        hash = (53 * hash) + getCharacterOffsetEnd();
      }
      if (hasParseTree()) {
        hash = (37 * hash) + PARSETREE_FIELD_NUMBER;
        hash = (53 * hash) + getParseTree().hashCode();
      }
      if (hasBinarizedParseTree()) {
        hash = (37 * hash) + BINARIZEDPARSETREE_FIELD_NUMBER;
        hash = (53 * hash) + getBinarizedParseTree().hashCode();
      }
      if (hasAnnotatedParseTree()) {
        hash = (37 * hash) + ANNOTATEDPARSETREE_FIELD_NUMBER;
        hash = (53 * hash) + getAnnotatedParseTree().hashCode();
      }
      if (hasSentiment()) {
        hash = (37 * hash) + SENTIMENT_FIELD_NUMBER;
        hash = (53 * hash) + getSentiment().hashCode();
      }
      if (getKBestParseTreesCount() > 0) {
        hash = (37 * hash) + KBESTPARSETREES_FIELD_NUMBER;
        hash = (53 * hash) + getKBestParseTreesList().hashCode();
      }
      if (hasBasicDependencies()) {
        hash = (37 * hash) + BASICDEPENDENCIES_FIELD_NUMBER;
        hash = (53 * hash) + getBasicDependencies().hashCode();
      }
      if (hasCollapsedDependencies()) {
        hash = (37 * hash) + COLLAPSEDDEPENDENCIES_FIELD_NUMBER;
        hash = (53 * hash) + getCollapsedDependencies().hashCode();
      }
      if (hasCollapsedCCProcessedDependencies()) {
        hash = (37 * hash) + COLLAPSEDCCPROCESSEDDEPENDENCIES_FIELD_NUMBER;
        hash = (53 * hash) + getCollapsedCCProcessedDependencies().hashCode();
      }
      if (hasAlternativeDependencies()) {
        hash = (37 * hash) + ALTERNATIVEDEPENDENCIES_FIELD_NUMBER;
        hash = (53 * hash) + getAlternativeDependencies().hashCode();
      }
      if (getOpenieTripleCount() > 0) {
        hash = (37 * hash) + OPENIETRIPLE_FIELD_NUMBER;
        hash = (53 * hash) + getOpenieTripleList().hashCode();
      }
      if (getKbpTripleCount() > 0) {
        hash = (37 * hash) + KBPTRIPLE_FIELD_NUMBER;
        hash = (53 * hash) + getKbpTripleList().hashCode();
      }
      if (getEntailedSentenceCount() > 0) {
        hash = (37 * hash) + ENTAILEDSENTENCE_FIELD_NUMBER;
        hash = (53 * hash) + getEntailedSentenceList().hashCode();
      }
      if (getEntailedClauseCount() > 0) {
        hash = (37 * hash) + ENTAILEDCLAUSE_FIELD_NUMBER;
        hash = (53 * hash) + getEntailedClauseList().hashCode();
      }
      if (hasEnhancedDependencies()) {
        hash = (37 * hash) + ENHANCEDDEPENDENCIES_FIELD_NUMBER;
        hash = (53 * hash) + getEnhancedDependencies().hashCode();
      }
      if (hasEnhancedPlusPlusDependencies()) {
        hash = (37 * hash) + ENHANCEDPLUSPLUSDEPENDENCIES_FIELD_NUMBER;
        hash = (53 * hash) + getEnhancedPlusPlusDependencies().hashCode();
      }
      if (getCharacterCount() > 0) {
        hash = (37 * hash) + CHARACTER_FIELD_NUMBER;
        hash = (53 * hash) + getCharacterList().hashCode();
      }
      if (hasParagraph()) {
        hash = (37 * hash) + PARAGRAPH_FIELD_NUMBER;
        hash = (53 * hash) + getParagraph();
      }
      if (hasText()) {
        hash = (37 * hash) + TEXT_FIELD_NUMBER;
        hash = (53 * hash) + getText().hashCode();
      }
      if (hasLineNumber()) {
        hash = (37 * hash) + LINENUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getLineNumber();
      }
      if (hasHasRelationAnnotations()) {
        hash = (37 * hash) + HASRELATIONANNOTATIONS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasRelationAnnotations());
      }
      if (getEntityCount() > 0) {
        hash = (37 * hash) + ENTITY_FIELD_NUMBER;
        hash = (53 * hash) + getEntityList().hashCode();
      }
      if (getRelationCount() > 0) {
        hash = (37 * hash) + RELATION_FIELD_NUMBER;
        hash = (53 * hash) + getRelationList().hashCode();
      }
      if (hasHasNumerizedTokensAnnotation()) {
        hash = (37 * hash) + HASNUMERIZEDTOKENSANNOTATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasNumerizedTokensAnnotation());
      }
      if (getMentionsCount() > 0) {
        hash = (37 * hash) + MENTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMentionsList().hashCode();
      }
      if (getMentionsForCorefCount() > 0) {
        hash = (37 * hash) + MENTIONSFORCOREF_FIELD_NUMBER;
        hash = (53 * hash) + getMentionsForCorefList().hashCode();
      }
      if (hasHasCorefMentionsAnnotation()) {
        hash = (37 * hash) + HASCOREFMENTIONSANNOTATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasCorefMentionsAnnotation());
      }
      if (hasSentenceID()) {
        hash = (37 * hash) + SENTENCEID_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceID().hashCode();
      }
      if (hasSectionDate()) {
        hash = (37 * hash) + SECTIONDATE_FIELD_NUMBER;
        hash = (53 * hash) + getSectionDate().hashCode();
      }
      if (hasSectionIndex()) {
        hash = (37 * hash) + SECTIONINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getSectionIndex();
      }
      if (hasSectionName()) {
        hash = (37 * hash) + SECTIONNAME_FIELD_NUMBER;
        hash = (53 * hash) + getSectionName().hashCode();
      }
      if (hasSectionAuthor()) {
        hash = (37 * hash) + SECTIONAUTHOR_FIELD_NUMBER;
        hash = (53 * hash) + getSectionAuthor().hashCode();
      }
      if (hasDocID()) {
        hash = (37 * hash) + DOCID_FIELD_NUMBER;
        hash = (53 * hash) + getDocID().hashCode();
      }
      if (hasSectionQuoted()) {
        hash = (37 * hash) + SECTIONQUOTED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSectionQuoted());
      }
      if (hasHasEntityMentionsAnnotation()) {
        hash = (37 * hash) + HASENTITYMENTIONSANNOTATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasEntityMentionsAnnotation());
      }
      if (hasHasKBPTriplesAnnotation()) {
        hash = (37 * hash) + HASKBPTRIPLESANNOTATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasKBPTriplesAnnotation());
      }
      if (hasHasOpenieTriplesAnnotation()) {
        hash = (37 * hash) + HASOPENIETRIPLESANNOTATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasOpenieTriplesAnnotation());
      }
      if (hasChapterIndex()) {
        hash = (37 * hash) + CHAPTERINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getChapterIndex();
      }
      if (hasParagraphIndex()) {
        hash = (37 * hash) + PARAGRAPHINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getParagraphIndex();
      }
      if (hasEnhancedSentence()) {
        hash = (37 * hash) + ENHANCEDSENTENCE_FIELD_NUMBER;
        hash = (53 * hash) + getEnhancedSentence().hashCode();
      }
      if (hasSpeaker()) {
        hash = (37 * hash) + SPEAKER_FIELD_NUMBER;
        hash = (53 * hash) + getSpeaker().hashCode();
      }
      if (hasSpeakerType()) {
        hash = (37 * hash) + SPEAKERTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getSpeakerType().hashCode();
      }
      hash = hashFields(hash, getExtensionFields());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The serialized version of a CoreMap representing a sentence.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Sentence}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Sentence)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Sentence_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Sentence_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTokenFieldBuilder();
          getParseTreeFieldBuilder();
          getBinarizedParseTreeFieldBuilder();
          getAnnotatedParseTreeFieldBuilder();
          getKBestParseTreesFieldBuilder();
          getBasicDependenciesFieldBuilder();
          getCollapsedDependenciesFieldBuilder();
          getCollapsedCCProcessedDependenciesFieldBuilder();
          getAlternativeDependenciesFieldBuilder();
          getOpenieTripleFieldBuilder();
          getKbpTripleFieldBuilder();
          getEntailedSentenceFieldBuilder();
          getEntailedClauseFieldBuilder();
          getEnhancedDependenciesFieldBuilder();
          getEnhancedPlusPlusDependenciesFieldBuilder();
          getCharacterFieldBuilder();
          getEntityFieldBuilder();
          getRelationFieldBuilder();
          getMentionsFieldBuilder();
          getMentionsForCorefFieldBuilder();
          getEnhancedSentenceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (tokenBuilder_ == null) {
          token_ = java.util.Collections.emptyList();
        } else {
          token_ = null;
          tokenBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        tokenOffsetBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        tokenOffsetEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        sentenceIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        characterOffsetBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        characterOffsetEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (parseTreeBuilder_ == null) {
          parseTree_ = null;
        } else {
          parseTreeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (binarizedParseTreeBuilder_ == null) {
          binarizedParseTree_ = null;
        } else {
          binarizedParseTreeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (annotatedParseTreeBuilder_ == null) {
          annotatedParseTree_ = null;
        } else {
          annotatedParseTreeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        sentiment_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        if (kBestParseTreesBuilder_ == null) {
          kBestParseTrees_ = java.util.Collections.emptyList();
        } else {
          kBestParseTrees_ = null;
          kBestParseTreesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        if (basicDependenciesBuilder_ == null) {
          basicDependencies_ = null;
        } else {
          basicDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        if (collapsedDependenciesBuilder_ == null) {
          collapsedDependencies_ = null;
        } else {
          collapsedDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        if (collapsedCCProcessedDependenciesBuilder_ == null) {
          collapsedCCProcessedDependencies_ = null;
        } else {
          collapsedCCProcessedDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00002000);
        if (alternativeDependenciesBuilder_ == null) {
          alternativeDependencies_ = null;
        } else {
          alternativeDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00004000);
        if (openieTripleBuilder_ == null) {
          openieTriple_ = java.util.Collections.emptyList();
        } else {
          openieTriple_ = null;
          openieTripleBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00008000);
        if (kbpTripleBuilder_ == null) {
          kbpTriple_ = java.util.Collections.emptyList();
        } else {
          kbpTriple_ = null;
          kbpTripleBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00010000);
        if (entailedSentenceBuilder_ == null) {
          entailedSentence_ = java.util.Collections.emptyList();
        } else {
          entailedSentence_ = null;
          entailedSentenceBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00020000);
        if (entailedClauseBuilder_ == null) {
          entailedClause_ = java.util.Collections.emptyList();
        } else {
          entailedClause_ = null;
          entailedClauseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00040000);
        if (enhancedDependenciesBuilder_ == null) {
          enhancedDependencies_ = null;
        } else {
          enhancedDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00080000);
        if (enhancedPlusPlusDependenciesBuilder_ == null) {
          enhancedPlusPlusDependencies_ = null;
        } else {
          enhancedPlusPlusDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00100000);
        if (characterBuilder_ == null) {
          character_ = java.util.Collections.emptyList();
        } else {
          character_ = null;
          characterBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00200000);
        paragraph_ = 0;
        bitField0_ = (bitField0_ & ~0x00400000);
        text_ = "";
        bitField0_ = (bitField0_ & ~0x00800000);
        lineNumber_ = 0;
        bitField0_ = (bitField0_ & ~0x01000000);
        hasRelationAnnotations_ = false;
        bitField0_ = (bitField0_ & ~0x02000000);
        if (entityBuilder_ == null) {
          entity_ = java.util.Collections.emptyList();
        } else {
          entity_ = null;
          entityBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x04000000);
        if (relationBuilder_ == null) {
          relation_ = java.util.Collections.emptyList();
        } else {
          relation_ = null;
          relationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x08000000);
        hasNumerizedTokensAnnotation_ = false;
        bitField0_ = (bitField0_ & ~0x10000000);
        if (mentionsBuilder_ == null) {
          mentions_ = java.util.Collections.emptyList();
        } else {
          mentions_ = null;
          mentionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x20000000);
        if (mentionsForCorefBuilder_ == null) {
          mentionsForCoref_ = java.util.Collections.emptyList();
        } else {
          mentionsForCoref_ = null;
          mentionsForCorefBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x40000000);
        hasCorefMentionsAnnotation_ = false;
        bitField0_ = (bitField0_ & ~0x80000000);
        sentenceID_ = "";
        bitField1_ = (bitField1_ & ~0x00000001);
        sectionDate_ = "";
        bitField1_ = (bitField1_ & ~0x00000002);
        sectionIndex_ = 0;
        bitField1_ = (bitField1_ & ~0x00000004);
        sectionName_ = "";
        bitField1_ = (bitField1_ & ~0x00000008);
        sectionAuthor_ = "";
        bitField1_ = (bitField1_ & ~0x00000010);
        docID_ = "";
        bitField1_ = (bitField1_ & ~0x00000020);
        sectionQuoted_ = false;
        bitField1_ = (bitField1_ & ~0x00000040);
        hasEntityMentionsAnnotation_ = false;
        bitField1_ = (bitField1_ & ~0x00000080);
        hasKBPTriplesAnnotation_ = false;
        bitField1_ = (bitField1_ & ~0x00000100);
        hasOpenieTriplesAnnotation_ = false;
        bitField1_ = (bitField1_ & ~0x00000200);
        chapterIndex_ = 0;
        bitField1_ = (bitField1_ & ~0x00000400);
        paragraphIndex_ = 0;
        bitField1_ = (bitField1_ & ~0x00000800);
        if (enhancedSentenceBuilder_ == null) {
          enhancedSentence_ = null;
        } else {
          enhancedSentenceBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00001000);
        speaker_ = "";
        bitField1_ = (bitField1_ & ~0x00002000);
        speakerType_ = "";
        bitField1_ = (bitField1_ & ~0x00004000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Sentence_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence(this);
        int from_bitField0_ = bitField0_;
        int from_bitField1_ = bitField1_;
        int to_bitField0_ = 0;
        int to_bitField1_ = 0;
        if (tokenBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            token_ = java.util.Collections.unmodifiableList(token_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.token_ = token_;
        } else {
          result.token_ = tokenBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.tokenOffsetBegin_ = tokenOffsetBegin_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.tokenOffsetEnd_ = tokenOffsetEnd_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.sentenceIndex_ = sentenceIndex_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.characterOffsetBegin_ = characterOffsetBegin_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.characterOffsetEnd_ = characterOffsetEnd_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          if (parseTreeBuilder_ == null) {
            result.parseTree_ = parseTree_;
          } else {
            result.parseTree_ = parseTreeBuilder_.build();
          }
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          if (binarizedParseTreeBuilder_ == null) {
            result.binarizedParseTree_ = binarizedParseTree_;
          } else {
            result.binarizedParseTree_ = binarizedParseTreeBuilder_.build();
          }
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          if (annotatedParseTreeBuilder_ == null) {
            result.annotatedParseTree_ = annotatedParseTree_;
          } else {
            result.annotatedParseTree_ = annotatedParseTreeBuilder_.build();
          }
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          to_bitField0_ |= 0x00000100;
        }
        result.sentiment_ = sentiment_;
        if (kBestParseTreesBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0)) {
            kBestParseTrees_ = java.util.Collections.unmodifiableList(kBestParseTrees_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.kBestParseTrees_ = kBestParseTrees_;
        } else {
          result.kBestParseTrees_ = kBestParseTreesBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          if (basicDependenciesBuilder_ == null) {
            result.basicDependencies_ = basicDependencies_;
          } else {
            result.basicDependencies_ = basicDependenciesBuilder_.build();
          }
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          if (collapsedDependenciesBuilder_ == null) {
            result.collapsedDependencies_ = collapsedDependencies_;
          } else {
            result.collapsedDependencies_ = collapsedDependenciesBuilder_.build();
          }
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          if (collapsedCCProcessedDependenciesBuilder_ == null) {
            result.collapsedCCProcessedDependencies_ = collapsedCCProcessedDependencies_;
          } else {
            result.collapsedCCProcessedDependencies_ = collapsedCCProcessedDependenciesBuilder_.build();
          }
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          if (alternativeDependenciesBuilder_ == null) {
            result.alternativeDependencies_ = alternativeDependencies_;
          } else {
            result.alternativeDependencies_ = alternativeDependenciesBuilder_.build();
          }
          to_bitField0_ |= 0x00001000;
        }
        if (openieTripleBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0)) {
            openieTriple_ = java.util.Collections.unmodifiableList(openieTriple_);
            bitField0_ = (bitField0_ & ~0x00008000);
          }
          result.openieTriple_ = openieTriple_;
        } else {
          result.openieTriple_ = openieTripleBuilder_.build();
        }
        if (kbpTripleBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0)) {
            kbpTriple_ = java.util.Collections.unmodifiableList(kbpTriple_);
            bitField0_ = (bitField0_ & ~0x00010000);
          }
          result.kbpTriple_ = kbpTriple_;
        } else {
          result.kbpTriple_ = kbpTripleBuilder_.build();
        }
        if (entailedSentenceBuilder_ == null) {
          if (((bitField0_ & 0x00020000) != 0)) {
            entailedSentence_ = java.util.Collections.unmodifiableList(entailedSentence_);
            bitField0_ = (bitField0_ & ~0x00020000);
          }
          result.entailedSentence_ = entailedSentence_;
        } else {
          result.entailedSentence_ = entailedSentenceBuilder_.build();
        }
        if (entailedClauseBuilder_ == null) {
          if (((bitField0_ & 0x00040000) != 0)) {
            entailedClause_ = java.util.Collections.unmodifiableList(entailedClause_);
            bitField0_ = (bitField0_ & ~0x00040000);
          }
          result.entailedClause_ = entailedClause_;
        } else {
          result.entailedClause_ = entailedClauseBuilder_.build();
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          if (enhancedDependenciesBuilder_ == null) {
            result.enhancedDependencies_ = enhancedDependencies_;
          } else {
            result.enhancedDependencies_ = enhancedDependenciesBuilder_.build();
          }
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          if (enhancedPlusPlusDependenciesBuilder_ == null) {
            result.enhancedPlusPlusDependencies_ = enhancedPlusPlusDependencies_;
          } else {
            result.enhancedPlusPlusDependencies_ = enhancedPlusPlusDependenciesBuilder_.build();
          }
          to_bitField0_ |= 0x00004000;
        }
        if (characterBuilder_ == null) {
          if (((bitField0_ & 0x00200000) != 0)) {
            character_ = java.util.Collections.unmodifiableList(character_);
            bitField0_ = (bitField0_ & ~0x00200000);
          }
          result.character_ = character_;
        } else {
          result.character_ = characterBuilder_.build();
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          result.paragraph_ = paragraph_;
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00800000) != 0)) {
          to_bitField0_ |= 0x00010000;
        }
        result.text_ = text_;
        if (((from_bitField0_ & 0x01000000) != 0)) {
          result.lineNumber_ = lineNumber_;
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x02000000) != 0)) {
          result.hasRelationAnnotations_ = hasRelationAnnotations_;
          to_bitField0_ |= 0x00040000;
        }
        if (entityBuilder_ == null) {
          if (((bitField0_ & 0x04000000) != 0)) {
            entity_ = java.util.Collections.unmodifiableList(entity_);
            bitField0_ = (bitField0_ & ~0x04000000);
          }
          result.entity_ = entity_;
        } else {
          result.entity_ = entityBuilder_.build();
        }
        if (relationBuilder_ == null) {
          if (((bitField0_ & 0x08000000) != 0)) {
            relation_ = java.util.Collections.unmodifiableList(relation_);
            bitField0_ = (bitField0_ & ~0x08000000);
          }
          result.relation_ = relation_;
        } else {
          result.relation_ = relationBuilder_.build();
        }
        if (((from_bitField0_ & 0x10000000) != 0)) {
          result.hasNumerizedTokensAnnotation_ = hasNumerizedTokensAnnotation_;
          to_bitField0_ |= 0x00080000;
        }
        if (mentionsBuilder_ == null) {
          if (((bitField0_ & 0x20000000) != 0)) {
            mentions_ = java.util.Collections.unmodifiableList(mentions_);
            bitField0_ = (bitField0_ & ~0x20000000);
          }
          result.mentions_ = mentions_;
        } else {
          result.mentions_ = mentionsBuilder_.build();
        }
        if (mentionsForCorefBuilder_ == null) {
          if (((bitField0_ & 0x40000000) != 0)) {
            mentionsForCoref_ = java.util.Collections.unmodifiableList(mentionsForCoref_);
            bitField0_ = (bitField0_ & ~0x40000000);
          }
          result.mentionsForCoref_ = mentionsForCoref_;
        } else {
          result.mentionsForCoref_ = mentionsForCorefBuilder_.build();
        }
        if (((from_bitField0_ & 0x80000000) != 0)) {
          result.hasCorefMentionsAnnotation_ = hasCorefMentionsAnnotation_;
          to_bitField0_ |= 0x00100000;
        }
        if (((from_bitField1_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00200000;
        }
        result.sentenceID_ = sentenceID_;
        if (((from_bitField1_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00400000;
        }
        result.sectionDate_ = sectionDate_;
        if (((from_bitField1_ & 0x00000004) != 0)) {
          result.sectionIndex_ = sectionIndex_;
          to_bitField0_ |= 0x00800000;
        }
        if (((from_bitField1_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x01000000;
        }
        result.sectionName_ = sectionName_;
        if (((from_bitField1_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x02000000;
        }
        result.sectionAuthor_ = sectionAuthor_;
        if (((from_bitField1_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x04000000;
        }
        result.docID_ = docID_;
        if (((from_bitField1_ & 0x00000040) != 0)) {
          result.sectionQuoted_ = sectionQuoted_;
          to_bitField0_ |= 0x08000000;
        }
        if (((from_bitField1_ & 0x00000080) != 0)) {
          result.hasEntityMentionsAnnotation_ = hasEntityMentionsAnnotation_;
          to_bitField0_ |= 0x10000000;
        }
        if (((from_bitField1_ & 0x00000100) != 0)) {
          result.hasKBPTriplesAnnotation_ = hasKBPTriplesAnnotation_;
          to_bitField0_ |= 0x20000000;
        }
        if (((from_bitField1_ & 0x00000200) != 0)) {
          result.hasOpenieTriplesAnnotation_ = hasOpenieTriplesAnnotation_;
          to_bitField0_ |= 0x40000000;
        }
        if (((from_bitField1_ & 0x00000400) != 0)) {
          result.chapterIndex_ = chapterIndex_;
          to_bitField0_ |= 0x80000000;
        }
        if (((from_bitField1_ & 0x00000800) != 0)) {
          result.paragraphIndex_ = paragraphIndex_;
          to_bitField1_ |= 0x00000001;
        }
        if (((from_bitField1_ & 0x00001000) != 0)) {
          if (enhancedSentenceBuilder_ == null) {
            result.enhancedSentence_ = enhancedSentence_;
          } else {
            result.enhancedSentence_ = enhancedSentenceBuilder_.build();
          }
          to_bitField1_ |= 0x00000002;
        }
        if (((from_bitField1_ & 0x00002000) != 0)) {
          to_bitField1_ |= 0x00000004;
        }
        result.speaker_ = speaker_;
        if (((from_bitField1_ & 0x00004000) != 0)) {
          to_bitField1_ |= 0x00000008;
        }
        result.speakerType_ = speakerType_;
        result.bitField0_ = to_bitField0_;
        result.bitField1_ = to_bitField1_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public <Type> Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, Type> extension,
          Type value) {
        return super.setExtension(extension, value);
      }
      @java.lang.Override
      public <Type> Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, java.util.List<Type>> extension,
          int index, Type value) {
        return super.setExtension(extension, index, value);
      }
      @java.lang.Override
      public <Type> Builder addExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, java.util.List<Type>> extension,
          Type value) {
        return super.addExtension(extension, value);
      }
      @java.lang.Override
      public <Type> Builder clearExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, ?> extension) {
        return super.clearExtension(extension);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance()) return this;
        if (tokenBuilder_ == null) {
          if (!other.token_.isEmpty()) {
            if (token_.isEmpty()) {
              token_ = other.token_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTokenIsMutable();
              token_.addAll(other.token_);
            }
            onChanged();
          }
        } else {
          if (!other.token_.isEmpty()) {
            if (tokenBuilder_.isEmpty()) {
              tokenBuilder_.dispose();
              tokenBuilder_ = null;
              token_ = other.token_;
              bitField0_ = (bitField0_ & ~0x00000001);
              tokenBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTokenFieldBuilder() : null;
            } else {
              tokenBuilder_.addAllMessages(other.token_);
            }
          }
        }
        if (other.hasTokenOffsetBegin()) {
          setTokenOffsetBegin(other.getTokenOffsetBegin());
        }
        if (other.hasTokenOffsetEnd()) {
          setTokenOffsetEnd(other.getTokenOffsetEnd());
        }
        if (other.hasSentenceIndex()) {
          setSentenceIndex(other.getSentenceIndex());
        }
        if (other.hasCharacterOffsetBegin()) {
          setCharacterOffsetBegin(other.getCharacterOffsetBegin());
        }
        if (other.hasCharacterOffsetEnd()) {
          setCharacterOffsetEnd(other.getCharacterOffsetEnd());
        }
        if (other.hasParseTree()) {
          mergeParseTree(other.getParseTree());
        }
        if (other.hasBinarizedParseTree()) {
          mergeBinarizedParseTree(other.getBinarizedParseTree());
        }
        if (other.hasAnnotatedParseTree()) {
          mergeAnnotatedParseTree(other.getAnnotatedParseTree());
        }
        if (other.hasSentiment()) {
          bitField0_ |= 0x00000200;
          sentiment_ = other.sentiment_;
          onChanged();
        }
        if (kBestParseTreesBuilder_ == null) {
          if (!other.kBestParseTrees_.isEmpty()) {
            if (kBestParseTrees_.isEmpty()) {
              kBestParseTrees_ = other.kBestParseTrees_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureKBestParseTreesIsMutable();
              kBestParseTrees_.addAll(other.kBestParseTrees_);
            }
            onChanged();
          }
        } else {
          if (!other.kBestParseTrees_.isEmpty()) {
            if (kBestParseTreesBuilder_.isEmpty()) {
              kBestParseTreesBuilder_.dispose();
              kBestParseTreesBuilder_ = null;
              kBestParseTrees_ = other.kBestParseTrees_;
              bitField0_ = (bitField0_ & ~0x00000400);
              kBestParseTreesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getKBestParseTreesFieldBuilder() : null;
            } else {
              kBestParseTreesBuilder_.addAllMessages(other.kBestParseTrees_);
            }
          }
        }
        if (other.hasBasicDependencies()) {
          mergeBasicDependencies(other.getBasicDependencies());
        }
        if (other.hasCollapsedDependencies()) {
          mergeCollapsedDependencies(other.getCollapsedDependencies());
        }
        if (other.hasCollapsedCCProcessedDependencies()) {
          mergeCollapsedCCProcessedDependencies(other.getCollapsedCCProcessedDependencies());
        }
        if (other.hasAlternativeDependencies()) {
          mergeAlternativeDependencies(other.getAlternativeDependencies());
        }
        if (openieTripleBuilder_ == null) {
          if (!other.openieTriple_.isEmpty()) {
            if (openieTriple_.isEmpty()) {
              openieTriple_ = other.openieTriple_;
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              ensureOpenieTripleIsMutable();
              openieTriple_.addAll(other.openieTriple_);
            }
            onChanged();
          }
        } else {
          if (!other.openieTriple_.isEmpty()) {
            if (openieTripleBuilder_.isEmpty()) {
              openieTripleBuilder_.dispose();
              openieTripleBuilder_ = null;
              openieTriple_ = other.openieTriple_;
              bitField0_ = (bitField0_ & ~0x00008000);
              openieTripleBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getOpenieTripleFieldBuilder() : null;
            } else {
              openieTripleBuilder_.addAllMessages(other.openieTriple_);
            }
          }
        }
        if (kbpTripleBuilder_ == null) {
          if (!other.kbpTriple_.isEmpty()) {
            if (kbpTriple_.isEmpty()) {
              kbpTriple_ = other.kbpTriple_;
              bitField0_ = (bitField0_ & ~0x00010000);
            } else {
              ensureKbpTripleIsMutable();
              kbpTriple_.addAll(other.kbpTriple_);
            }
            onChanged();
          }
        } else {
          if (!other.kbpTriple_.isEmpty()) {
            if (kbpTripleBuilder_.isEmpty()) {
              kbpTripleBuilder_.dispose();
              kbpTripleBuilder_ = null;
              kbpTriple_ = other.kbpTriple_;
              bitField0_ = (bitField0_ & ~0x00010000);
              kbpTripleBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getKbpTripleFieldBuilder() : null;
            } else {
              kbpTripleBuilder_.addAllMessages(other.kbpTriple_);
            }
          }
        }
        if (entailedSentenceBuilder_ == null) {
          if (!other.entailedSentence_.isEmpty()) {
            if (entailedSentence_.isEmpty()) {
              entailedSentence_ = other.entailedSentence_;
              bitField0_ = (bitField0_ & ~0x00020000);
            } else {
              ensureEntailedSentenceIsMutable();
              entailedSentence_.addAll(other.entailedSentence_);
            }
            onChanged();
          }
        } else {
          if (!other.entailedSentence_.isEmpty()) {
            if (entailedSentenceBuilder_.isEmpty()) {
              entailedSentenceBuilder_.dispose();
              entailedSentenceBuilder_ = null;
              entailedSentence_ = other.entailedSentence_;
              bitField0_ = (bitField0_ & ~0x00020000);
              entailedSentenceBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEntailedSentenceFieldBuilder() : null;
            } else {
              entailedSentenceBuilder_.addAllMessages(other.entailedSentence_);
            }
          }
        }
        if (entailedClauseBuilder_ == null) {
          if (!other.entailedClause_.isEmpty()) {
            if (entailedClause_.isEmpty()) {
              entailedClause_ = other.entailedClause_;
              bitField0_ = (bitField0_ & ~0x00040000);
            } else {
              ensureEntailedClauseIsMutable();
              entailedClause_.addAll(other.entailedClause_);
            }
            onChanged();
          }
        } else {
          if (!other.entailedClause_.isEmpty()) {
            if (entailedClauseBuilder_.isEmpty()) {
              entailedClauseBuilder_.dispose();
              entailedClauseBuilder_ = null;
              entailedClause_ = other.entailedClause_;
              bitField0_ = (bitField0_ & ~0x00040000);
              entailedClauseBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEntailedClauseFieldBuilder() : null;
            } else {
              entailedClauseBuilder_.addAllMessages(other.entailedClause_);
            }
          }
        }
        if (other.hasEnhancedDependencies()) {
          mergeEnhancedDependencies(other.getEnhancedDependencies());
        }
        if (other.hasEnhancedPlusPlusDependencies()) {
          mergeEnhancedPlusPlusDependencies(other.getEnhancedPlusPlusDependencies());
        }
        if (characterBuilder_ == null) {
          if (!other.character_.isEmpty()) {
            if (character_.isEmpty()) {
              character_ = other.character_;
              bitField0_ = (bitField0_ & ~0x00200000);
            } else {
              ensureCharacterIsMutable();
              character_.addAll(other.character_);
            }
            onChanged();
          }
        } else {
          if (!other.character_.isEmpty()) {
            if (characterBuilder_.isEmpty()) {
              characterBuilder_.dispose();
              characterBuilder_ = null;
              character_ = other.character_;
              bitField0_ = (bitField0_ & ~0x00200000);
              characterBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getCharacterFieldBuilder() : null;
            } else {
              characterBuilder_.addAllMessages(other.character_);
            }
          }
        }
        if (other.hasParagraph()) {
          setParagraph(other.getParagraph());
        }
        if (other.hasText()) {
          bitField0_ |= 0x00800000;
          text_ = other.text_;
          onChanged();
        }
        if (other.hasLineNumber()) {
          setLineNumber(other.getLineNumber());
        }
        if (other.hasHasRelationAnnotations()) {
          setHasRelationAnnotations(other.getHasRelationAnnotations());
        }
        if (entityBuilder_ == null) {
          if (!other.entity_.isEmpty()) {
            if (entity_.isEmpty()) {
              entity_ = other.entity_;
              bitField0_ = (bitField0_ & ~0x04000000);
            } else {
              ensureEntityIsMutable();
              entity_.addAll(other.entity_);
            }
            onChanged();
          }
        } else {
          if (!other.entity_.isEmpty()) {
            if (entityBuilder_.isEmpty()) {
              entityBuilder_.dispose();
              entityBuilder_ = null;
              entity_ = other.entity_;
              bitField0_ = (bitField0_ & ~0x04000000);
              entityBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEntityFieldBuilder() : null;
            } else {
              entityBuilder_.addAllMessages(other.entity_);
            }
          }
        }
        if (relationBuilder_ == null) {
          if (!other.relation_.isEmpty()) {
            if (relation_.isEmpty()) {
              relation_ = other.relation_;
              bitField0_ = (bitField0_ & ~0x08000000);
            } else {
              ensureRelationIsMutable();
              relation_.addAll(other.relation_);
            }
            onChanged();
          }
        } else {
          if (!other.relation_.isEmpty()) {
            if (relationBuilder_.isEmpty()) {
              relationBuilder_.dispose();
              relationBuilder_ = null;
              relation_ = other.relation_;
              bitField0_ = (bitField0_ & ~0x08000000);
              relationBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRelationFieldBuilder() : null;
            } else {
              relationBuilder_.addAllMessages(other.relation_);
            }
          }
        }
        if (other.hasHasNumerizedTokensAnnotation()) {
          setHasNumerizedTokensAnnotation(other.getHasNumerizedTokensAnnotation());
        }
        if (mentionsBuilder_ == null) {
          if (!other.mentions_.isEmpty()) {
            if (mentions_.isEmpty()) {
              mentions_ = other.mentions_;
              bitField0_ = (bitField0_ & ~0x20000000);
            } else {
              ensureMentionsIsMutable();
              mentions_.addAll(other.mentions_);
            }
            onChanged();
          }
        } else {
          if (!other.mentions_.isEmpty()) {
            if (mentionsBuilder_.isEmpty()) {
              mentionsBuilder_.dispose();
              mentionsBuilder_ = null;
              mentions_ = other.mentions_;
              bitField0_ = (bitField0_ & ~0x20000000);
              mentionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMentionsFieldBuilder() : null;
            } else {
              mentionsBuilder_.addAllMessages(other.mentions_);
            }
          }
        }
        if (mentionsForCorefBuilder_ == null) {
          if (!other.mentionsForCoref_.isEmpty()) {
            if (mentionsForCoref_.isEmpty()) {
              mentionsForCoref_ = other.mentionsForCoref_;
              bitField0_ = (bitField0_ & ~0x40000000);
            } else {
              ensureMentionsForCorefIsMutable();
              mentionsForCoref_.addAll(other.mentionsForCoref_);
            }
            onChanged();
          }
        } else {
          if (!other.mentionsForCoref_.isEmpty()) {
            if (mentionsForCorefBuilder_.isEmpty()) {
              mentionsForCorefBuilder_.dispose();
              mentionsForCorefBuilder_ = null;
              mentionsForCoref_ = other.mentionsForCoref_;
              bitField0_ = (bitField0_ & ~0x40000000);
              mentionsForCorefBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMentionsForCorefFieldBuilder() : null;
            } else {
              mentionsForCorefBuilder_.addAllMessages(other.mentionsForCoref_);
            }
          }
        }
        if (other.hasHasCorefMentionsAnnotation()) {
          setHasCorefMentionsAnnotation(other.getHasCorefMentionsAnnotation());
        }
        if (other.hasSentenceID()) {
          bitField1_ |= 0x00000001;
          sentenceID_ = other.sentenceID_;
          onChanged();
        }
        if (other.hasSectionDate()) {
          bitField1_ |= 0x00000002;
          sectionDate_ = other.sectionDate_;
          onChanged();
        }
        if (other.hasSectionIndex()) {
          setSectionIndex(other.getSectionIndex());
        }
        if (other.hasSectionName()) {
          bitField1_ |= 0x00000008;
          sectionName_ = other.sectionName_;
          onChanged();
        }
        if (other.hasSectionAuthor()) {
          bitField1_ |= 0x00000010;
          sectionAuthor_ = other.sectionAuthor_;
          onChanged();
        }
        if (other.hasDocID()) {
          bitField1_ |= 0x00000020;
          docID_ = other.docID_;
          onChanged();
        }
        if (other.hasSectionQuoted()) {
          setSectionQuoted(other.getSectionQuoted());
        }
        if (other.hasHasEntityMentionsAnnotation()) {
          setHasEntityMentionsAnnotation(other.getHasEntityMentionsAnnotation());
        }
        if (other.hasHasKBPTriplesAnnotation()) {
          setHasKBPTriplesAnnotation(other.getHasKBPTriplesAnnotation());
        }
        if (other.hasHasOpenieTriplesAnnotation()) {
          setHasOpenieTriplesAnnotation(other.getHasOpenieTriplesAnnotation());
        }
        if (other.hasChapterIndex()) {
          setChapterIndex(other.getChapterIndex());
        }
        if (other.hasParagraphIndex()) {
          setParagraphIndex(other.getParagraphIndex());
        }
        if (other.hasEnhancedSentence()) {
          mergeEnhancedSentence(other.getEnhancedSentence());
        }
        if (other.hasSpeaker()) {
          bitField1_ |= 0x00002000;
          speaker_ = other.speaker_;
          onChanged();
        }
        if (other.hasSpeakerType()) {
          bitField1_ |= 0x00004000;
          speakerType_ = other.speakerType_;
          onChanged();
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTokenOffsetBegin()) {
          return false;
        }
        if (!hasTokenOffsetEnd()) {
          return false;
        }
        for (int i = 0; i < getTokenCount(); i++) {
          if (!getToken(i).isInitialized()) {
            return false;
          }
        }
        if (hasBasicDependencies()) {
          if (!getBasicDependencies().isInitialized()) {
            return false;
          }
        }
        if (hasCollapsedDependencies()) {
          if (!getCollapsedDependencies().isInitialized()) {
            return false;
          }
        }
        if (hasCollapsedCCProcessedDependencies()) {
          if (!getCollapsedCCProcessedDependencies().isInitialized()) {
            return false;
          }
        }
        if (hasAlternativeDependencies()) {
          if (!getAlternativeDependencies().isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getOpenieTripleCount(); i++) {
          if (!getOpenieTriple(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getKbpTripleCount(); i++) {
          if (!getKbpTriple(i).isInitialized()) {
            return false;
          }
        }
        if (hasEnhancedDependencies()) {
          if (!getEnhancedDependencies().isInitialized()) {
            return false;
          }
        }
        if (hasEnhancedPlusPlusDependencies()) {
          if (!getEnhancedPlusPlusDependencies().isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getCharacterCount(); i++) {
          if (!getCharacter(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getMentionsCount(); i++) {
          if (!getMentions(i).isInitialized()) {
            return false;
          }
        }
        if (hasEnhancedSentence()) {
          if (!getEnhancedSentence().isInitialized()) {
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Token m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Token.PARSER,
                        extensionRegistry);
                if (tokenBuilder_ == null) {
                  ensureTokenIsMutable();
                  token_.add(m);
                } else {
                  tokenBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 16: {
                tokenOffsetBegin_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                tokenOffsetEnd_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                sentenceIndex_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                characterOffsetBegin_ = input.readUInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                characterOffsetEnd_ = input.readUInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 58: {
                input.readMessage(
                    getParseTreeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getBasicDependenciesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getCollapsedDependenciesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getCollapsedCCProcessedDependenciesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00002000;
                break;
              } // case 82
              case 88: {
                paragraph_ = input.readUInt32();
                bitField0_ |= 0x00400000;
                break;
              } // case 88
              case 98: {
                text_ = input.readBytes();
                bitField0_ |= 0x00800000;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getAlternativeDependenciesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00004000;
                break;
              } // case 106
              case 114: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.PARSER,
                        extensionRegistry);
                if (openieTripleBuilder_ == null) {
                  ensureOpenieTripleIsMutable();
                  openieTriple_.add(m);
                } else {
                  openieTripleBuilder_.addMessage(m);
                }
                break;
              } // case 114
              case 122: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.PARSER,
                        extensionRegistry);
                if (entailedSentenceBuilder_ == null) {
                  ensureEntailedSentenceIsMutable();
                  entailedSentence_.add(m);
                } else {
                  entailedSentenceBuilder_.addMessage(m);
                }
                break;
              } // case 122
              case 130: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.PARSER,
                        extensionRegistry);
                if (kbpTripleBuilder_ == null) {
                  ensureKbpTripleIsMutable();
                  kbpTriple_.add(m);
                } else {
                  kbpTripleBuilder_.addMessage(m);
                }
                break;
              } // case 130
              case 138: {
                input.readMessage(
                    getEnhancedDependenciesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00080000;
                break;
              } // case 138
              case 146: {
                input.readMessage(
                    getEnhancedPlusPlusDependenciesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00100000;
                break;
              } // case 146
              case 154: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Token m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Token.PARSER,
                        extensionRegistry);
                if (characterBuilder_ == null) {
                  ensureCharacterIsMutable();
                  character_.add(m);
                } else {
                  characterBuilder_.addMessage(m);
                }
                break;
              } // case 154
              case 160: {
                lineNumber_ = input.readUInt32();
                bitField0_ |= 0x01000000;
                break;
              } // case 160
              case 250: {
                input.readMessage(
                    getBinarizedParseTreeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 250
              case 258: {
                input.readMessage(
                    getAnnotatedParseTreeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 258
              case 266: {
                sentiment_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 266
              case 274: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.PARSER,
                        extensionRegistry);
                if (kBestParseTreesBuilder_ == null) {
                  ensureKBestParseTreesIsMutable();
                  kBestParseTrees_.add(m);
                } else {
                  kBestParseTreesBuilder_.addMessage(m);
                }
                break;
              } // case 274
              case 282: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.PARSER,
                        extensionRegistry);
                if (entailedClauseBuilder_ == null) {
                  ensureEntailedClauseIsMutable();
                  entailedClause_.add(m);
                } else {
                  entailedClauseBuilder_.addMessage(m);
                }
                break;
              } // case 282
              case 408: {
                hasRelationAnnotations_ = input.readBool();
                bitField0_ |= 0x02000000;
                break;
              } // case 408
              case 418: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Entity m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.PARSER,
                        extensionRegistry);
                if (entityBuilder_ == null) {
                  ensureEntityIsMutable();
                  entity_.add(m);
                } else {
                  entityBuilder_.addMessage(m);
                }
                break;
              } // case 418
              case 426: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Relation m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.PARSER,
                        extensionRegistry);
                if (relationBuilder_ == null) {
                  ensureRelationIsMutable();
                  relation_.add(m);
                } else {
                  relationBuilder_.addMessage(m);
                }
                break;
              } // case 426
              case 432: {
                hasNumerizedTokensAnnotation_ = input.readBool();
                bitField0_ |= 0x10000000;
                break;
              } // case 432
              case 442: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.PARSER,
                        extensionRegistry);
                if (mentionsBuilder_ == null) {
                  ensureMentionsIsMutable();
                  mentions_.add(m);
                } else {
                  mentionsBuilder_.addMessage(m);
                }
                break;
              } // case 442
              case 450: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Mention m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.PARSER,
                        extensionRegistry);
                if (mentionsForCorefBuilder_ == null) {
                  ensureMentionsForCorefIsMutable();
                  mentionsForCoref_.add(m);
                } else {
                  mentionsForCorefBuilder_.addMessage(m);
                }
                break;
              } // case 450
              case 456: {
                hasCorefMentionsAnnotation_ = input.readBool();
                bitField0_ |= 0x80000000;
                break;
              } // case 456
              case 466: {
                sentenceID_ = input.readBytes();
                bitField1_ |= 0x00000001;
                break;
              } // case 466
              case 474: {
                sectionDate_ = input.readBytes();
                bitField1_ |= 0x00000002;
                break;
              } // case 474
              case 480: {
                sectionIndex_ = input.readUInt32();
                bitField1_ |= 0x00000004;
                break;
              } // case 480
              case 490: {
                sectionName_ = input.readBytes();
                bitField1_ |= 0x00000008;
                break;
              } // case 490
              case 498: {
                sectionAuthor_ = input.readBytes();
                bitField1_ |= 0x00000010;
                break;
              } // case 498
              case 506: {
                docID_ = input.readBytes();
                bitField1_ |= 0x00000020;
                break;
              } // case 506
              case 512: {
                sectionQuoted_ = input.readBool();
                bitField1_ |= 0x00000040;
                break;
              } // case 512
              case 520: {
                hasEntityMentionsAnnotation_ = input.readBool();
                bitField1_ |= 0x00000080;
                break;
              } // case 520
              case 528: {
                chapterIndex_ = input.readUInt32();
                bitField1_ |= 0x00000400;
                break;
              } // case 528
              case 536: {
                paragraphIndex_ = input.readUInt32();
                bitField1_ |= 0x00000800;
                break;
              } // case 536
              case 544: {
                hasKBPTriplesAnnotation_ = input.readBool();
                bitField1_ |= 0x00000100;
                break;
              } // case 544
              case 552: {
                hasOpenieTriplesAnnotation_ = input.readBool();
                bitField1_ |= 0x00000200;
                break;
              } // case 552
              case 562: {
                input.readMessage(
                    getEnhancedSentenceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField1_ |= 0x00001000;
                break;
              } // case 562
              case 570: {
                speaker_ = input.readBytes();
                bitField1_ |= 0x00002000;
                break;
              } // case 570
              case 578: {
                speakerType_ = input.readBytes();
                bitField1_ |= 0x00004000;
                break;
              } // case 578
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private int bitField1_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> token_ =
        java.util.Collections.emptyList();
      private void ensureTokenIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          token_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Token>(token_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> tokenBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getTokenList() {
        if (tokenBuilder_ == null) {
          return java.util.Collections.unmodifiableList(token_);
        } else {
          return tokenBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public int getTokenCount() {
        if (tokenBuilder_ == null) {
          return token_.size();
        } else {
          return tokenBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index) {
        if (tokenBuilder_ == null) {
          return token_.get(index);
        } else {
          return tokenBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder setToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (tokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTokenIsMutable();
          token_.set(index, value);
          onChanged();
        } else {
          tokenBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder setToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          token_.set(index, builderForValue.build());
          onChanged();
        } else {
          tokenBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder addToken(edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (tokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTokenIsMutable();
          token_.add(value);
          onChanged();
        } else {
          tokenBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder addToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (tokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTokenIsMutable();
          token_.add(index, value);
          onChanged();
        } else {
          tokenBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder addToken(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          token_.add(builderForValue.build());
          onChanged();
        } else {
          tokenBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder addToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          token_.add(index, builderForValue.build());
          onChanged();
        } else {
          tokenBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder addAllToken(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Token> values) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, token_);
          onChanged();
        } else {
          tokenBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder clearToken() {
        if (tokenBuilder_ == null) {
          token_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          tokenBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public Builder removeToken(int index) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          token_.remove(index);
          onChanged();
        } else {
          tokenBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder getTokenBuilder(
          int index) {
        return getTokenFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
          int index) {
        if (tokenBuilder_ == null) {
          return token_.get(index);  } else {
          return tokenBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
           getTokenOrBuilderList() {
        if (tokenBuilder_ != null) {
          return tokenBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(token_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addTokenBuilder() {
        return getTokenFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addTokenBuilder(
          int index) {
        return getTokenFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder> 
           getTokenBuilderList() {
        return getTokenFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
          getTokenFieldBuilder() {
        if (tokenBuilder_ == null) {
          tokenBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder>(
                  token_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          token_ = null;
        }
        return tokenBuilder_;
      }

      private int tokenOffsetBegin_ ;
      /**
       * <code>required uint32 tokenOffsetBegin = 2;</code>
       * @return Whether the tokenOffsetBegin field is set.
       */
      @java.lang.Override
      public boolean hasTokenOffsetBegin() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint32 tokenOffsetBegin = 2;</code>
       * @return The tokenOffsetBegin.
       */
      @java.lang.Override
      public int getTokenOffsetBegin() {
        return tokenOffsetBegin_;
      }
      /**
       * <code>required uint32 tokenOffsetBegin = 2;</code>
       * @param value The tokenOffsetBegin to set.
       * @return This builder for chaining.
       */
      public Builder setTokenOffsetBegin(int value) {
        bitField0_ |= 0x00000002;
        tokenOffsetBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 tokenOffsetBegin = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenOffsetBegin() {
        bitField0_ = (bitField0_ & ~0x00000002);
        tokenOffsetBegin_ = 0;
        onChanged();
        return this;
      }

      private int tokenOffsetEnd_ ;
      /**
       * <code>required uint32 tokenOffsetEnd = 3;</code>
       * @return Whether the tokenOffsetEnd field is set.
       */
      @java.lang.Override
      public boolean hasTokenOffsetEnd() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required uint32 tokenOffsetEnd = 3;</code>
       * @return The tokenOffsetEnd.
       */
      @java.lang.Override
      public int getTokenOffsetEnd() {
        return tokenOffsetEnd_;
      }
      /**
       * <code>required uint32 tokenOffsetEnd = 3;</code>
       * @param value The tokenOffsetEnd to set.
       * @return This builder for chaining.
       */
      public Builder setTokenOffsetEnd(int value) {
        bitField0_ |= 0x00000004;
        tokenOffsetEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 tokenOffsetEnd = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenOffsetEnd() {
        bitField0_ = (bitField0_ & ~0x00000004);
        tokenOffsetEnd_ = 0;
        onChanged();
        return this;
      }

      private int sentenceIndex_ ;
      /**
       * <code>optional uint32 sentenceIndex = 4;</code>
       * @return Whether the sentenceIndex field is set.
       */
      @java.lang.Override
      public boolean hasSentenceIndex() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional uint32 sentenceIndex = 4;</code>
       * @return The sentenceIndex.
       */
      @java.lang.Override
      public int getSentenceIndex() {
        return sentenceIndex_;
      }
      /**
       * <code>optional uint32 sentenceIndex = 4;</code>
       * @param value The sentenceIndex to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceIndex(int value) {
        bitField0_ |= 0x00000008;
        sentenceIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 sentenceIndex = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentenceIndex() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sentenceIndex_ = 0;
        onChanged();
        return this;
      }

      private int characterOffsetBegin_ ;
      /**
       * <code>optional uint32 characterOffsetBegin = 5;</code>
       * @return Whether the characterOffsetBegin field is set.
       */
      @java.lang.Override
      public boolean hasCharacterOffsetBegin() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional uint32 characterOffsetBegin = 5;</code>
       * @return The characterOffsetBegin.
       */
      @java.lang.Override
      public int getCharacterOffsetBegin() {
        return characterOffsetBegin_;
      }
      /**
       * <code>optional uint32 characterOffsetBegin = 5;</code>
       * @param value The characterOffsetBegin to set.
       * @return This builder for chaining.
       */
      public Builder setCharacterOffsetBegin(int value) {
        bitField0_ |= 0x00000010;
        characterOffsetBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 characterOffsetBegin = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearCharacterOffsetBegin() {
        bitField0_ = (bitField0_ & ~0x00000010);
        characterOffsetBegin_ = 0;
        onChanged();
        return this;
      }

      private int characterOffsetEnd_ ;
      /**
       * <code>optional uint32 characterOffsetEnd = 6;</code>
       * @return Whether the characterOffsetEnd field is set.
       */
      @java.lang.Override
      public boolean hasCharacterOffsetEnd() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint32 characterOffsetEnd = 6;</code>
       * @return The characterOffsetEnd.
       */
      @java.lang.Override
      public int getCharacterOffsetEnd() {
        return characterOffsetEnd_;
      }
      /**
       * <code>optional uint32 characterOffsetEnd = 6;</code>
       * @param value The characterOffsetEnd to set.
       * @return This builder for chaining.
       */
      public Builder setCharacterOffsetEnd(int value) {
        bitField0_ |= 0x00000020;
        characterOffsetEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 characterOffsetEnd = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearCharacterOffsetEnd() {
        bitField0_ = (bitField0_ & ~0x00000020);
        characterOffsetEnd_ = 0;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseTree_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> parseTreeBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       * @return Whether the parseTree field is set.
       */
      public boolean hasParseTree() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       * @return The parseTree.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getParseTree() {
        if (parseTreeBuilder_ == null) {
          return parseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : parseTree_;
        } else {
          return parseTreeBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       */
      public Builder setParseTree(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (parseTreeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          parseTree_ = value;
          onChanged();
        } else {
          parseTreeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       */
      public Builder setParseTree(
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (parseTreeBuilder_ == null) {
          parseTree_ = builderForValue.build();
          onChanged();
        } else {
          parseTreeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       */
      public Builder mergeParseTree(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (parseTreeBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
              parseTree_ != null &&
              parseTree_ != edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance()) {
            parseTree_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.newBuilder(parseTree_).mergeFrom(value).buildPartial();
          } else {
            parseTree_ = value;
          }
          onChanged();
        } else {
          parseTreeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       */
      public Builder clearParseTree() {
        if (parseTreeBuilder_ == null) {
          parseTree_ = null;
          onChanged();
        } else {
          parseTreeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder getParseTreeBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getParseTreeFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getParseTreeOrBuilder() {
        if (parseTreeBuilder_ != null) {
          return parseTreeBuilder_.getMessageOrBuilder();
        } else {
          return parseTree_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : parseTree_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree parseTree = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
          getParseTreeFieldBuilder() {
        if (parseTreeBuilder_ == null) {
          parseTreeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder>(
                  getParseTree(),
                  getParentForChildren(),
                  isClean());
          parseTree_ = null;
        }
        return parseTreeBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree binarizedParseTree_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> binarizedParseTreeBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       * @return Whether the binarizedParseTree field is set.
       */
      public boolean hasBinarizedParseTree() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       * @return The binarizedParseTree.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getBinarizedParseTree() {
        if (binarizedParseTreeBuilder_ == null) {
          return binarizedParseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : binarizedParseTree_;
        } else {
          return binarizedParseTreeBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       */
      public Builder setBinarizedParseTree(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (binarizedParseTreeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          binarizedParseTree_ = value;
          onChanged();
        } else {
          binarizedParseTreeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       */
      public Builder setBinarizedParseTree(
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (binarizedParseTreeBuilder_ == null) {
          binarizedParseTree_ = builderForValue.build();
          onChanged();
        } else {
          binarizedParseTreeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       */
      public Builder mergeBinarizedParseTree(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (binarizedParseTreeBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
              binarizedParseTree_ != null &&
              binarizedParseTree_ != edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance()) {
            binarizedParseTree_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.newBuilder(binarizedParseTree_).mergeFrom(value).buildPartial();
          } else {
            binarizedParseTree_ = value;
          }
          onChanged();
        } else {
          binarizedParseTreeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       */
      public Builder clearBinarizedParseTree() {
        if (binarizedParseTreeBuilder_ == null) {
          binarizedParseTree_ = null;
          onChanged();
        } else {
          binarizedParseTreeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder getBinarizedParseTreeBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getBinarizedParseTreeFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getBinarizedParseTreeOrBuilder() {
        if (binarizedParseTreeBuilder_ != null) {
          return binarizedParseTreeBuilder_.getMessageOrBuilder();
        } else {
          return binarizedParseTree_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : binarizedParseTree_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree binarizedParseTree = 31;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
          getBinarizedParseTreeFieldBuilder() {
        if (binarizedParseTreeBuilder_ == null) {
          binarizedParseTreeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder>(
                  getBinarizedParseTree(),
                  getParentForChildren(),
                  isClean());
          binarizedParseTree_ = null;
        }
        return binarizedParseTreeBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree annotatedParseTree_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> annotatedParseTreeBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       * @return Whether the annotatedParseTree field is set.
       */
      public boolean hasAnnotatedParseTree() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       * @return The annotatedParseTree.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getAnnotatedParseTree() {
        if (annotatedParseTreeBuilder_ == null) {
          return annotatedParseTree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : annotatedParseTree_;
        } else {
          return annotatedParseTreeBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       */
      public Builder setAnnotatedParseTree(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (annotatedParseTreeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          annotatedParseTree_ = value;
          onChanged();
        } else {
          annotatedParseTreeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       */
      public Builder setAnnotatedParseTree(
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (annotatedParseTreeBuilder_ == null) {
          annotatedParseTree_ = builderForValue.build();
          onChanged();
        } else {
          annotatedParseTreeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       */
      public Builder mergeAnnotatedParseTree(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (annotatedParseTreeBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
              annotatedParseTree_ != null &&
              annotatedParseTree_ != edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance()) {
            annotatedParseTree_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.newBuilder(annotatedParseTree_).mergeFrom(value).buildPartial();
          } else {
            annotatedParseTree_ = value;
          }
          onChanged();
        } else {
          annotatedParseTreeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       */
      public Builder clearAnnotatedParseTree() {
        if (annotatedParseTreeBuilder_ == null) {
          annotatedParseTree_ = null;
          onChanged();
        } else {
          annotatedParseTreeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder getAnnotatedParseTreeBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getAnnotatedParseTreeFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getAnnotatedParseTreeOrBuilder() {
        if (annotatedParseTreeBuilder_ != null) {
          return annotatedParseTreeBuilder_.getMessageOrBuilder();
        } else {
          return annotatedParseTree_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance() : annotatedParseTree_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.ParseTree annotatedParseTree = 32;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
          getAnnotatedParseTreeFieldBuilder() {
        if (annotatedParseTreeBuilder_ == null) {
          annotatedParseTreeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder>(
                  getAnnotatedParseTree(),
                  getParentForChildren(),
                  isClean());
          annotatedParseTree_ = null;
        }
        return annotatedParseTreeBuilder_;
      }

      private java.lang.Object sentiment_ = "";
      /**
       * <code>optional string sentiment = 33;</code>
       * @return Whether the sentiment field is set.
       */
      public boolean hasSentiment() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string sentiment = 33;</code>
       * @return The sentiment.
       */
      public java.lang.String getSentiment() {
        java.lang.Object ref = sentiment_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sentiment_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string sentiment = 33;</code>
       * @return The bytes for sentiment.
       */
      public com.google.protobuf.ByteString
          getSentimentBytes() {
        java.lang.Object ref = sentiment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sentiment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string sentiment = 33;</code>
       * @param value The sentiment to set.
       * @return This builder for chaining.
       */
      public Builder setSentiment(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        sentiment_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string sentiment = 33;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentiment() {
        bitField0_ = (bitField0_ & ~0x00000200);
        sentiment_ = getDefaultInstance().getSentiment();
        onChanged();
        return this;
      }
      /**
       * <code>optional string sentiment = 33;</code>
       * @param value The bytes for sentiment to set.
       * @return This builder for chaining.
       */
      public Builder setSentimentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        sentiment_ = value;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> kBestParseTrees_ =
        java.util.Collections.emptyList();
      private void ensureKBestParseTreesIsMutable() {
        if (!((bitField0_ & 0x00000400) != 0)) {
          kBestParseTrees_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree>(kBestParseTrees_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> kBestParseTreesBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> getKBestParseTreesList() {
        if (kBestParseTreesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(kBestParseTrees_);
        } else {
          return kBestParseTreesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public int getKBestParseTreesCount() {
        if (kBestParseTreesBuilder_ == null) {
          return kBestParseTrees_.size();
        } else {
          return kBestParseTreesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getKBestParseTrees(int index) {
        if (kBestParseTreesBuilder_ == null) {
          return kBestParseTrees_.get(index);
        } else {
          return kBestParseTreesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder setKBestParseTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (kBestParseTreesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKBestParseTreesIsMutable();
          kBestParseTrees_.set(index, value);
          onChanged();
        } else {
          kBestParseTreesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder setKBestParseTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (kBestParseTreesBuilder_ == null) {
          ensureKBestParseTreesIsMutable();
          kBestParseTrees_.set(index, builderForValue.build());
          onChanged();
        } else {
          kBestParseTreesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder addKBestParseTrees(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (kBestParseTreesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKBestParseTreesIsMutable();
          kBestParseTrees_.add(value);
          onChanged();
        } else {
          kBestParseTreesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder addKBestParseTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (kBestParseTreesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKBestParseTreesIsMutable();
          kBestParseTrees_.add(index, value);
          onChanged();
        } else {
          kBestParseTreesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder addKBestParseTrees(
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (kBestParseTreesBuilder_ == null) {
          ensureKBestParseTreesIsMutable();
          kBestParseTrees_.add(builderForValue.build());
          onChanged();
        } else {
          kBestParseTreesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder addKBestParseTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (kBestParseTreesBuilder_ == null) {
          ensureKBestParseTreesIsMutable();
          kBestParseTrees_.add(index, builderForValue.build());
          onChanged();
        } else {
          kBestParseTreesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder addAllKBestParseTrees(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> values) {
        if (kBestParseTreesBuilder_ == null) {
          ensureKBestParseTreesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, kBestParseTrees_);
          onChanged();
        } else {
          kBestParseTreesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder clearKBestParseTrees() {
        if (kBestParseTreesBuilder_ == null) {
          kBestParseTrees_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          kBestParseTreesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public Builder removeKBestParseTrees(int index) {
        if (kBestParseTreesBuilder_ == null) {
          ensureKBestParseTreesIsMutable();
          kBestParseTrees_.remove(index);
          onChanged();
        } else {
          kBestParseTreesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder getKBestParseTreesBuilder(
          int index) {
        return getKBestParseTreesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getKBestParseTreesOrBuilder(
          int index) {
        if (kBestParseTreesBuilder_ == null) {
          return kBestParseTrees_.get(index);  } else {
          return kBestParseTreesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
           getKBestParseTreesOrBuilderList() {
        if (kBestParseTreesBuilder_ != null) {
          return kBestParseTreesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(kBestParseTrees_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder addKBestParseTreesBuilder() {
        return getKBestParseTreesFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder addKBestParseTreesBuilder(
          int index) {
        return getKBestParseTreesFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree kBestParseTrees = 34;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder> 
           getKBestParseTreesBuilderList() {
        return getKBestParseTreesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
          getKBestParseTreesFieldBuilder() {
        if (kBestParseTreesBuilder_ == null) {
          kBestParseTreesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder>(
                  kBestParseTrees_,
                  ((bitField0_ & 0x00000400) != 0),
                  getParentForChildren(),
                  isClean());
          kBestParseTrees_ = null;
        }
        return kBestParseTreesBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph basicDependencies_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> basicDependenciesBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       * @return Whether the basicDependencies field is set.
       */
      public boolean hasBasicDependencies() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       * @return The basicDependencies.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getBasicDependencies() {
        if (basicDependenciesBuilder_ == null) {
          return basicDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : basicDependencies_;
        } else {
          return basicDependenciesBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       */
      public Builder setBasicDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (basicDependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          basicDependencies_ = value;
          onChanged();
        } else {
          basicDependenciesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       */
      public Builder setBasicDependencies(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (basicDependenciesBuilder_ == null) {
          basicDependencies_ = builderForValue.build();
          onChanged();
        } else {
          basicDependenciesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       */
      public Builder mergeBasicDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (basicDependenciesBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0) &&
              basicDependencies_ != null &&
              basicDependencies_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
            basicDependencies_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(basicDependencies_).mergeFrom(value).buildPartial();
          } else {
            basicDependencies_ = value;
          }
          onChanged();
        } else {
          basicDependenciesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       */
      public Builder clearBasicDependencies() {
        if (basicDependenciesBuilder_ == null) {
          basicDependencies_ = null;
          onChanged();
        } else {
          basicDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getBasicDependenciesBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getBasicDependenciesFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getBasicDependenciesOrBuilder() {
        if (basicDependenciesBuilder_ != null) {
          return basicDependenciesBuilder_.getMessageOrBuilder();
        } else {
          return basicDependencies_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : basicDependencies_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph basicDependencies = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getBasicDependenciesFieldBuilder() {
        if (basicDependenciesBuilder_ == null) {
          basicDependenciesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  getBasicDependencies(),
                  getParentForChildren(),
                  isClean());
          basicDependencies_ = null;
        }
        return basicDependenciesBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph collapsedDependencies_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> collapsedDependenciesBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       * @return Whether the collapsedDependencies field is set.
       */
      public boolean hasCollapsedDependencies() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       * @return The collapsedDependencies.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getCollapsedDependencies() {
        if (collapsedDependenciesBuilder_ == null) {
          return collapsedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : collapsedDependencies_;
        } else {
          return collapsedDependenciesBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       */
      public Builder setCollapsedDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (collapsedDependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          collapsedDependencies_ = value;
          onChanged();
        } else {
          collapsedDependenciesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       */
      public Builder setCollapsedDependencies(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (collapsedDependenciesBuilder_ == null) {
          collapsedDependencies_ = builderForValue.build();
          onChanged();
        } else {
          collapsedDependenciesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       */
      public Builder mergeCollapsedDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (collapsedDependenciesBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0) &&
              collapsedDependencies_ != null &&
              collapsedDependencies_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
            collapsedDependencies_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(collapsedDependencies_).mergeFrom(value).buildPartial();
          } else {
            collapsedDependencies_ = value;
          }
          onChanged();
        } else {
          collapsedDependenciesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00001000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       */
      public Builder clearCollapsedDependencies() {
        if (collapsedDependenciesBuilder_ == null) {
          collapsedDependencies_ = null;
          onChanged();
        } else {
          collapsedDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getCollapsedDependenciesBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getCollapsedDependenciesFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getCollapsedDependenciesOrBuilder() {
        if (collapsedDependenciesBuilder_ != null) {
          return collapsedDependenciesBuilder_.getMessageOrBuilder();
        } else {
          return collapsedDependencies_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : collapsedDependencies_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedDependencies = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getCollapsedDependenciesFieldBuilder() {
        if (collapsedDependenciesBuilder_ == null) {
          collapsedDependenciesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  getCollapsedDependencies(),
                  getParentForChildren(),
                  isClean());
          collapsedDependencies_ = null;
        }
        return collapsedDependenciesBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph collapsedCCProcessedDependencies_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> collapsedCCProcessedDependenciesBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       * @return Whether the collapsedCCProcessedDependencies field is set.
       */
      public boolean hasCollapsedCCProcessedDependencies() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       * @return The collapsedCCProcessedDependencies.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getCollapsedCCProcessedDependencies() {
        if (collapsedCCProcessedDependenciesBuilder_ == null) {
          return collapsedCCProcessedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : collapsedCCProcessedDependencies_;
        } else {
          return collapsedCCProcessedDependenciesBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       */
      public Builder setCollapsedCCProcessedDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (collapsedCCProcessedDependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          collapsedCCProcessedDependencies_ = value;
          onChanged();
        } else {
          collapsedCCProcessedDependenciesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       */
      public Builder setCollapsedCCProcessedDependencies(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (collapsedCCProcessedDependenciesBuilder_ == null) {
          collapsedCCProcessedDependencies_ = builderForValue.build();
          onChanged();
        } else {
          collapsedCCProcessedDependenciesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       */
      public Builder mergeCollapsedCCProcessedDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (collapsedCCProcessedDependenciesBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0) &&
              collapsedCCProcessedDependencies_ != null &&
              collapsedCCProcessedDependencies_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
            collapsedCCProcessedDependencies_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(collapsedCCProcessedDependencies_).mergeFrom(value).buildPartial();
          } else {
            collapsedCCProcessedDependencies_ = value;
          }
          onChanged();
        } else {
          collapsedCCProcessedDependenciesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00002000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       */
      public Builder clearCollapsedCCProcessedDependencies() {
        if (collapsedCCProcessedDependenciesBuilder_ == null) {
          collapsedCCProcessedDependencies_ = null;
          onChanged();
        } else {
          collapsedCCProcessedDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00002000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getCollapsedCCProcessedDependenciesBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getCollapsedCCProcessedDependenciesFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getCollapsedCCProcessedDependenciesOrBuilder() {
        if (collapsedCCProcessedDependenciesBuilder_ != null) {
          return collapsedCCProcessedDependenciesBuilder_.getMessageOrBuilder();
        } else {
          return collapsedCCProcessedDependencies_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : collapsedCCProcessedDependencies_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph collapsedCCProcessedDependencies = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getCollapsedCCProcessedDependenciesFieldBuilder() {
        if (collapsedCCProcessedDependenciesBuilder_ == null) {
          collapsedCCProcessedDependenciesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  getCollapsedCCProcessedDependencies(),
                  getParentForChildren(),
                  isClean());
          collapsedCCProcessedDependencies_ = null;
        }
        return collapsedCCProcessedDependenciesBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph alternativeDependencies_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> alternativeDependenciesBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       * @return Whether the alternativeDependencies field is set.
       */
      public boolean hasAlternativeDependencies() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       * @return The alternativeDependencies.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getAlternativeDependencies() {
        if (alternativeDependenciesBuilder_ == null) {
          return alternativeDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : alternativeDependencies_;
        } else {
          return alternativeDependenciesBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       */
      public Builder setAlternativeDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (alternativeDependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          alternativeDependencies_ = value;
          onChanged();
        } else {
          alternativeDependenciesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00004000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       */
      public Builder setAlternativeDependencies(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (alternativeDependenciesBuilder_ == null) {
          alternativeDependencies_ = builderForValue.build();
          onChanged();
        } else {
          alternativeDependenciesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00004000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       */
      public Builder mergeAlternativeDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (alternativeDependenciesBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0) &&
              alternativeDependencies_ != null &&
              alternativeDependencies_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
            alternativeDependencies_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(alternativeDependencies_).mergeFrom(value).buildPartial();
          } else {
            alternativeDependencies_ = value;
          }
          onChanged();
        } else {
          alternativeDependenciesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00004000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       */
      public Builder clearAlternativeDependencies() {
        if (alternativeDependenciesBuilder_ == null) {
          alternativeDependencies_ = null;
          onChanged();
        } else {
          alternativeDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00004000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getAlternativeDependenciesBuilder() {
        bitField0_ |= 0x00004000;
        onChanged();
        return getAlternativeDependenciesFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getAlternativeDependenciesOrBuilder() {
        if (alternativeDependenciesBuilder_ != null) {
          return alternativeDependenciesBuilder_.getMessageOrBuilder();
        } else {
          return alternativeDependencies_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : alternativeDependencies_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph alternativeDependencies = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getAlternativeDependenciesFieldBuilder() {
        if (alternativeDependenciesBuilder_ == null) {
          alternativeDependenciesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  getAlternativeDependencies(),
                  getParentForChildren(),
                  isClean());
          alternativeDependencies_ = null;
        }
        return alternativeDependenciesBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> openieTriple_ =
        java.util.Collections.emptyList();
      private void ensureOpenieTripleIsMutable() {
        if (!((bitField0_ & 0x00008000) != 0)) {
          openieTriple_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple>(openieTriple_);
          bitField0_ |= 0x00008000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> openieTripleBuilder_;

      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> getOpenieTripleList() {
        if (openieTripleBuilder_ == null) {
          return java.util.Collections.unmodifiableList(openieTriple_);
        } else {
          return openieTripleBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public int getOpenieTripleCount() {
        if (openieTripleBuilder_ == null) {
          return openieTriple_.size();
        } else {
          return openieTripleBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getOpenieTriple(int index) {
        if (openieTripleBuilder_ == null) {
          return openieTriple_.get(index);
        } else {
          return openieTripleBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder setOpenieTriple(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple value) {
        if (openieTripleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOpenieTripleIsMutable();
          openieTriple_.set(index, value);
          onChanged();
        } else {
          openieTripleBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder setOpenieTriple(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder builderForValue) {
        if (openieTripleBuilder_ == null) {
          ensureOpenieTripleIsMutable();
          openieTriple_.set(index, builderForValue.build());
          onChanged();
        } else {
          openieTripleBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder addOpenieTriple(edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple value) {
        if (openieTripleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOpenieTripleIsMutable();
          openieTriple_.add(value);
          onChanged();
        } else {
          openieTripleBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder addOpenieTriple(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple value) {
        if (openieTripleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOpenieTripleIsMutable();
          openieTriple_.add(index, value);
          onChanged();
        } else {
          openieTripleBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder addOpenieTriple(
          edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder builderForValue) {
        if (openieTripleBuilder_ == null) {
          ensureOpenieTripleIsMutable();
          openieTriple_.add(builderForValue.build());
          onChanged();
        } else {
          openieTripleBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder addOpenieTriple(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder builderForValue) {
        if (openieTripleBuilder_ == null) {
          ensureOpenieTripleIsMutable();
          openieTriple_.add(index, builderForValue.build());
          onChanged();
        } else {
          openieTripleBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder addAllOpenieTriple(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> values) {
        if (openieTripleBuilder_ == null) {
          ensureOpenieTripleIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, openieTriple_);
          onChanged();
        } else {
          openieTripleBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder clearOpenieTriple() {
        if (openieTripleBuilder_ == null) {
          openieTriple_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
          onChanged();
        } else {
          openieTripleBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public Builder removeOpenieTriple(int index) {
        if (openieTripleBuilder_ == null) {
          ensureOpenieTripleIsMutable();
          openieTriple_.remove(index);
          onChanged();
        } else {
          openieTripleBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder getOpenieTripleBuilder(
          int index) {
        return getOpenieTripleFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder getOpenieTripleOrBuilder(
          int index) {
        if (openieTripleBuilder_ == null) {
          return openieTriple_.get(index);  } else {
          return openieTripleBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> 
           getOpenieTripleOrBuilderList() {
        if (openieTripleBuilder_ != null) {
          return openieTripleBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(openieTriple_);
        }
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder addOpenieTripleBuilder() {
        return getOpenieTripleFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.getDefaultInstance());
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder addOpenieTripleBuilder(
          int index) {
        return getOpenieTripleFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.getDefaultInstance());
      }
      /**
       * <pre>
       * The OpenIE triples in the sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple openieTriple = 14;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder> 
           getOpenieTripleBuilderList() {
        return getOpenieTripleFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> 
          getOpenieTripleFieldBuilder() {
        if (openieTripleBuilder_ == null) {
          openieTripleBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder>(
                  openieTriple_,
                  ((bitField0_ & 0x00008000) != 0),
                  getParentForChildren(),
                  isClean());
          openieTriple_ = null;
        }
        return openieTripleBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> kbpTriple_ =
        java.util.Collections.emptyList();
      private void ensureKbpTripleIsMutable() {
        if (!((bitField0_ & 0x00010000) != 0)) {
          kbpTriple_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple>(kbpTriple_);
          bitField0_ |= 0x00010000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> kbpTripleBuilder_;

      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> getKbpTripleList() {
        if (kbpTripleBuilder_ == null) {
          return java.util.Collections.unmodifiableList(kbpTriple_);
        } else {
          return kbpTripleBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public int getKbpTripleCount() {
        if (kbpTripleBuilder_ == null) {
          return kbpTriple_.size();
        } else {
          return kbpTripleBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getKbpTriple(int index) {
        if (kbpTripleBuilder_ == null) {
          return kbpTriple_.get(index);
        } else {
          return kbpTripleBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder setKbpTriple(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple value) {
        if (kbpTripleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKbpTripleIsMutable();
          kbpTriple_.set(index, value);
          onChanged();
        } else {
          kbpTripleBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder setKbpTriple(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder builderForValue) {
        if (kbpTripleBuilder_ == null) {
          ensureKbpTripleIsMutable();
          kbpTriple_.set(index, builderForValue.build());
          onChanged();
        } else {
          kbpTripleBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder addKbpTriple(edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple value) {
        if (kbpTripleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKbpTripleIsMutable();
          kbpTriple_.add(value);
          onChanged();
        } else {
          kbpTripleBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder addKbpTriple(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple value) {
        if (kbpTripleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKbpTripleIsMutable();
          kbpTriple_.add(index, value);
          onChanged();
        } else {
          kbpTripleBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder addKbpTriple(
          edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder builderForValue) {
        if (kbpTripleBuilder_ == null) {
          ensureKbpTripleIsMutable();
          kbpTriple_.add(builderForValue.build());
          onChanged();
        } else {
          kbpTripleBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder addKbpTriple(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder builderForValue) {
        if (kbpTripleBuilder_ == null) {
          ensureKbpTripleIsMutable();
          kbpTriple_.add(index, builderForValue.build());
          onChanged();
        } else {
          kbpTripleBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder addAllKbpTriple(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple> values) {
        if (kbpTripleBuilder_ == null) {
          ensureKbpTripleIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, kbpTriple_);
          onChanged();
        } else {
          kbpTripleBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder clearKbpTriple() {
        if (kbpTripleBuilder_ == null) {
          kbpTriple_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00010000);
          onChanged();
        } else {
          kbpTripleBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public Builder removeKbpTriple(int index) {
        if (kbpTripleBuilder_ == null) {
          ensureKbpTripleIsMutable();
          kbpTriple_.remove(index);
          onChanged();
        } else {
          kbpTripleBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder getKbpTripleBuilder(
          int index) {
        return getKbpTripleFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder getKbpTripleOrBuilder(
          int index) {
        if (kbpTripleBuilder_ == null) {
          return kbpTriple_.get(index);  } else {
          return kbpTripleBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> 
           getKbpTripleOrBuilderList() {
        if (kbpTripleBuilder_ != null) {
          return kbpTripleBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(kbpTriple_);
        }
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder addKbpTripleBuilder() {
        return getKbpTripleFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.getDefaultInstance());
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder addKbpTripleBuilder(
          int index) {
        return getKbpTripleFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.getDefaultInstance());
      }
      /**
       * <pre>
       * The KBP triples in this sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.RelationTriple kbpTriple = 16;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder> 
           getKbpTripleBuilderList() {
        return getKbpTripleFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder> 
          getKbpTripleFieldBuilder() {
        if (kbpTripleBuilder_ == null) {
          kbpTripleBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder>(
                  kbpTriple_,
                  ((bitField0_ & 0x00010000) != 0),
                  getParentForChildren(),
                  isClean());
          kbpTriple_ = null;
        }
        return kbpTripleBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> entailedSentence_ =
        java.util.Collections.emptyList();
      private void ensureEntailedSentenceIsMutable() {
        if (!((bitField0_ & 0x00020000) != 0)) {
          entailedSentence_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment>(entailedSentence_);
          bitField0_ |= 0x00020000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> entailedSentenceBuilder_;

      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> getEntailedSentenceList() {
        if (entailedSentenceBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entailedSentence_);
        } else {
          return entailedSentenceBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public int getEntailedSentenceCount() {
        if (entailedSentenceBuilder_ == null) {
          return entailedSentence_.size();
        } else {
          return entailedSentenceBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getEntailedSentence(int index) {
        if (entailedSentenceBuilder_ == null) {
          return entailedSentence_.get(index);
        } else {
          return entailedSentenceBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder setEntailedSentence(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment value) {
        if (entailedSentenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntailedSentenceIsMutable();
          entailedSentence_.set(index, value);
          onChanged();
        } else {
          entailedSentenceBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder setEntailedSentence(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder builderForValue) {
        if (entailedSentenceBuilder_ == null) {
          ensureEntailedSentenceIsMutable();
          entailedSentence_.set(index, builderForValue.build());
          onChanged();
        } else {
          entailedSentenceBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder addEntailedSentence(edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment value) {
        if (entailedSentenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntailedSentenceIsMutable();
          entailedSentence_.add(value);
          onChanged();
        } else {
          entailedSentenceBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder addEntailedSentence(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment value) {
        if (entailedSentenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntailedSentenceIsMutable();
          entailedSentence_.add(index, value);
          onChanged();
        } else {
          entailedSentenceBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder addEntailedSentence(
          edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder builderForValue) {
        if (entailedSentenceBuilder_ == null) {
          ensureEntailedSentenceIsMutable();
          entailedSentence_.add(builderForValue.build());
          onChanged();
        } else {
          entailedSentenceBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder addEntailedSentence(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder builderForValue) {
        if (entailedSentenceBuilder_ == null) {
          ensureEntailedSentenceIsMutable();
          entailedSentence_.add(index, builderForValue.build());
          onChanged();
        } else {
          entailedSentenceBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder addAllEntailedSentence(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> values) {
        if (entailedSentenceBuilder_ == null) {
          ensureEntailedSentenceIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, entailedSentence_);
          onChanged();
        } else {
          entailedSentenceBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder clearEntailedSentence() {
        if (entailedSentenceBuilder_ == null) {
          entailedSentence_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00020000);
          onChanged();
        } else {
          entailedSentenceBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public Builder removeEntailedSentence(int index) {
        if (entailedSentenceBuilder_ == null) {
          ensureEntailedSentenceIsMutable();
          entailedSentence_.remove(index);
          onChanged();
        } else {
          entailedSentenceBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder getEntailedSentenceBuilder(
          int index) {
        return getEntailedSentenceFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder getEntailedSentenceOrBuilder(
          int index) {
        if (entailedSentenceBuilder_ == null) {
          return entailedSentence_.get(index);  } else {
          return entailedSentenceBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> 
           getEntailedSentenceOrBuilderList() {
        if (entailedSentenceBuilder_ != null) {
          return entailedSentenceBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entailedSentence_);
        }
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder addEntailedSentenceBuilder() {
        return getEntailedSentenceFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.getDefaultInstance());
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder addEntailedSentenceBuilder(
          int index) {
        return getEntailedSentenceFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.getDefaultInstance());
      }
      /**
       * <pre>
       * The entailed sentences, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedSentence = 15;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder> 
           getEntailedSentenceBuilderList() {
        return getEntailedSentenceFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> 
          getEntailedSentenceFieldBuilder() {
        if (entailedSentenceBuilder_ == null) {
          entailedSentenceBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder>(
                  entailedSentence_,
                  ((bitField0_ & 0x00020000) != 0),
                  getParentForChildren(),
                  isClean());
          entailedSentence_ = null;
        }
        return entailedSentenceBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> entailedClause_ =
        java.util.Collections.emptyList();
      private void ensureEntailedClauseIsMutable() {
        if (!((bitField0_ & 0x00040000) != 0)) {
          entailedClause_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment>(entailedClause_);
          bitField0_ |= 0x00040000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> entailedClauseBuilder_;

      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> getEntailedClauseList() {
        if (entailedClauseBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entailedClause_);
        } else {
          return entailedClauseBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public int getEntailedClauseCount() {
        if (entailedClauseBuilder_ == null) {
          return entailedClause_.size();
        } else {
          return entailedClauseBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getEntailedClause(int index) {
        if (entailedClauseBuilder_ == null) {
          return entailedClause_.get(index);
        } else {
          return entailedClauseBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder setEntailedClause(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment value) {
        if (entailedClauseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntailedClauseIsMutable();
          entailedClause_.set(index, value);
          onChanged();
        } else {
          entailedClauseBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder setEntailedClause(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder builderForValue) {
        if (entailedClauseBuilder_ == null) {
          ensureEntailedClauseIsMutable();
          entailedClause_.set(index, builderForValue.build());
          onChanged();
        } else {
          entailedClauseBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder addEntailedClause(edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment value) {
        if (entailedClauseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntailedClauseIsMutable();
          entailedClause_.add(value);
          onChanged();
        } else {
          entailedClauseBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder addEntailedClause(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment value) {
        if (entailedClauseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntailedClauseIsMutable();
          entailedClause_.add(index, value);
          onChanged();
        } else {
          entailedClauseBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder addEntailedClause(
          edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder builderForValue) {
        if (entailedClauseBuilder_ == null) {
          ensureEntailedClauseIsMutable();
          entailedClause_.add(builderForValue.build());
          onChanged();
        } else {
          entailedClauseBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder addEntailedClause(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder builderForValue) {
        if (entailedClauseBuilder_ == null) {
          ensureEntailedClauseIsMutable();
          entailedClause_.add(index, builderForValue.build());
          onChanged();
        } else {
          entailedClauseBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder addAllEntailedClause(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment> values) {
        if (entailedClauseBuilder_ == null) {
          ensureEntailedClauseIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, entailedClause_);
          onChanged();
        } else {
          entailedClauseBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder clearEntailedClause() {
        if (entailedClauseBuilder_ == null) {
          entailedClause_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00040000);
          onChanged();
        } else {
          entailedClauseBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public Builder removeEntailedClause(int index) {
        if (entailedClauseBuilder_ == null) {
          ensureEntailedClauseIsMutable();
          entailedClause_.remove(index);
          onChanged();
        } else {
          entailedClauseBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder getEntailedClauseBuilder(
          int index) {
        return getEntailedClauseFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder getEntailedClauseOrBuilder(
          int index) {
        if (entailedClauseBuilder_ == null) {
          return entailedClause_.get(index);  } else {
          return entailedClauseBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> 
           getEntailedClauseOrBuilderList() {
        if (entailedClauseBuilder_ != null) {
          return entailedClauseBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entailedClause_);
        }
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder addEntailedClauseBuilder() {
        return getEntailedClauseFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.getDefaultInstance());
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder addEntailedClauseBuilder(
          int index) {
        return getEntailedClauseFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.getDefaultInstance());
      }
      /**
       * <pre>
       * The entailed clauses, by natural logic
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.SentenceFragment entailedClause = 35;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder> 
           getEntailedClauseBuilderList() {
        return getEntailedClauseFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder> 
          getEntailedClauseFieldBuilder() {
        if (entailedClauseBuilder_ == null) {
          entailedClauseBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder>(
                  entailedClause_,
                  ((bitField0_ & 0x00040000) != 0),
                  getParentForChildren(),
                  isClean());
          entailedClause_ = null;
        }
        return entailedClauseBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph enhancedDependencies_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> enhancedDependenciesBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       * @return Whether the enhancedDependencies field is set.
       */
      public boolean hasEnhancedDependencies() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       * @return The enhancedDependencies.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getEnhancedDependencies() {
        if (enhancedDependenciesBuilder_ == null) {
          return enhancedDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : enhancedDependencies_;
        } else {
          return enhancedDependenciesBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       */
      public Builder setEnhancedDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (enhancedDependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          enhancedDependencies_ = value;
          onChanged();
        } else {
          enhancedDependenciesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00080000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       */
      public Builder setEnhancedDependencies(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (enhancedDependenciesBuilder_ == null) {
          enhancedDependencies_ = builderForValue.build();
          onChanged();
        } else {
          enhancedDependenciesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00080000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       */
      public Builder mergeEnhancedDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (enhancedDependenciesBuilder_ == null) {
          if (((bitField0_ & 0x00080000) != 0) &&
              enhancedDependencies_ != null &&
              enhancedDependencies_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
            enhancedDependencies_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(enhancedDependencies_).mergeFrom(value).buildPartial();
          } else {
            enhancedDependencies_ = value;
          }
          onChanged();
        } else {
          enhancedDependenciesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00080000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       */
      public Builder clearEnhancedDependencies() {
        if (enhancedDependenciesBuilder_ == null) {
          enhancedDependencies_ = null;
          onChanged();
        } else {
          enhancedDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00080000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getEnhancedDependenciesBuilder() {
        bitField0_ |= 0x00080000;
        onChanged();
        return getEnhancedDependenciesFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getEnhancedDependenciesOrBuilder() {
        if (enhancedDependenciesBuilder_ != null) {
          return enhancedDependenciesBuilder_.getMessageOrBuilder();
        } else {
          return enhancedDependencies_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : enhancedDependencies_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedDependencies = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getEnhancedDependenciesFieldBuilder() {
        if (enhancedDependenciesBuilder_ == null) {
          enhancedDependenciesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  getEnhancedDependencies(),
                  getParentForChildren(),
                  isClean());
          enhancedDependencies_ = null;
        }
        return enhancedDependenciesBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph enhancedPlusPlusDependencies_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> enhancedPlusPlusDependenciesBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       * @return Whether the enhancedPlusPlusDependencies field is set.
       */
      public boolean hasEnhancedPlusPlusDependencies() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       * @return The enhancedPlusPlusDependencies.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getEnhancedPlusPlusDependencies() {
        if (enhancedPlusPlusDependenciesBuilder_ == null) {
          return enhancedPlusPlusDependencies_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : enhancedPlusPlusDependencies_;
        } else {
          return enhancedPlusPlusDependenciesBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       */
      public Builder setEnhancedPlusPlusDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (enhancedPlusPlusDependenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          enhancedPlusPlusDependencies_ = value;
          onChanged();
        } else {
          enhancedPlusPlusDependenciesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00100000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       */
      public Builder setEnhancedPlusPlusDependencies(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (enhancedPlusPlusDependenciesBuilder_ == null) {
          enhancedPlusPlusDependencies_ = builderForValue.build();
          onChanged();
        } else {
          enhancedPlusPlusDependenciesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00100000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       */
      public Builder mergeEnhancedPlusPlusDependencies(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (enhancedPlusPlusDependenciesBuilder_ == null) {
          if (((bitField0_ & 0x00100000) != 0) &&
              enhancedPlusPlusDependencies_ != null &&
              enhancedPlusPlusDependencies_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
            enhancedPlusPlusDependencies_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(enhancedPlusPlusDependencies_).mergeFrom(value).buildPartial();
          } else {
            enhancedPlusPlusDependencies_ = value;
          }
          onChanged();
        } else {
          enhancedPlusPlusDependenciesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00100000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       */
      public Builder clearEnhancedPlusPlusDependencies() {
        if (enhancedPlusPlusDependenciesBuilder_ == null) {
          enhancedPlusPlusDependencies_ = null;
          onChanged();
        } else {
          enhancedPlusPlusDependenciesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00100000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getEnhancedPlusPlusDependenciesBuilder() {
        bitField0_ |= 0x00100000;
        onChanged();
        return getEnhancedPlusPlusDependenciesFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getEnhancedPlusPlusDependenciesOrBuilder() {
        if (enhancedPlusPlusDependenciesBuilder_ != null) {
          return enhancedPlusPlusDependenciesBuilder_.getMessageOrBuilder();
        } else {
          return enhancedPlusPlusDependencies_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : enhancedPlusPlusDependencies_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph enhancedPlusPlusDependencies = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getEnhancedPlusPlusDependenciesFieldBuilder() {
        if (enhancedPlusPlusDependenciesBuilder_ == null) {
          enhancedPlusPlusDependenciesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  getEnhancedPlusPlusDependencies(),
                  getParentForChildren(),
                  isClean());
          enhancedPlusPlusDependencies_ = null;
        }
        return enhancedPlusPlusDependenciesBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> character_ =
        java.util.Collections.emptyList();
      private void ensureCharacterIsMutable() {
        if (!((bitField0_ & 0x00200000) != 0)) {
          character_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Token>(character_);
          bitField0_ |= 0x00200000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> characterBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getCharacterList() {
        if (characterBuilder_ == null) {
          return java.util.Collections.unmodifiableList(character_);
        } else {
          return characterBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public int getCharacterCount() {
        if (characterBuilder_ == null) {
          return character_.size();
        } else {
          return characterBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getCharacter(int index) {
        if (characterBuilder_ == null) {
          return character_.get(index);
        } else {
          return characterBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder setCharacter(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (characterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCharacterIsMutable();
          character_.set(index, value);
          onChanged();
        } else {
          characterBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder setCharacter(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          character_.set(index, builderForValue.build());
          onChanged();
        } else {
          characterBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder addCharacter(edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (characterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCharacterIsMutable();
          character_.add(value);
          onChanged();
        } else {
          characterBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder addCharacter(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (characterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCharacterIsMutable();
          character_.add(index, value);
          onChanged();
        } else {
          characterBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder addCharacter(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          character_.add(builderForValue.build());
          onChanged();
        } else {
          characterBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder addCharacter(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          character_.add(index, builderForValue.build());
          onChanged();
        } else {
          characterBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder addAllCharacter(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Token> values) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, character_);
          onChanged();
        } else {
          characterBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder clearCharacter() {
        if (characterBuilder_ == null) {
          character_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00200000);
          onChanged();
        } else {
          characterBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public Builder removeCharacter(int index) {
        if (characterBuilder_ == null) {
          ensureCharacterIsMutable();
          character_.remove(index);
          onChanged();
        } else {
          characterBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder getCharacterBuilder(
          int index) {
        return getCharacterFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getCharacterOrBuilder(
          int index) {
        if (characterBuilder_ == null) {
          return character_.get(index);  } else {
          return characterBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
           getCharacterOrBuilderList() {
        if (characterBuilder_ != null) {
          return characterBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(character_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addCharacterBuilder() {
        return getCharacterFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addCharacterBuilder(
          int index) {
        return getCharacterFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token character = 19;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder> 
           getCharacterBuilderList() {
        return getCharacterFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
          getCharacterFieldBuilder() {
        if (characterBuilder_ == null) {
          characterBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder>(
                  character_,
                  ((bitField0_ & 0x00200000) != 0),
                  getParentForChildren(),
                  isClean());
          character_ = null;
        }
        return characterBuilder_;
      }

      private int paragraph_ ;
      /**
       * <code>optional uint32 paragraph = 11;</code>
       * @return Whether the paragraph field is set.
       */
      @java.lang.Override
      public boolean hasParagraph() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * <code>optional uint32 paragraph = 11;</code>
       * @return The paragraph.
       */
      @java.lang.Override
      public int getParagraph() {
        return paragraph_;
      }
      /**
       * <code>optional uint32 paragraph = 11;</code>
       * @param value The paragraph to set.
       * @return This builder for chaining.
       */
      public Builder setParagraph(int value) {
        bitField0_ |= 0x00400000;
        paragraph_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 paragraph = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearParagraph() {
        bitField0_ = (bitField0_ & ~0x00400000);
        paragraph_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object text_ = "";
      /**
       * <pre>
       * Only needed if we're only saving the sentence.
       * </pre>
       *
       * <code>optional string text = 12;</code>
       * @return Whether the text field is set.
       */
      public boolean hasText() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <pre>
       * Only needed if we're only saving the sentence.
       * </pre>
       *
       * <code>optional string text = 12;</code>
       * @return The text.
       */
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            text_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Only needed if we're only saving the sentence.
       * </pre>
       *
       * <code>optional string text = 12;</code>
       * @return The bytes for text.
       */
      public com.google.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Only needed if we're only saving the sentence.
       * </pre>
       *
       * <code>optional string text = 12;</code>
       * @param value The text to set.
       * @return This builder for chaining.
       */
      public Builder setText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00800000;
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only needed if we're only saving the sentence.
       * </pre>
       *
       * <code>optional string text = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearText() {
        bitField0_ = (bitField0_ & ~0x00800000);
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only needed if we're only saving the sentence.
       * </pre>
       *
       * <code>optional string text = 12;</code>
       * @param value The bytes for text to set.
       * @return This builder for chaining.
       */
      public Builder setTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00800000;
        text_ = value;
        onChanged();
        return this;
      }

      private int lineNumber_ ;
      /**
       * <code>optional uint32 lineNumber = 20;</code>
       * @return Whether the lineNumber field is set.
       */
      @java.lang.Override
      public boolean hasLineNumber() {
        return ((bitField0_ & 0x01000000) != 0);
      }
      /**
       * <code>optional uint32 lineNumber = 20;</code>
       * @return The lineNumber.
       */
      @java.lang.Override
      public int getLineNumber() {
        return lineNumber_;
      }
      /**
       * <code>optional uint32 lineNumber = 20;</code>
       * @param value The lineNumber to set.
       * @return This builder for chaining.
       */
      public Builder setLineNumber(int value) {
        bitField0_ |= 0x01000000;
        lineNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 lineNumber = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearLineNumber() {
        bitField0_ = (bitField0_ & ~0x01000000);
        lineNumber_ = 0;
        onChanged();
        return this;
      }

      private boolean hasRelationAnnotations_ ;
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional bool hasRelationAnnotations = 51;</code>
       * @return Whether the hasRelationAnnotations field is set.
       */
      @java.lang.Override
      public boolean hasHasRelationAnnotations() {
        return ((bitField0_ & 0x02000000) != 0);
      }
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional bool hasRelationAnnotations = 51;</code>
       * @return The hasRelationAnnotations.
       */
      @java.lang.Override
      public boolean getHasRelationAnnotations() {
        return hasRelationAnnotations_;
      }
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional bool hasRelationAnnotations = 51;</code>
       * @param value The hasRelationAnnotations to set.
       * @return This builder for chaining.
       */
      public Builder setHasRelationAnnotations(boolean value) {
        bitField0_ |= 0x02000000;
        hasRelationAnnotations_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional bool hasRelationAnnotations = 51;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasRelationAnnotations() {
        bitField0_ = (bitField0_ & ~0x02000000);
        hasRelationAnnotations_ = false;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> entity_ =
        java.util.Collections.emptyList();
      private void ensureEntityIsMutable() {
        if (!((bitField0_ & 0x04000000) != 0)) {
          entity_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity>(entity_);
          bitField0_ |= 0x04000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Entity, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> entityBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> getEntityList() {
        if (entityBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entity_);
        } else {
          return entityBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public int getEntityCount() {
        if (entityBuilder_ == null) {
          return entity_.size();
        } else {
          return entityBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getEntity(int index) {
        if (entityBuilder_ == null) {
          return entity_.get(index);
        } else {
          return entityBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder setEntity(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity value) {
        if (entityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntityIsMutable();
          entity_.set(index, value);
          onChanged();
        } else {
          entityBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder setEntity(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder builderForValue) {
        if (entityBuilder_ == null) {
          ensureEntityIsMutable();
          entity_.set(index, builderForValue.build());
          onChanged();
        } else {
          entityBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder addEntity(edu.stanford.nlp.pipeline.CoreNLPProtos.Entity value) {
        if (entityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntityIsMutable();
          entity_.add(value);
          onChanged();
        } else {
          entityBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder addEntity(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity value) {
        if (entityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntityIsMutable();
          entity_.add(index, value);
          onChanged();
        } else {
          entityBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder addEntity(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder builderForValue) {
        if (entityBuilder_ == null) {
          ensureEntityIsMutable();
          entity_.add(builderForValue.build());
          onChanged();
        } else {
          entityBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder addEntity(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder builderForValue) {
        if (entityBuilder_ == null) {
          ensureEntityIsMutable();
          entity_.add(index, builderForValue.build());
          onChanged();
        } else {
          entityBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder addAllEntity(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> values) {
        if (entityBuilder_ == null) {
          ensureEntityIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, entity_);
          onChanged();
        } else {
          entityBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder clearEntity() {
        if (entityBuilder_ == null) {
          entity_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x04000000);
          onChanged();
        } else {
          entityBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public Builder removeEntity(int index) {
        if (entityBuilder_ == null) {
          ensureEntityIsMutable();
          entity_.remove(index);
          onChanged();
        } else {
          entityBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder getEntityBuilder(
          int index) {
        return getEntityFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder getEntityOrBuilder(
          int index) {
        if (entityBuilder_ == null) {
          return entity_.get(index);  } else {
          return entityBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> 
           getEntityOrBuilderList() {
        if (entityBuilder_ != null) {
          return entityBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entity_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder addEntityBuilder() {
        return getEntityFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder addEntityBuilder(
          int index) {
        return getEntityFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity entity = 52;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder> 
           getEntityBuilderList() {
        return getEntityFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Entity, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> 
          getEntityFieldBuilder() {
        if (entityBuilder_ == null) {
          entityBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Entity, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder>(
                  entity_,
                  ((bitField0_ & 0x04000000) != 0),
                  getParentForChildren(),
                  isClean());
          entity_ = null;
        }
        return entityBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Relation> relation_ =
        java.util.Collections.emptyList();
      private void ensureRelationIsMutable() {
        if (!((bitField0_ & 0x08000000) != 0)) {
          relation_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Relation>(relation_);
          bitField0_ |= 0x08000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Relation, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder> relationBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Relation> getRelationList() {
        if (relationBuilder_ == null) {
          return java.util.Collections.unmodifiableList(relation_);
        } else {
          return relationBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public int getRelationCount() {
        if (relationBuilder_ == null) {
          return relation_.size();
        } else {
          return relationBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation getRelation(int index) {
        if (relationBuilder_ == null) {
          return relation_.get(index);
        } else {
          return relationBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder setRelation(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation value) {
        if (relationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRelationIsMutable();
          relation_.set(index, value);
          onChanged();
        } else {
          relationBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder setRelation(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder builderForValue) {
        if (relationBuilder_ == null) {
          ensureRelationIsMutable();
          relation_.set(index, builderForValue.build());
          onChanged();
        } else {
          relationBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder addRelation(edu.stanford.nlp.pipeline.CoreNLPProtos.Relation value) {
        if (relationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRelationIsMutable();
          relation_.add(value);
          onChanged();
        } else {
          relationBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder addRelation(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation value) {
        if (relationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRelationIsMutable();
          relation_.add(index, value);
          onChanged();
        } else {
          relationBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder addRelation(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder builderForValue) {
        if (relationBuilder_ == null) {
          ensureRelationIsMutable();
          relation_.add(builderForValue.build());
          onChanged();
        } else {
          relationBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder addRelation(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder builderForValue) {
        if (relationBuilder_ == null) {
          ensureRelationIsMutable();
          relation_.add(index, builderForValue.build());
          onChanged();
        } else {
          relationBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder addAllRelation(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Relation> values) {
        if (relationBuilder_ == null) {
          ensureRelationIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, relation_);
          onChanged();
        } else {
          relationBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder clearRelation() {
        if (relationBuilder_ == null) {
          relation_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x08000000);
          onChanged();
        } else {
          relationBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public Builder removeRelation(int index) {
        if (relationBuilder_ == null) {
          ensureRelationIsMutable();
          relation_.remove(index);
          onChanged();
        } else {
          relationBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder getRelationBuilder(
          int index) {
        return getRelationFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder getRelationOrBuilder(
          int index) {
        if (relationBuilder_ == null) {
          return relation_.get(index);  } else {
          return relationBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder> 
           getRelationOrBuilderList() {
        if (relationBuilder_ != null) {
          return relationBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(relation_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder addRelationBuilder() {
        return getRelationFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder addRelationBuilder(
          int index) {
        return getRelationFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Relation relation = 53;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder> 
           getRelationBuilderList() {
        return getRelationFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Relation, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder> 
          getRelationFieldBuilder() {
        if (relationBuilder_ == null) {
          relationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Relation, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder>(
                  relation_,
                  ((bitField0_ & 0x08000000) != 0),
                  getParentForChildren(),
                  isClean());
          relation_ = null;
        }
        return relationBuilder_;
      }

      private boolean hasNumerizedTokensAnnotation_ ;
      /**
       * <code>optional bool hasNumerizedTokensAnnotation = 54;</code>
       * @return Whether the hasNumerizedTokensAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasHasNumerizedTokensAnnotation() {
        return ((bitField0_ & 0x10000000) != 0);
      }
      /**
       * <code>optional bool hasNumerizedTokensAnnotation = 54;</code>
       * @return The hasNumerizedTokensAnnotation.
       */
      @java.lang.Override
      public boolean getHasNumerizedTokensAnnotation() {
        return hasNumerizedTokensAnnotation_;
      }
      /**
       * <code>optional bool hasNumerizedTokensAnnotation = 54;</code>
       * @param value The hasNumerizedTokensAnnotation to set.
       * @return This builder for chaining.
       */
      public Builder setHasNumerizedTokensAnnotation(boolean value) {
        bitField0_ |= 0x10000000;
        hasNumerizedTokensAnnotation_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool hasNumerizedTokensAnnotation = 54;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasNumerizedTokensAnnotation() {
        bitField0_ = (bitField0_ & ~0x10000000);
        hasNumerizedTokensAnnotation_ = false;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> mentions_ =
        java.util.Collections.emptyList();
      private void ensureMentionsIsMutable() {
        if (!((bitField0_ & 0x20000000) != 0)) {
          mentions_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention>(mentions_);
          bitField0_ |= 0x20000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> mentionsBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> getMentionsList() {
        if (mentionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mentions_);
        } else {
          return mentionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public int getMentionsCount() {
        if (mentionsBuilder_ == null) {
          return mentions_.size();
        } else {
          return mentionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getMentions(int index) {
        if (mentionsBuilder_ == null) {
          return mentions_.get(index);
        } else {
          return mentionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder setMentions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention value) {
        if (mentionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsIsMutable();
          mentions_.set(index, value);
          onChanged();
        } else {
          mentionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder setMentions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder builderForValue) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          mentions_.set(index, builderForValue.build());
          onChanged();
        } else {
          mentionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder addMentions(edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention value) {
        if (mentionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsIsMutable();
          mentions_.add(value);
          onChanged();
        } else {
          mentionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder addMentions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention value) {
        if (mentionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsIsMutable();
          mentions_.add(index, value);
          onChanged();
        } else {
          mentionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder addMentions(
          edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder builderForValue) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          mentions_.add(builderForValue.build());
          onChanged();
        } else {
          mentionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder addMentions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder builderForValue) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          mentions_.add(index, builderForValue.build());
          onChanged();
        } else {
          mentionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder addAllMentions(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention> values) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, mentions_);
          onChanged();
        } else {
          mentionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder clearMentions() {
        if (mentionsBuilder_ == null) {
          mentions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x20000000);
          onChanged();
        } else {
          mentionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public Builder removeMentions(int index) {
        if (mentionsBuilder_ == null) {
          ensureMentionsIsMutable();
          mentions_.remove(index);
          onChanged();
        } else {
          mentionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder getMentionsBuilder(
          int index) {
        return getMentionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder getMentionsOrBuilder(
          int index) {
        if (mentionsBuilder_ == null) {
          return mentions_.get(index);  } else {
          return mentionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> 
           getMentionsOrBuilderList() {
        if (mentionsBuilder_ != null) {
          return mentionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mentions_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder addMentionsBuilder() {
        return getMentionsFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder addMentionsBuilder(
          int index) {
        return getMentionsFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.NERMention mentions = 55;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder> 
           getMentionsBuilderList() {
        return getMentionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder> 
          getMentionsFieldBuilder() {
        if (mentionsBuilder_ == null) {
          mentionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder>(
                  mentions_,
                  ((bitField0_ & 0x20000000) != 0),
                  getParentForChildren(),
                  isClean());
          mentions_ = null;
        }
        return mentionsBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> mentionsForCoref_ =
        java.util.Collections.emptyList();
      private void ensureMentionsForCorefIsMutable() {
        if (!((bitField0_ & 0x40000000) != 0)) {
          mentionsForCoref_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention>(mentionsForCoref_);
          bitField0_ |= 0x40000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Mention, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> mentionsForCorefBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> getMentionsForCorefList() {
        if (mentionsForCorefBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mentionsForCoref_);
        } else {
          return mentionsForCorefBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public int getMentionsForCorefCount() {
        if (mentionsForCorefBuilder_ == null) {
          return mentionsForCoref_.size();
        } else {
          return mentionsForCorefBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getMentionsForCoref(int index) {
        if (mentionsForCorefBuilder_ == null) {
          return mentionsForCoref_.get(index);
        } else {
          return mentionsForCorefBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder setMentionsForCoref(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention value) {
        if (mentionsForCorefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.set(index, value);
          onChanged();
        } else {
          mentionsForCorefBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder setMentionsForCoref(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder builderForValue) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.set(index, builderForValue.build());
          onChanged();
        } else {
          mentionsForCorefBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder addMentionsForCoref(edu.stanford.nlp.pipeline.CoreNLPProtos.Mention value) {
        if (mentionsForCorefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.add(value);
          onChanged();
        } else {
          mentionsForCorefBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder addMentionsForCoref(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention value) {
        if (mentionsForCorefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.add(index, value);
          onChanged();
        } else {
          mentionsForCorefBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder addMentionsForCoref(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder builderForValue) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.add(builderForValue.build());
          onChanged();
        } else {
          mentionsForCorefBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder addMentionsForCoref(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder builderForValue) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.add(index, builderForValue.build());
          onChanged();
        } else {
          mentionsForCorefBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder addAllMentionsForCoref(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Mention> values) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, mentionsForCoref_);
          onChanged();
        } else {
          mentionsForCorefBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder clearMentionsForCoref() {
        if (mentionsForCorefBuilder_ == null) {
          mentionsForCoref_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x40000000);
          onChanged();
        } else {
          mentionsForCorefBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public Builder removeMentionsForCoref(int index) {
        if (mentionsForCorefBuilder_ == null) {
          ensureMentionsForCorefIsMutable();
          mentionsForCoref_.remove(index);
          onChanged();
        } else {
          mentionsForCorefBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder getMentionsForCorefBuilder(
          int index) {
        return getMentionsForCorefFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder getMentionsForCorefOrBuilder(
          int index) {
        if (mentionsForCorefBuilder_ == null) {
          return mentionsForCoref_.get(index);  } else {
          return mentionsForCorefBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> 
           getMentionsForCorefOrBuilderList() {
        if (mentionsForCorefBuilder_ != null) {
          return mentionsForCorefBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mentionsForCoref_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder addMentionsForCorefBuilder() {
        return getMentionsForCorefFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder addMentionsForCorefBuilder(
          int index) {
        return getMentionsForCorefFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Mention mentionsForCoref = 56;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder> 
           getMentionsForCorefBuilderList() {
        return getMentionsForCorefFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Mention, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder> 
          getMentionsForCorefFieldBuilder() {
        if (mentionsForCorefBuilder_ == null) {
          mentionsForCorefBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Mention, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder>(
                  mentionsForCoref_,
                  ((bitField0_ & 0x40000000) != 0),
                  getParentForChildren(),
                  isClean());
          mentionsForCoref_ = null;
        }
        return mentionsForCorefBuilder_;
      }

      private boolean hasCorefMentionsAnnotation_ ;
      /**
       * <code>optional bool hasCorefMentionsAnnotation = 57;</code>
       * @return Whether the hasCorefMentionsAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasHasCorefMentionsAnnotation() {
        return ((bitField0_ & 0x80000000) != 0);
      }
      /**
       * <code>optional bool hasCorefMentionsAnnotation = 57;</code>
       * @return The hasCorefMentionsAnnotation.
       */
      @java.lang.Override
      public boolean getHasCorefMentionsAnnotation() {
        return hasCorefMentionsAnnotation_;
      }
      /**
       * <code>optional bool hasCorefMentionsAnnotation = 57;</code>
       * @param value The hasCorefMentionsAnnotation to set.
       * @return This builder for chaining.
       */
      public Builder setHasCorefMentionsAnnotation(boolean value) {
        bitField0_ |= 0x80000000;
        hasCorefMentionsAnnotation_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool hasCorefMentionsAnnotation = 57;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasCorefMentionsAnnotation() {
        bitField0_ = (bitField0_ & ~0x80000000);
        hasCorefMentionsAnnotation_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object sentenceID_ = "";
      /**
       * <pre>
       * Useful when storing sentences (e.g. ForEach)
       * </pre>
       *
       * <code>optional string sentenceID = 58;</code>
       * @return Whether the sentenceID field is set.
       */
      public boolean hasSentenceID() {
        return ((bitField1_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Useful when storing sentences (e.g. ForEach)
       * </pre>
       *
       * <code>optional string sentenceID = 58;</code>
       * @return The sentenceID.
       */
      public java.lang.String getSentenceID() {
        java.lang.Object ref = sentenceID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sentenceID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Useful when storing sentences (e.g. ForEach)
       * </pre>
       *
       * <code>optional string sentenceID = 58;</code>
       * @return The bytes for sentenceID.
       */
      public com.google.protobuf.ByteString
          getSentenceIDBytes() {
        java.lang.Object ref = sentenceID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sentenceID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Useful when storing sentences (e.g. ForEach)
       * </pre>
       *
       * <code>optional string sentenceID = 58;</code>
       * @param value The sentenceID to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000001;
        sentenceID_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Useful when storing sentences (e.g. ForEach)
       * </pre>
       *
       * <code>optional string sentenceID = 58;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentenceID() {
        bitField1_ = (bitField1_ & ~0x00000001);
        sentenceID_ = getDefaultInstance().getSentenceID();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Useful when storing sentences (e.g. ForEach)
       * </pre>
       *
       * <code>optional string sentenceID = 58;</code>
       * @param value The bytes for sentenceID to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000001;
        sentenceID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sectionDate_ = "";
      /**
       * <pre>
       * date of section
       * </pre>
       *
       * <code>optional string sectionDate = 59;</code>
       * @return Whether the sectionDate field is set.
       */
      public boolean hasSectionDate() {
        return ((bitField1_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * date of section
       * </pre>
       *
       * <code>optional string sectionDate = 59;</code>
       * @return The sectionDate.
       */
      public java.lang.String getSectionDate() {
        java.lang.Object ref = sectionDate_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sectionDate_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * date of section
       * </pre>
       *
       * <code>optional string sectionDate = 59;</code>
       * @return The bytes for sectionDate.
       */
      public com.google.protobuf.ByteString
          getSectionDateBytes() {
        java.lang.Object ref = sectionDate_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sectionDate_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * date of section
       * </pre>
       *
       * <code>optional string sectionDate = 59;</code>
       * @param value The sectionDate to set.
       * @return This builder for chaining.
       */
      public Builder setSectionDate(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000002;
        sectionDate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * date of section
       * </pre>
       *
       * <code>optional string sectionDate = 59;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionDate() {
        bitField1_ = (bitField1_ & ~0x00000002);
        sectionDate_ = getDefaultInstance().getSectionDate();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * date of section
       * </pre>
       *
       * <code>optional string sectionDate = 59;</code>
       * @param value The bytes for sectionDate to set.
       * @return This builder for chaining.
       */
      public Builder setSectionDateBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000002;
        sectionDate_ = value;
        onChanged();
        return this;
      }

      private int sectionIndex_ ;
      /**
       * <pre>
       * section index for this sentence's section
       * </pre>
       *
       * <code>optional uint32 sectionIndex = 60;</code>
       * @return Whether the sectionIndex field is set.
       */
      @java.lang.Override
      public boolean hasSectionIndex() {
        return ((bitField1_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * section index for this sentence's section
       * </pre>
       *
       * <code>optional uint32 sectionIndex = 60;</code>
       * @return The sectionIndex.
       */
      @java.lang.Override
      public int getSectionIndex() {
        return sectionIndex_;
      }
      /**
       * <pre>
       * section index for this sentence's section
       * </pre>
       *
       * <code>optional uint32 sectionIndex = 60;</code>
       * @param value The sectionIndex to set.
       * @return This builder for chaining.
       */
      public Builder setSectionIndex(int value) {
        bitField1_ |= 0x00000004;
        sectionIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * section index for this sentence's section
       * </pre>
       *
       * <code>optional uint32 sectionIndex = 60;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionIndex() {
        bitField1_ = (bitField1_ & ~0x00000004);
        sectionIndex_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object sectionName_ = "";
      /**
       * <pre>
       * name of section
       * </pre>
       *
       * <code>optional string sectionName = 61;</code>
       * @return Whether the sectionName field is set.
       */
      public boolean hasSectionName() {
        return ((bitField1_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * name of section
       * </pre>
       *
       * <code>optional string sectionName = 61;</code>
       * @return The sectionName.
       */
      public java.lang.String getSectionName() {
        java.lang.Object ref = sectionName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sectionName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * name of section
       * </pre>
       *
       * <code>optional string sectionName = 61;</code>
       * @return The bytes for sectionName.
       */
      public com.google.protobuf.ByteString
          getSectionNameBytes() {
        java.lang.Object ref = sectionName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sectionName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * name of section
       * </pre>
       *
       * <code>optional string sectionName = 61;</code>
       * @param value The sectionName to set.
       * @return This builder for chaining.
       */
      public Builder setSectionName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000008;
        sectionName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * name of section
       * </pre>
       *
       * <code>optional string sectionName = 61;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionName() {
        bitField1_ = (bitField1_ & ~0x00000008);
        sectionName_ = getDefaultInstance().getSectionName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * name of section
       * </pre>
       *
       * <code>optional string sectionName = 61;</code>
       * @param value The bytes for sectionName to set.
       * @return This builder for chaining.
       */
      public Builder setSectionNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000008;
        sectionName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sectionAuthor_ = "";
      /**
       * <pre>
       * author of section
       * </pre>
       *
       * <code>optional string sectionAuthor = 62;</code>
       * @return Whether the sectionAuthor field is set.
       */
      public boolean hasSectionAuthor() {
        return ((bitField1_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * author of section
       * </pre>
       *
       * <code>optional string sectionAuthor = 62;</code>
       * @return The sectionAuthor.
       */
      public java.lang.String getSectionAuthor() {
        java.lang.Object ref = sectionAuthor_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sectionAuthor_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * author of section
       * </pre>
       *
       * <code>optional string sectionAuthor = 62;</code>
       * @return The bytes for sectionAuthor.
       */
      public com.google.protobuf.ByteString
          getSectionAuthorBytes() {
        java.lang.Object ref = sectionAuthor_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sectionAuthor_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * author of section
       * </pre>
       *
       * <code>optional string sectionAuthor = 62;</code>
       * @param value The sectionAuthor to set.
       * @return This builder for chaining.
       */
      public Builder setSectionAuthor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000010;
        sectionAuthor_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * author of section
       * </pre>
       *
       * <code>optional string sectionAuthor = 62;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionAuthor() {
        bitField1_ = (bitField1_ & ~0x00000010);
        sectionAuthor_ = getDefaultInstance().getSectionAuthor();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * author of section
       * </pre>
       *
       * <code>optional string sectionAuthor = 62;</code>
       * @param value The bytes for sectionAuthor to set.
       * @return This builder for chaining.
       */
      public Builder setSectionAuthorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000010;
        sectionAuthor_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object docID_ = "";
      /**
       * <pre>
       * doc id
       * </pre>
       *
       * <code>optional string docID = 63;</code>
       * @return Whether the docID field is set.
       */
      public boolean hasDocID() {
        return ((bitField1_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * doc id
       * </pre>
       *
       * <code>optional string docID = 63;</code>
       * @return The docID.
       */
      public java.lang.String getDocID() {
        java.lang.Object ref = docID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            docID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * doc id
       * </pre>
       *
       * <code>optional string docID = 63;</code>
       * @return The bytes for docID.
       */
      public com.google.protobuf.ByteString
          getDocIDBytes() {
        java.lang.Object ref = docID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * doc id
       * </pre>
       *
       * <code>optional string docID = 63;</code>
       * @param value The docID to set.
       * @return This builder for chaining.
       */
      public Builder setDocID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000020;
        docID_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * doc id
       * </pre>
       *
       * <code>optional string docID = 63;</code>
       * @return This builder for chaining.
       */
      public Builder clearDocID() {
        bitField1_ = (bitField1_ & ~0x00000020);
        docID_ = getDefaultInstance().getDocID();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * doc id
       * </pre>
       *
       * <code>optional string docID = 63;</code>
       * @param value The bytes for docID to set.
       * @return This builder for chaining.
       */
      public Builder setDocIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000020;
        docID_ = value;
        onChanged();
        return this;
      }

      private boolean sectionQuoted_ ;
      /**
       * <pre>
       * is this sentence in an xml quote in a post
       * </pre>
       *
       * <code>optional bool sectionQuoted = 64;</code>
       * @return Whether the sectionQuoted field is set.
       */
      @java.lang.Override
      public boolean hasSectionQuoted() {
        return ((bitField1_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * is this sentence in an xml quote in a post
       * </pre>
       *
       * <code>optional bool sectionQuoted = 64;</code>
       * @return The sectionQuoted.
       */
      @java.lang.Override
      public boolean getSectionQuoted() {
        return sectionQuoted_;
      }
      /**
       * <pre>
       * is this sentence in an xml quote in a post
       * </pre>
       *
       * <code>optional bool sectionQuoted = 64;</code>
       * @param value The sectionQuoted to set.
       * @return This builder for chaining.
       */
      public Builder setSectionQuoted(boolean value) {
        bitField1_ |= 0x00000040;
        sectionQuoted_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * is this sentence in an xml quote in a post
       * </pre>
       *
       * <code>optional bool sectionQuoted = 64;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionQuoted() {
        bitField1_ = (bitField1_ & ~0x00000040);
        sectionQuoted_ = false;
        onChanged();
        return this;
      }

      private boolean hasEntityMentionsAnnotation_ ;
      /**
       * <pre>
       * check if there are entity mentions
       * </pre>
       *
       * <code>optional bool hasEntityMentionsAnnotation = 65;</code>
       * @return Whether the hasEntityMentionsAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasHasEntityMentionsAnnotation() {
        return ((bitField1_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * check if there are entity mentions
       * </pre>
       *
       * <code>optional bool hasEntityMentionsAnnotation = 65;</code>
       * @return The hasEntityMentionsAnnotation.
       */
      @java.lang.Override
      public boolean getHasEntityMentionsAnnotation() {
        return hasEntityMentionsAnnotation_;
      }
      /**
       * <pre>
       * check if there are entity mentions
       * </pre>
       *
       * <code>optional bool hasEntityMentionsAnnotation = 65;</code>
       * @param value The hasEntityMentionsAnnotation to set.
       * @return This builder for chaining.
       */
      public Builder setHasEntityMentionsAnnotation(boolean value) {
        bitField1_ |= 0x00000080;
        hasEntityMentionsAnnotation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * check if there are entity mentions
       * </pre>
       *
       * <code>optional bool hasEntityMentionsAnnotation = 65;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasEntityMentionsAnnotation() {
        bitField1_ = (bitField1_ & ~0x00000080);
        hasEntityMentionsAnnotation_ = false;
        onChanged();
        return this;
      }

      private boolean hasKBPTriplesAnnotation_ ;
      /**
       * <pre>
       * check if there are KBP triples
       * </pre>
       *
       * <code>optional bool hasKBPTriplesAnnotation = 68;</code>
       * @return Whether the hasKBPTriplesAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasHasKBPTriplesAnnotation() {
        return ((bitField1_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * check if there are KBP triples
       * </pre>
       *
       * <code>optional bool hasKBPTriplesAnnotation = 68;</code>
       * @return The hasKBPTriplesAnnotation.
       */
      @java.lang.Override
      public boolean getHasKBPTriplesAnnotation() {
        return hasKBPTriplesAnnotation_;
      }
      /**
       * <pre>
       * check if there are KBP triples
       * </pre>
       *
       * <code>optional bool hasKBPTriplesAnnotation = 68;</code>
       * @param value The hasKBPTriplesAnnotation to set.
       * @return This builder for chaining.
       */
      public Builder setHasKBPTriplesAnnotation(boolean value) {
        bitField1_ |= 0x00000100;
        hasKBPTriplesAnnotation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * check if there are KBP triples
       * </pre>
       *
       * <code>optional bool hasKBPTriplesAnnotation = 68;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasKBPTriplesAnnotation() {
        bitField1_ = (bitField1_ & ~0x00000100);
        hasKBPTriplesAnnotation_ = false;
        onChanged();
        return this;
      }

      private boolean hasOpenieTriplesAnnotation_ ;
      /**
       * <pre>
       * check if there are OpenIE triples
       * </pre>
       *
       * <code>optional bool hasOpenieTriplesAnnotation = 69;</code>
       * @return Whether the hasOpenieTriplesAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasHasOpenieTriplesAnnotation() {
        return ((bitField1_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * check if there are OpenIE triples
       * </pre>
       *
       * <code>optional bool hasOpenieTriplesAnnotation = 69;</code>
       * @return The hasOpenieTriplesAnnotation.
       */
      @java.lang.Override
      public boolean getHasOpenieTriplesAnnotation() {
        return hasOpenieTriplesAnnotation_;
      }
      /**
       * <pre>
       * check if there are OpenIE triples
       * </pre>
       *
       * <code>optional bool hasOpenieTriplesAnnotation = 69;</code>
       * @param value The hasOpenieTriplesAnnotation to set.
       * @return This builder for chaining.
       */
      public Builder setHasOpenieTriplesAnnotation(boolean value) {
        bitField1_ |= 0x00000200;
        hasOpenieTriplesAnnotation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * check if there are OpenIE triples
       * </pre>
       *
       * <code>optional bool hasOpenieTriplesAnnotation = 69;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasOpenieTriplesAnnotation() {
        bitField1_ = (bitField1_ & ~0x00000200);
        hasOpenieTriplesAnnotation_ = false;
        onChanged();
        return this;
      }

      private int chapterIndex_ ;
      /**
       * <pre>
       * quote stuff
       * </pre>
       *
       * <code>optional uint32 chapterIndex = 66;</code>
       * @return Whether the chapterIndex field is set.
       */
      @java.lang.Override
      public boolean hasChapterIndex() {
        return ((bitField1_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * quote stuff
       * </pre>
       *
       * <code>optional uint32 chapterIndex = 66;</code>
       * @return The chapterIndex.
       */
      @java.lang.Override
      public int getChapterIndex() {
        return chapterIndex_;
      }
      /**
       * <pre>
       * quote stuff
       * </pre>
       *
       * <code>optional uint32 chapterIndex = 66;</code>
       * @param value The chapterIndex to set.
       * @return This builder for chaining.
       */
      public Builder setChapterIndex(int value) {
        bitField1_ |= 0x00000400;
        chapterIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * quote stuff
       * </pre>
       *
       * <code>optional uint32 chapterIndex = 66;</code>
       * @return This builder for chaining.
       */
      public Builder clearChapterIndex() {
        bitField1_ = (bitField1_ & ~0x00000400);
        chapterIndex_ = 0;
        onChanged();
        return this;
      }

      private int paragraphIndex_ ;
      /**
       * <code>optional uint32 paragraphIndex = 67;</code>
       * @return Whether the paragraphIndex field is set.
       */
      @java.lang.Override
      public boolean hasParagraphIndex() {
        return ((bitField1_ & 0x00000800) != 0);
      }
      /**
       * <code>optional uint32 paragraphIndex = 67;</code>
       * @return The paragraphIndex.
       */
      @java.lang.Override
      public int getParagraphIndex() {
        return paragraphIndex_;
      }
      /**
       * <code>optional uint32 paragraphIndex = 67;</code>
       * @param value The paragraphIndex to set.
       * @return This builder for chaining.
       */
      public Builder setParagraphIndex(int value) {
        bitField1_ |= 0x00000800;
        paragraphIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 paragraphIndex = 67;</code>
       * @return This builder for chaining.
       */
      public Builder clearParagraphIndex() {
        bitField1_ = (bitField1_ & ~0x00000800);
        paragraphIndex_ = 0;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence enhancedSentence_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder> enhancedSentenceBuilder_;
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       * @return Whether the enhancedSentence field is set.
       */
      public boolean hasEnhancedSentence() {
        return ((bitField1_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       * @return The enhancedSentence.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getEnhancedSentence() {
        if (enhancedSentenceBuilder_ == null) {
          return enhancedSentence_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance() : enhancedSentence_;
        } else {
          return enhancedSentenceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       */
      public Builder setEnhancedSentence(edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence value) {
        if (enhancedSentenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          enhancedSentence_ = value;
          onChanged();
        } else {
          enhancedSentenceBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00001000;
        return this;
      }
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       */
      public Builder setEnhancedSentence(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder builderForValue) {
        if (enhancedSentenceBuilder_ == null) {
          enhancedSentence_ = builderForValue.build();
          onChanged();
        } else {
          enhancedSentenceBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00001000;
        return this;
      }
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       */
      public Builder mergeEnhancedSentence(edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence value) {
        if (enhancedSentenceBuilder_ == null) {
          if (((bitField1_ & 0x00001000) != 0) &&
              enhancedSentence_ != null &&
              enhancedSentence_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance()) {
            enhancedSentence_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.newBuilder(enhancedSentence_).mergeFrom(value).buildPartial();
          } else {
            enhancedSentence_ = value;
          }
          onChanged();
        } else {
          enhancedSentenceBuilder_.mergeFrom(value);
        }
        bitField1_ |= 0x00001000;
        return this;
      }
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       */
      public Builder clearEnhancedSentence() {
        if (enhancedSentenceBuilder_ == null) {
          enhancedSentence_ = null;
          onChanged();
        } else {
          enhancedSentenceBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00001000);
        return this;
      }
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder getEnhancedSentenceBuilder() {
        bitField1_ |= 0x00001000;
        onChanged();
        return getEnhancedSentenceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder getEnhancedSentenceOrBuilder() {
        if (enhancedSentenceBuilder_ != null) {
          return enhancedSentenceBuilder_.getMessageOrBuilder();
        } else {
          return enhancedSentence_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.getDefaultInstance() : enhancedSentence_;
        }
      }
      /**
       * <pre>
       * the quote annotator can soometimes add merged sentences
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Sentence enhancedSentence = 70;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder> 
          getEnhancedSentenceFieldBuilder() {
        if (enhancedSentenceBuilder_ == null) {
          enhancedSentenceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence, edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceOrBuilder>(
                  getEnhancedSentence(),
                  getParentForChildren(),
                  isClean());
          enhancedSentence_ = null;
        }
        return enhancedSentenceBuilder_;
      }

      private java.lang.Object speaker_ = "";
      /**
       * <pre>
       * speaker stuff
       * </pre>
       *
       * <code>optional string speaker = 71;</code>
       * @return Whether the speaker field is set.
       */
      public boolean hasSpeaker() {
        return ((bitField1_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * speaker stuff
       * </pre>
       *
       * <code>optional string speaker = 71;</code>
       * @return The speaker.
       */
      public java.lang.String getSpeaker() {
        java.lang.Object ref = speaker_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            speaker_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * speaker stuff
       * </pre>
       *
       * <code>optional string speaker = 71;</code>
       * @return The bytes for speaker.
       */
      public com.google.protobuf.ByteString
          getSpeakerBytes() {
        java.lang.Object ref = speaker_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          speaker_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * speaker stuff
       * </pre>
       *
       * <code>optional string speaker = 71;</code>
       * @param value The speaker to set.
       * @return This builder for chaining.
       */
      public Builder setSpeaker(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00002000;
        speaker_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * speaker stuff
       * </pre>
       *
       * <code>optional string speaker = 71;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpeaker() {
        bitField1_ = (bitField1_ & ~0x00002000);
        speaker_ = getDefaultInstance().getSpeaker();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * speaker stuff
       * </pre>
       *
       * <code>optional string speaker = 71;</code>
       * @param value The bytes for speaker to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00002000;
        speaker_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object speakerType_ = "";
      /**
       * <pre>
       * The type of speaker speaking this sentence
       * </pre>
       *
       * <code>optional string speakerType = 72;</code>
       * @return Whether the speakerType field is set.
       */
      public boolean hasSpeakerType() {
        return ((bitField1_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * The type of speaker speaking this sentence
       * </pre>
       *
       * <code>optional string speakerType = 72;</code>
       * @return The speakerType.
       */
      public java.lang.String getSpeakerType() {
        java.lang.Object ref = speakerType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            speakerType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The type of speaker speaking this sentence
       * </pre>
       *
       * <code>optional string speakerType = 72;</code>
       * @return The bytes for speakerType.
       */
      public com.google.protobuf.ByteString
          getSpeakerTypeBytes() {
        java.lang.Object ref = speakerType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          speakerType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The type of speaker speaking this sentence
       * </pre>
       *
       * <code>optional string speakerType = 72;</code>
       * @param value The speakerType to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00004000;
        speakerType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of speaker speaking this sentence
       * </pre>
       *
       * <code>optional string speakerType = 72;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpeakerType() {
        bitField1_ = (bitField1_ & ~0x00004000);
        speakerType_ = getDefaultInstance().getSpeakerType();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of speaker speaking this sentence
       * </pre>
       *
       * <code>optional string speakerType = 72;</code>
       * @param value The bytes for speakerType to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00004000;
        speakerType_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Sentence)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Sentence)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Sentence>
        PARSER = new com.google.protobuf.AbstractParser<Sentence>() {
      @java.lang.Override
      public Sentence parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Sentence> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Sentence> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentence getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TokenOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Token)
      com.google.protobuf.GeneratedMessageV3.
          ExtendableMessageOrBuilder<Token> {

    /**
     * <pre>
     * Fields set by the default annotators [new CoreNLP(new Properties())]
     * </pre>
     *
     * <code>optional string word = 1;</code>
     * @return Whether the word field is set.
     */
    boolean hasWord();
    /**
     * <pre>
     * Fields set by the default annotators [new CoreNLP(new Properties())]
     * </pre>
     *
     * <code>optional string word = 1;</code>
     * @return The word.
     */
    java.lang.String getWord();
    /**
     * <pre>
     * Fields set by the default annotators [new CoreNLP(new Properties())]
     * </pre>
     *
     * <code>optional string word = 1;</code>
     * @return The bytes for word.
     */
    com.google.protobuf.ByteString
        getWordBytes();

    /**
     * <pre>
     * The word's part of speech tag
     * </pre>
     *
     * <code>optional string pos = 2;</code>
     * @return Whether the pos field is set.
     */
    boolean hasPos();
    /**
     * <pre>
     * The word's part of speech tag
     * </pre>
     *
     * <code>optional string pos = 2;</code>
     * @return The pos.
     */
    java.lang.String getPos();
    /**
     * <pre>
     * The word's part of speech tag
     * </pre>
     *
     * <code>optional string pos = 2;</code>
     * @return The bytes for pos.
     */
    com.google.protobuf.ByteString
        getPosBytes();

    /**
     * <pre>
     * The word's 'value', (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * The word's 'value', (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * The word's 'value', (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <pre>
     * The word's 'category' (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string category = 4;</code>
     * @return Whether the category field is set.
     */
    boolean hasCategory();
    /**
     * <pre>
     * The word's 'category' (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string category = 4;</code>
     * @return The category.
     */
    java.lang.String getCategory();
    /**
     * <pre>
     * The word's 'category' (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string category = 4;</code>
     * @return The bytes for category.
     */
    com.google.protobuf.ByteString
        getCategoryBytes();

    /**
     * <pre>
     * The whitespace/xml before the token
     * </pre>
     *
     * <code>optional string before = 5;</code>
     * @return Whether the before field is set.
     */
    boolean hasBefore();
    /**
     * <pre>
     * The whitespace/xml before the token
     * </pre>
     *
     * <code>optional string before = 5;</code>
     * @return The before.
     */
    java.lang.String getBefore();
    /**
     * <pre>
     * The whitespace/xml before the token
     * </pre>
     *
     * <code>optional string before = 5;</code>
     * @return The bytes for before.
     */
    com.google.protobuf.ByteString
        getBeforeBytes();

    /**
     * <pre>
     * The whitespace/xml after the token
     * </pre>
     *
     * <code>optional string after = 6;</code>
     * @return Whether the after field is set.
     */
    boolean hasAfter();
    /**
     * <pre>
     * The whitespace/xml after the token
     * </pre>
     *
     * <code>optional string after = 6;</code>
     * @return The after.
     */
    java.lang.String getAfter();
    /**
     * <pre>
     * The whitespace/xml after the token
     * </pre>
     *
     * <code>optional string after = 6;</code>
     * @return The bytes for after.
     */
    com.google.protobuf.ByteString
        getAfterBytes();

    /**
     * <pre>
     * The original text for this token
     * </pre>
     *
     * <code>optional string originalText = 7;</code>
     * @return Whether the originalText field is set.
     */
    boolean hasOriginalText();
    /**
     * <pre>
     * The original text for this token
     * </pre>
     *
     * <code>optional string originalText = 7;</code>
     * @return The originalText.
     */
    java.lang.String getOriginalText();
    /**
     * <pre>
     * The original text for this token
     * </pre>
     *
     * <code>optional string originalText = 7;</code>
     * @return The bytes for originalText.
     */
    com.google.protobuf.ByteString
        getOriginalTextBytes();

    /**
     * <pre>
     * The word's NER tag
     * </pre>
     *
     * <code>optional string ner = 8;</code>
     * @return Whether the ner field is set.
     */
    boolean hasNer();
    /**
     * <pre>
     * The word's NER tag
     * </pre>
     *
     * <code>optional string ner = 8;</code>
     * @return The ner.
     */
    java.lang.String getNer();
    /**
     * <pre>
     * The word's NER tag
     * </pre>
     *
     * <code>optional string ner = 8;</code>
     * @return The bytes for ner.
     */
    com.google.protobuf.ByteString
        getNerBytes();

    /**
     * <pre>
     * The word's coarse NER tag
     * </pre>
     *
     * <code>optional string coarseNER = 62;</code>
     * @return Whether the coarseNER field is set.
     */
    boolean hasCoarseNER();
    /**
     * <pre>
     * The word's coarse NER tag
     * </pre>
     *
     * <code>optional string coarseNER = 62;</code>
     * @return The coarseNER.
     */
    java.lang.String getCoarseNER();
    /**
     * <pre>
     * The word's coarse NER tag
     * </pre>
     *
     * <code>optional string coarseNER = 62;</code>
     * @return The bytes for coarseNER.
     */
    com.google.protobuf.ByteString
        getCoarseNERBytes();

    /**
     * <pre>
     * The word's fine-grained NER tag
     * </pre>
     *
     * <code>optional string fineGrainedNER = 63;</code>
     * @return Whether the fineGrainedNER field is set.
     */
    boolean hasFineGrainedNER();
    /**
     * <pre>
     * The word's fine-grained NER tag
     * </pre>
     *
     * <code>optional string fineGrainedNER = 63;</code>
     * @return The fineGrainedNER.
     */
    java.lang.String getFineGrainedNER();
    /**
     * <pre>
     * The word's fine-grained NER tag
     * </pre>
     *
     * <code>optional string fineGrainedNER = 63;</code>
     * @return The bytes for fineGrainedNER.
     */
    com.google.protobuf.ByteString
        getFineGrainedNERBytes();

    /**
     * <pre>
     * listing of probs
     * </pre>
     *
     * <code>repeated string nerLabelProbs = 66;</code>
     * @return A list containing the nerLabelProbs.
     */
    java.util.List<java.lang.String>
        getNerLabelProbsList();
    /**
     * <pre>
     * listing of probs
     * </pre>
     *
     * <code>repeated string nerLabelProbs = 66;</code>
     * @return The count of nerLabelProbs.
     */
    int getNerLabelProbsCount();
    /**
     * <pre>
     * listing of probs
     * </pre>
     *
     * <code>repeated string nerLabelProbs = 66;</code>
     * @param index The index of the element to return.
     * @return The nerLabelProbs at the given index.
     */
    java.lang.String getNerLabelProbs(int index);
    /**
     * <pre>
     * listing of probs
     * </pre>
     *
     * <code>repeated string nerLabelProbs = 66;</code>
     * @param index The index of the value to return.
     * @return The bytes of the nerLabelProbs at the given index.
     */
    com.google.protobuf.ByteString
        getNerLabelProbsBytes(int index);

    /**
     * <pre>
     * The word's normalized NER tag
     * </pre>
     *
     * <code>optional string normalizedNER = 9;</code>
     * @return Whether the normalizedNER field is set.
     */
    boolean hasNormalizedNER();
    /**
     * <pre>
     * The word's normalized NER tag
     * </pre>
     *
     * <code>optional string normalizedNER = 9;</code>
     * @return The normalizedNER.
     */
    java.lang.String getNormalizedNER();
    /**
     * <pre>
     * The word's normalized NER tag
     * </pre>
     *
     * <code>optional string normalizedNER = 9;</code>
     * @return The bytes for normalizedNER.
     */
    com.google.protobuf.ByteString
        getNormalizedNERBytes();

    /**
     * <pre>
     * The word's lemma
     * </pre>
     *
     * <code>optional string lemma = 10;</code>
     * @return Whether the lemma field is set.
     */
    boolean hasLemma();
    /**
     * <pre>
     * The word's lemma
     * </pre>
     *
     * <code>optional string lemma = 10;</code>
     * @return The lemma.
     */
    java.lang.String getLemma();
    /**
     * <pre>
     * The word's lemma
     * </pre>
     *
     * <code>optional string lemma = 10;</code>
     * @return The bytes for lemma.
     */
    com.google.protobuf.ByteString
        getLemmaBytes();

    /**
     * <pre>
     * The character offset begin, in the document
     * </pre>
     *
     * <code>optional uint32 beginChar = 11;</code>
     * @return Whether the beginChar field is set.
     */
    boolean hasBeginChar();
    /**
     * <pre>
     * The character offset begin, in the document
     * </pre>
     *
     * <code>optional uint32 beginChar = 11;</code>
     * @return The beginChar.
     */
    int getBeginChar();

    /**
     * <pre>
     * The character offset end, in the document
     * </pre>
     *
     * <code>optional uint32 endChar = 12;</code>
     * @return Whether the endChar field is set.
     */
    boolean hasEndChar();
    /**
     * <pre>
     * The character offset end, in the document
     * </pre>
     *
     * <code>optional uint32 endChar = 12;</code>
     * @return The endChar.
     */
    int getEndChar();

    /**
     * <pre>
     * The utterance tag used in dcoref
     * </pre>
     *
     * <code>optional uint32 utterance = 13;</code>
     * @return Whether the utterance field is set.
     */
    boolean hasUtterance();
    /**
     * <pre>
     * The utterance tag used in dcoref
     * </pre>
     *
     * <code>optional uint32 utterance = 13;</code>
     * @return The utterance.
     */
    int getUtterance();

    /**
     * <pre>
     * The speaker speaking this word
     * </pre>
     *
     * <code>optional string speaker = 14;</code>
     * @return Whether the speaker field is set.
     */
    boolean hasSpeaker();
    /**
     * <pre>
     * The speaker speaking this word
     * </pre>
     *
     * <code>optional string speaker = 14;</code>
     * @return The speaker.
     */
    java.lang.String getSpeaker();
    /**
     * <pre>
     * The speaker speaking this word
     * </pre>
     *
     * <code>optional string speaker = 14;</code>
     * @return The bytes for speaker.
     */
    com.google.protobuf.ByteString
        getSpeakerBytes();

    /**
     * <pre>
     * The type of speaker speaking this word
     * </pre>
     *
     * <code>optional string speakerType = 77;</code>
     * @return Whether the speakerType field is set.
     */
    boolean hasSpeakerType();
    /**
     * <pre>
     * The type of speaker speaking this word
     * </pre>
     *
     * <code>optional string speakerType = 77;</code>
     * @return The speakerType.
     */
    java.lang.String getSpeakerType();
    /**
     * <pre>
     * The type of speaker speaking this word
     * </pre>
     *
     * <code>optional string speakerType = 77;</code>
     * @return The bytes for speakerType.
     */
    com.google.protobuf.ByteString
        getSpeakerTypeBytes();

    /**
     * <pre>
     * The begin index of, e.g., a span
     * </pre>
     *
     * <code>optional uint32 beginIndex = 15;</code>
     * @return Whether the beginIndex field is set.
     */
    boolean hasBeginIndex();
    /**
     * <pre>
     * The begin index of, e.g., a span
     * </pre>
     *
     * <code>optional uint32 beginIndex = 15;</code>
     * @return The beginIndex.
     */
    int getBeginIndex();

    /**
     * <pre>
     * The begin index of, e.g., a span
     * </pre>
     *
     * <code>optional uint32 endIndex = 16;</code>
     * @return Whether the endIndex field is set.
     */
    boolean hasEndIndex();
    /**
     * <pre>
     * The begin index of, e.g., a span
     * </pre>
     *
     * <code>optional uint32 endIndex = 16;</code>
     * @return The endIndex.
     */
    int getEndIndex();

    /**
     * <pre>
     * The begin index of the token
     * </pre>
     *
     * <code>optional uint32 tokenBeginIndex = 17;</code>
     * @return Whether the tokenBeginIndex field is set.
     */
    boolean hasTokenBeginIndex();
    /**
     * <pre>
     * The begin index of the token
     * </pre>
     *
     * <code>optional uint32 tokenBeginIndex = 17;</code>
     * @return The tokenBeginIndex.
     */
    int getTokenBeginIndex();

    /**
     * <pre>
     * The end index of the token
     * </pre>
     *
     * <code>optional uint32 tokenEndIndex = 18;</code>
     * @return Whether the tokenEndIndex field is set.
     */
    boolean hasTokenEndIndex();
    /**
     * <pre>
     * The end index of the token
     * </pre>
     *
     * <code>optional uint32 tokenEndIndex = 18;</code>
     * @return The tokenEndIndex.
     */
    int getTokenEndIndex();

    /**
     * <pre>
     * The time this word refers to
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
     * @return Whether the timexValue field is set.
     */
    boolean hasTimexValue();
    /**
     * <pre>
     * The time this word refers to
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
     * @return The timexValue.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getTimexValue();
    /**
     * <pre>
     * The time this word refers to
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder getTimexValueOrBuilder();

    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>optional bool hasXmlContext = 21;</code>
     * @return Whether the hasXmlContext field is set.
     */
    boolean hasHasXmlContext();
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>optional bool hasXmlContext = 21;</code>
     * @return The hasXmlContext.
     */
    boolean getHasXmlContext();

    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>repeated string xmlContext = 22;</code>
     * @return A list containing the xmlContext.
     */
    java.util.List<java.lang.String>
        getXmlContextList();
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>repeated string xmlContext = 22;</code>
     * @return The count of xmlContext.
     */
    int getXmlContextCount();
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>repeated string xmlContext = 22;</code>
     * @param index The index of the element to return.
     * @return The xmlContext at the given index.
     */
    java.lang.String getXmlContext(int index);
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>repeated string xmlContext = 22;</code>
     * @param index The index of the value to return.
     * @return The bytes of the xmlContext at the given index.
     */
    com.google.protobuf.ByteString
        getXmlContextBytes(int index);

    /**
     * <pre>
     * The [primary] cluster id for this token
     * </pre>
     *
     * <code>optional uint32 corefClusterID = 23;</code>
     * @return Whether the corefClusterID field is set.
     */
    boolean hasCorefClusterID();
    /**
     * <pre>
     * The [primary] cluster id for this token
     * </pre>
     *
     * <code>optional uint32 corefClusterID = 23;</code>
     * @return The corefClusterID.
     */
    int getCorefClusterID();

    /**
     * <pre>
     * A temporary annotation which is occasionally left in
     * </pre>
     *
     * <code>optional string answer = 24;</code>
     * @return Whether the answer field is set.
     */
    boolean hasAnswer();
    /**
     * <pre>
     * A temporary annotation which is occasionally left in
     * </pre>
     *
     * <code>optional string answer = 24;</code>
     * @return The answer.
     */
    java.lang.String getAnswer();
    /**
     * <pre>
     * A temporary annotation which is occasionally left in
     * </pre>
     *
     * <code>optional string answer = 24;</code>
     * @return The bytes for answer.
     */
    com.google.protobuf.ByteString
        getAnswerBytes();

    /**
     * <pre>
     *  optional string projectedCategory = 25;   // The syntactic category of the maximal constituent headed by the word. Not used anywhere, so deleted.
     * </pre>
     *
     * <code>optional uint32 headWordIndex = 26;</code>
     * @return Whether the headWordIndex field is set.
     */
    boolean hasHeadWordIndex();
    /**
     * <pre>
     *  optional string projectedCategory = 25;   // The syntactic category of the maximal constituent headed by the word. Not used anywhere, so deleted.
     * </pre>
     *
     * <code>optional uint32 headWordIndex = 26;</code>
     * @return The headWordIndex.
     */
    int getHeadWordIndex();

    /**
     * <pre>
     * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
     * @return Whether the operator field is set.
     */
    boolean hasOperator();
    /**
     * <pre>
     * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
     * @return The operator.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Operator getOperator();
    /**
     * <pre>
     * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.OperatorOrBuilder getOperatorOrBuilder();

    /**
     * <pre>
     * The polarity of this word, according to Natural Logic
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
     * @return Whether the polarity field is set.
     */
    boolean hasPolarity();
    /**
     * <pre>
     * The polarity of this word, according to Natural Logic
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
     * @return The polarity.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity getPolarity();
    /**
     * <pre>
     * The polarity of this word, according to Natural Logic
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.PolarityOrBuilder getPolarityOrBuilder();

    /**
     * <pre>
     * The polarity of this word, either "up", "down", or "flat"
     * </pre>
     *
     * <code>optional string polarity_dir = 39;</code>
     * @return Whether the polarityDir field is set.
     */
    boolean hasPolarityDir();
    /**
     * <pre>
     * The polarity of this word, either "up", "down", or "flat"
     * </pre>
     *
     * <code>optional string polarity_dir = 39;</code>
     * @return The polarityDir.
     */
    java.lang.String getPolarityDir();
    /**
     * <pre>
     * The polarity of this word, either "up", "down", or "flat"
     * </pre>
     *
     * <code>optional string polarity_dir = 39;</code>
     * @return The bytes for polarityDir.
     */
    com.google.protobuf.ByteString
        getPolarityDirBytes();

    /**
     * <pre>
     * The span of a leaf node of a tree
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
     * @return Whether the span field is set.
     */
    boolean hasSpan();
    /**
     * <pre>
     * The span of a leaf node of a tree
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
     * @return The span.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Span getSpan();
    /**
     * <pre>
     * The span of a leaf node of a tree
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder getSpanOrBuilder();

    /**
     * <pre>
     * The final sentiment of the sentence
     * </pre>
     *
     * <code>optional string sentiment = 30;</code>
     * @return Whether the sentiment field is set.
     */
    boolean hasSentiment();
    /**
     * <pre>
     * The final sentiment of the sentence
     * </pre>
     *
     * <code>optional string sentiment = 30;</code>
     * @return The sentiment.
     */
    java.lang.String getSentiment();
    /**
     * <pre>
     * The final sentiment of the sentence
     * </pre>
     *
     * <code>optional string sentiment = 30;</code>
     * @return The bytes for sentiment.
     */
    com.google.protobuf.ByteString
        getSentimentBytes();

    /**
     * <pre>
     * The index of the quotation this token refers to
     * </pre>
     *
     * <code>optional int32 quotationIndex = 31;</code>
     * @return Whether the quotationIndex field is set.
     */
    boolean hasQuotationIndex();
    /**
     * <pre>
     * The index of the quotation this token refers to
     * </pre>
     *
     * <code>optional int32 quotationIndex = 31;</code>
     * @return The quotationIndex.
     */
    int getQuotationIndex();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
     * @return Whether the conllUFeatures field is set.
     */
    boolean hasConllUFeatures();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
     * @return The conllUFeatures.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getConllUFeatures();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder getConllUFeaturesOrBuilder();

    /**
     * <pre>
     *  The coarse POS tag (used to store the UPOS tag)
     * </pre>
     *
     * <code>optional string coarseTag = 33;</code>
     * @return Whether the coarseTag field is set.
     */
    boolean hasCoarseTag();
    /**
     * <pre>
     *  The coarse POS tag (used to store the UPOS tag)
     * </pre>
     *
     * <code>optional string coarseTag = 33;</code>
     * @return The coarseTag.
     */
    java.lang.String getCoarseTag();
    /**
     * <pre>
     *  The coarse POS tag (used to store the UPOS tag)
     * </pre>
     *
     * <code>optional string coarseTag = 33;</code>
     * @return The bytes for coarseTag.
     */
    com.google.protobuf.ByteString
        getCoarseTagBytes();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
     * @return Whether the conllUTokenSpan field is set.
     */
    boolean hasConllUTokenSpan();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
     * @return The conllUTokenSpan.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Span getConllUTokenSpan();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder getConllUTokenSpanOrBuilder();

    /**
     * <code>optional string conllUMisc = 35;</code>
     * @return Whether the conllUMisc field is set.
     */
    boolean hasConllUMisc();
    /**
     * <code>optional string conllUMisc = 35;</code>
     * @return The conllUMisc.
     */
    java.lang.String getConllUMisc();
    /**
     * <code>optional string conllUMisc = 35;</code>
     * @return The bytes for conllUMisc.
     */
    com.google.protobuf.ByteString
        getConllUMiscBytes();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
     * @return Whether the conllUSecondaryDeps field is set.
     */
    boolean hasConllUSecondaryDeps();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
     * @return The conllUSecondaryDeps.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getConllUSecondaryDeps();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder getConllUSecondaryDepsOrBuilder();

    /**
     * <code>optional string wikipediaEntity = 37;</code>
     * @return Whether the wikipediaEntity field is set.
     */
    boolean hasWikipediaEntity();
    /**
     * <code>optional string wikipediaEntity = 37;</code>
     * @return The wikipediaEntity.
     */
    java.lang.String getWikipediaEntity();
    /**
     * <code>optional string wikipediaEntity = 37;</code>
     * @return The bytes for wikipediaEntity.
     */
    com.google.protobuf.ByteString
        getWikipediaEntityBytes();

    /**
     * <code>optional bool isNewline = 38;</code>
     * @return Whether the isNewline field is set.
     */
    boolean hasIsNewline();
    /**
     * <code>optional bool isNewline = 38;</code>
     * @return The isNewline.
     */
    boolean getIsNewline();

    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional string gender = 51;</code>
     * @return Whether the gender field is set.
     */
    boolean hasGender();
    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional string gender = 51;</code>
     * @return The gender.
     */
    java.lang.String getGender();
    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional string gender = 51;</code>
     * @return The bytes for gender.
     */
    com.google.protobuf.ByteString
        getGenderBytes();

    /**
     * <pre>
     * true case type of token
     * </pre>
     *
     * <code>optional string trueCase = 52;</code>
     * @return Whether the trueCase field is set.
     */
    boolean hasTrueCase();
    /**
     * <pre>
     * true case type of token
     * </pre>
     *
     * <code>optional string trueCase = 52;</code>
     * @return The trueCase.
     */
    java.lang.String getTrueCase();
    /**
     * <pre>
     * true case type of token
     * </pre>
     *
     * <code>optional string trueCase = 52;</code>
     * @return The bytes for trueCase.
     */
    com.google.protobuf.ByteString
        getTrueCaseBytes();

    /**
     * <pre>
     * true case gloss of token
     * </pre>
     *
     * <code>optional string trueCaseText = 53;</code>
     * @return Whether the trueCaseText field is set.
     */
    boolean hasTrueCaseText();
    /**
     * <pre>
     * true case gloss of token
     * </pre>
     *
     * <code>optional string trueCaseText = 53;</code>
     * @return The trueCaseText.
     */
    java.lang.String getTrueCaseText();
    /**
     * <pre>
     * true case gloss of token
     * </pre>
     *
     * <code>optional string trueCaseText = 53;</code>
     * @return The bytes for trueCaseText.
     */
    com.google.protobuf.ByteString
        getTrueCaseTextBytes();

    /**
     * <pre>
     *  Chinese character info
     * </pre>
     *
     * <code>optional string chineseChar = 54;</code>
     * @return Whether the chineseChar field is set.
     */
    boolean hasChineseChar();
    /**
     * <pre>
     *  Chinese character info
     * </pre>
     *
     * <code>optional string chineseChar = 54;</code>
     * @return The chineseChar.
     */
    java.lang.String getChineseChar();
    /**
     * <pre>
     *  Chinese character info
     * </pre>
     *
     * <code>optional string chineseChar = 54;</code>
     * @return The bytes for chineseChar.
     */
    com.google.protobuf.ByteString
        getChineseCharBytes();

    /**
     * <code>optional string chineseSeg = 55;</code>
     * @return Whether the chineseSeg field is set.
     */
    boolean hasChineseSeg();
    /**
     * <code>optional string chineseSeg = 55;</code>
     * @return The chineseSeg.
     */
    java.lang.String getChineseSeg();
    /**
     * <code>optional string chineseSeg = 55;</code>
     * @return The bytes for chineseSeg.
     */
    com.google.protobuf.ByteString
        getChineseSegBytes();

    /**
     * <code>optional string chineseXMLChar = 60;</code>
     * @return Whether the chineseXMLChar field is set.
     */
    boolean hasChineseXMLChar();
    /**
     * <code>optional string chineseXMLChar = 60;</code>
     * @return The chineseXMLChar.
     */
    java.lang.String getChineseXMLChar();
    /**
     * <code>optional string chineseXMLChar = 60;</code>
     * @return The bytes for chineseXMLChar.
     */
    com.google.protobuf.ByteString
        getChineseXMLCharBytes();

    /**
     * <pre>
     *  Arabic character info
     * </pre>
     *
     * <code>optional string arabicSeg = 76;</code>
     * @return Whether the arabicSeg field is set.
     */
    boolean hasArabicSeg();
    /**
     * <pre>
     *  Arabic character info
     * </pre>
     *
     * <code>optional string arabicSeg = 76;</code>
     * @return The arabicSeg.
     */
    java.lang.String getArabicSeg();
    /**
     * <pre>
     *  Arabic character info
     * </pre>
     *
     * <code>optional string arabicSeg = 76;</code>
     * @return The bytes for arabicSeg.
     */
    com.google.protobuf.ByteString
        getArabicSegBytes();

    /**
     * <pre>
     * Section info
     * </pre>
     *
     * <code>optional string sectionName = 56;</code>
     * @return Whether the sectionName field is set.
     */
    boolean hasSectionName();
    /**
     * <pre>
     * Section info
     * </pre>
     *
     * <code>optional string sectionName = 56;</code>
     * @return The sectionName.
     */
    java.lang.String getSectionName();
    /**
     * <pre>
     * Section info
     * </pre>
     *
     * <code>optional string sectionName = 56;</code>
     * @return The bytes for sectionName.
     */
    com.google.protobuf.ByteString
        getSectionNameBytes();

    /**
     * <code>optional string sectionAuthor = 57;</code>
     * @return Whether the sectionAuthor field is set.
     */
    boolean hasSectionAuthor();
    /**
     * <code>optional string sectionAuthor = 57;</code>
     * @return The sectionAuthor.
     */
    java.lang.String getSectionAuthor();
    /**
     * <code>optional string sectionAuthor = 57;</code>
     * @return The bytes for sectionAuthor.
     */
    com.google.protobuf.ByteString
        getSectionAuthorBytes();

    /**
     * <code>optional string sectionDate = 58;</code>
     * @return Whether the sectionDate field is set.
     */
    boolean hasSectionDate();
    /**
     * <code>optional string sectionDate = 58;</code>
     * @return The sectionDate.
     */
    java.lang.String getSectionDate();
    /**
     * <code>optional string sectionDate = 58;</code>
     * @return The bytes for sectionDate.
     */
    com.google.protobuf.ByteString
        getSectionDateBytes();

    /**
     * <code>optional string sectionEndLabel = 59;</code>
     * @return Whether the sectionEndLabel field is set.
     */
    boolean hasSectionEndLabel();
    /**
     * <code>optional string sectionEndLabel = 59;</code>
     * @return The sectionEndLabel.
     */
    java.lang.String getSectionEndLabel();
    /**
     * <code>optional string sectionEndLabel = 59;</code>
     * @return The bytes for sectionEndLabel.
     */
    com.google.protobuf.ByteString
        getSectionEndLabelBytes();

    /**
     * <pre>
     * French tokens have parents
     * </pre>
     *
     * <code>optional string parent = 61;</code>
     * @return Whether the parent field is set.
     */
    boolean hasParent();
    /**
     * <pre>
     * French tokens have parents
     * </pre>
     *
     * <code>optional string parent = 61;</code>
     * @return The parent.
     */
    java.lang.String getParent();
    /**
     * <pre>
     * French tokens have parents
     * </pre>
     *
     * <code>optional string parent = 61;</code>
     * @return The bytes for parent.
     */
    com.google.protobuf.ByteString
        getParentBytes();

    /**
     * <pre>
     * mention index info
     * </pre>
     *
     * <code>repeated uint32 corefMentionIndex = 64;</code>
     * @return A list containing the corefMentionIndex.
     */
    java.util.List<java.lang.Integer> getCorefMentionIndexList();
    /**
     * <pre>
     * mention index info
     * </pre>
     *
     * <code>repeated uint32 corefMentionIndex = 64;</code>
     * @return The count of corefMentionIndex.
     */
    int getCorefMentionIndexCount();
    /**
     * <pre>
     * mention index info
     * </pre>
     *
     * <code>repeated uint32 corefMentionIndex = 64;</code>
     * @param index The index of the element to return.
     * @return The corefMentionIndex at the given index.
     */
    int getCorefMentionIndex(int index);

    /**
     * <code>optional uint32 entityMentionIndex = 65;</code>
     * @return Whether the entityMentionIndex field is set.
     */
    boolean hasEntityMentionIndex();
    /**
     * <code>optional uint32 entityMentionIndex = 65;</code>
     * @return The entityMentionIndex.
     */
    int getEntityMentionIndex();

    /**
     * <pre>
     * mwt stuff
     * </pre>
     *
     * <code>optional bool isMWT = 67;</code>
     * @return Whether the isMWT field is set.
     */
    boolean hasIsMWT();
    /**
     * <pre>
     * mwt stuff
     * </pre>
     *
     * <code>optional bool isMWT = 67;</code>
     * @return The isMWT.
     */
    boolean getIsMWT();

    /**
     * <code>optional bool isFirstMWT = 68;</code>
     * @return Whether the isFirstMWT field is set.
     */
    boolean hasIsFirstMWT();
    /**
     * <code>optional bool isFirstMWT = 68;</code>
     * @return The isFirstMWT.
     */
    boolean getIsFirstMWT();

    /**
     * <code>optional string mwtText = 69;</code>
     * @return Whether the mwtText field is set.
     */
    boolean hasMwtText();
    /**
     * <code>optional string mwtText = 69;</code>
     * @return The mwtText.
     */
    java.lang.String getMwtText();
    /**
     * <code>optional string mwtText = 69;</code>
     * @return The bytes for mwtText.
     */
    com.google.protobuf.ByteString
        getMwtTextBytes();

    /**
     * <pre>
     * number info
     * </pre>
     *
     * <code>optional uint64 numericValue = 70;</code>
     * @return Whether the numericValue field is set.
     */
    boolean hasNumericValue();
    /**
     * <pre>
     * number info
     * </pre>
     *
     * <code>optional uint64 numericValue = 70;</code>
     * @return The numericValue.
     */
    long getNumericValue();

    /**
     * <code>optional string numericType = 71;</code>
     * @return Whether the numericType field is set.
     */
    boolean hasNumericType();
    /**
     * <code>optional string numericType = 71;</code>
     * @return The numericType.
     */
    java.lang.String getNumericType();
    /**
     * <code>optional string numericType = 71;</code>
     * @return The bytes for numericType.
     */
    com.google.protobuf.ByteString
        getNumericTypeBytes();

    /**
     * <code>optional uint64 numericCompositeValue = 72;</code>
     * @return Whether the numericCompositeValue field is set.
     */
    boolean hasNumericCompositeValue();
    /**
     * <code>optional uint64 numericCompositeValue = 72;</code>
     * @return The numericCompositeValue.
     */
    long getNumericCompositeValue();

    /**
     * <code>optional string numericCompositeType = 73;</code>
     * @return Whether the numericCompositeType field is set.
     */
    boolean hasNumericCompositeType();
    /**
     * <code>optional string numericCompositeType = 73;</code>
     * @return The numericCompositeType.
     */
    java.lang.String getNumericCompositeType();
    /**
     * <code>optional string numericCompositeType = 73;</code>
     * @return The bytes for numericCompositeType.
     */
    com.google.protobuf.ByteString
        getNumericCompositeTypeBytes();

    /**
     * <code>optional uint32 codepointOffsetBegin = 74;</code>
     * @return Whether the codepointOffsetBegin field is set.
     */
    boolean hasCodepointOffsetBegin();
    /**
     * <code>optional uint32 codepointOffsetBegin = 74;</code>
     * @return The codepointOffsetBegin.
     */
    int getCodepointOffsetBegin();

    /**
     * <code>optional uint32 codepointOffsetEnd = 75;</code>
     * @return Whether the codepointOffsetEnd field is set.
     */
    boolean hasCodepointOffsetEnd();
    /**
     * <code>optional uint32 codepointOffsetEnd = 75;</code>
     * @return The codepointOffsetEnd.
     */
    int getCodepointOffsetEnd();
  }
  /**
   * <pre>
   * The serialized version of a Token (a CoreLabel).
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Token}
   */
  public static final class Token extends
      com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
        Token> implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Token)
      TokenOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Token.newBuilder() to construct.
    private Token(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<edu.stanford.nlp.pipeline.CoreNLPProtos.Token, ?> builder) {
      super(builder);
    }
    private Token() {
      word_ = "";
      pos_ = "";
      value_ = "";
      category_ = "";
      before_ = "";
      after_ = "";
      originalText_ = "";
      ner_ = "";
      coarseNER_ = "";
      fineGrainedNER_ = "";
      nerLabelProbs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      normalizedNER_ = "";
      lemma_ = "";
      speaker_ = "";
      speakerType_ = "";
      xmlContext_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      answer_ = "";
      polarityDir_ = "";
      sentiment_ = "";
      coarseTag_ = "";
      conllUMisc_ = "";
      wikipediaEntity_ = "";
      gender_ = "";
      trueCase_ = "";
      trueCaseText_ = "";
      chineseChar_ = "";
      chineseSeg_ = "";
      chineseXMLChar_ = "";
      arabicSeg_ = "";
      sectionName_ = "";
      sectionAuthor_ = "";
      sectionDate_ = "";
      sectionEndLabel_ = "";
      parent_ = "";
      corefMentionIndex_ = emptyIntList();
      mwtText_ = "";
      numericType_ = "";
      numericCompositeType_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Token();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Token_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Token_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder.class);
    }

    private int bitField0_;
    private int bitField1_;
    public static final int WORD_FIELD_NUMBER = 1;
    private volatile java.lang.Object word_;
    /**
     * <pre>
     * Fields set by the default annotators [new CoreNLP(new Properties())]
     * </pre>
     *
     * <code>optional string word = 1;</code>
     * @return Whether the word field is set.
     */
    @java.lang.Override
    public boolean hasWord() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Fields set by the default annotators [new CoreNLP(new Properties())]
     * </pre>
     *
     * <code>optional string word = 1;</code>
     * @return The word.
     */
    @java.lang.Override
    public java.lang.String getWord() {
      java.lang.Object ref = word_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          word_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Fields set by the default annotators [new CoreNLP(new Properties())]
     * </pre>
     *
     * <code>optional string word = 1;</code>
     * @return The bytes for word.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWordBytes() {
      java.lang.Object ref = word_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        word_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int POS_FIELD_NUMBER = 2;
    private volatile java.lang.Object pos_;
    /**
     * <pre>
     * The word's part of speech tag
     * </pre>
     *
     * <code>optional string pos = 2;</code>
     * @return Whether the pos field is set.
     */
    @java.lang.Override
    public boolean hasPos() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The word's part of speech tag
     * </pre>
     *
     * <code>optional string pos = 2;</code>
     * @return The pos.
     */
    @java.lang.Override
    public java.lang.String getPos() {
      java.lang.Object ref = pos_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          pos_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The word's part of speech tag
     * </pre>
     *
     * <code>optional string pos = 2;</code>
     * @return The bytes for pos.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPosBytes() {
      java.lang.Object ref = pos_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pos_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 3;
    private volatile java.lang.Object value_;
    /**
     * <pre>
     * The word's 'value', (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The word's 'value', (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The word's 'value', (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string value = 3;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CATEGORY_FIELD_NUMBER = 4;
    private volatile java.lang.Object category_;
    /**
     * <pre>
     * The word's 'category' (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string category = 4;</code>
     * @return Whether the category field is set.
     */
    @java.lang.Override
    public boolean hasCategory() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The word's 'category' (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string category = 4;</code>
     * @return The category.
     */
    @java.lang.Override
    public java.lang.String getCategory() {
      java.lang.Object ref = category_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          category_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The word's 'category' (e.g., parse tree node)
     * </pre>
     *
     * <code>optional string category = 4;</code>
     * @return The bytes for category.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCategoryBytes() {
      java.lang.Object ref = category_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        category_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BEFORE_FIELD_NUMBER = 5;
    private volatile java.lang.Object before_;
    /**
     * <pre>
     * The whitespace/xml before the token
     * </pre>
     *
     * <code>optional string before = 5;</code>
     * @return Whether the before field is set.
     */
    @java.lang.Override
    public boolean hasBefore() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * The whitespace/xml before the token
     * </pre>
     *
     * <code>optional string before = 5;</code>
     * @return The before.
     */
    @java.lang.Override
    public java.lang.String getBefore() {
      java.lang.Object ref = before_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          before_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The whitespace/xml before the token
     * </pre>
     *
     * <code>optional string before = 5;</code>
     * @return The bytes for before.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBeforeBytes() {
      java.lang.Object ref = before_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        before_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int AFTER_FIELD_NUMBER = 6;
    private volatile java.lang.Object after_;
    /**
     * <pre>
     * The whitespace/xml after the token
     * </pre>
     *
     * <code>optional string after = 6;</code>
     * @return Whether the after field is set.
     */
    @java.lang.Override
    public boolean hasAfter() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * The whitespace/xml after the token
     * </pre>
     *
     * <code>optional string after = 6;</code>
     * @return The after.
     */
    @java.lang.Override
    public java.lang.String getAfter() {
      java.lang.Object ref = after_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          after_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The whitespace/xml after the token
     * </pre>
     *
     * <code>optional string after = 6;</code>
     * @return The bytes for after.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAfterBytes() {
      java.lang.Object ref = after_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        after_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ORIGINALTEXT_FIELD_NUMBER = 7;
    private volatile java.lang.Object originalText_;
    /**
     * <pre>
     * The original text for this token
     * </pre>
     *
     * <code>optional string originalText = 7;</code>
     * @return Whether the originalText field is set.
     */
    @java.lang.Override
    public boolean hasOriginalText() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * The original text for this token
     * </pre>
     *
     * <code>optional string originalText = 7;</code>
     * @return The originalText.
     */
    @java.lang.Override
    public java.lang.String getOriginalText() {
      java.lang.Object ref = originalText_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          originalText_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The original text for this token
     * </pre>
     *
     * <code>optional string originalText = 7;</code>
     * @return The bytes for originalText.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOriginalTextBytes() {
      java.lang.Object ref = originalText_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        originalText_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NER_FIELD_NUMBER = 8;
    private volatile java.lang.Object ner_;
    /**
     * <pre>
     * The word's NER tag
     * </pre>
     *
     * <code>optional string ner = 8;</code>
     * @return Whether the ner field is set.
     */
    @java.lang.Override
    public boolean hasNer() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * The word's NER tag
     * </pre>
     *
     * <code>optional string ner = 8;</code>
     * @return The ner.
     */
    @java.lang.Override
    public java.lang.String getNer() {
      java.lang.Object ref = ner_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          ner_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The word's NER tag
     * </pre>
     *
     * <code>optional string ner = 8;</code>
     * @return The bytes for ner.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNerBytes() {
      java.lang.Object ref = ner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COARSENER_FIELD_NUMBER = 62;
    private volatile java.lang.Object coarseNER_;
    /**
     * <pre>
     * The word's coarse NER tag
     * </pre>
     *
     * <code>optional string coarseNER = 62;</code>
     * @return Whether the coarseNER field is set.
     */
    @java.lang.Override
    public boolean hasCoarseNER() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * The word's coarse NER tag
     * </pre>
     *
     * <code>optional string coarseNER = 62;</code>
     * @return The coarseNER.
     */
    @java.lang.Override
    public java.lang.String getCoarseNER() {
      java.lang.Object ref = coarseNER_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          coarseNER_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The word's coarse NER tag
     * </pre>
     *
     * <code>optional string coarseNER = 62;</code>
     * @return The bytes for coarseNER.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCoarseNERBytes() {
      java.lang.Object ref = coarseNER_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        coarseNER_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FINEGRAINEDNER_FIELD_NUMBER = 63;
    private volatile java.lang.Object fineGrainedNER_;
    /**
     * <pre>
     * The word's fine-grained NER tag
     * </pre>
     *
     * <code>optional string fineGrainedNER = 63;</code>
     * @return Whether the fineGrainedNER field is set.
     */
    @java.lang.Override
    public boolean hasFineGrainedNER() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * The word's fine-grained NER tag
     * </pre>
     *
     * <code>optional string fineGrainedNER = 63;</code>
     * @return The fineGrainedNER.
     */
    @java.lang.Override
    public java.lang.String getFineGrainedNER() {
      java.lang.Object ref = fineGrainedNER_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          fineGrainedNER_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The word's fine-grained NER tag
     * </pre>
     *
     * <code>optional string fineGrainedNER = 63;</code>
     * @return The bytes for fineGrainedNER.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFineGrainedNERBytes() {
      java.lang.Object ref = fineGrainedNER_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fineGrainedNER_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NERLABELPROBS_FIELD_NUMBER = 66;
    private com.google.protobuf.LazyStringList nerLabelProbs_;
    /**
     * <pre>
     * listing of probs
     * </pre>
     *
     * <code>repeated string nerLabelProbs = 66;</code>
     * @return A list containing the nerLabelProbs.
     */
    public com.google.protobuf.ProtocolStringList
        getNerLabelProbsList() {
      return nerLabelProbs_;
    }
    /**
     * <pre>
     * listing of probs
     * </pre>
     *
     * <code>repeated string nerLabelProbs = 66;</code>
     * @return The count of nerLabelProbs.
     */
    public int getNerLabelProbsCount() {
      return nerLabelProbs_.size();
    }
    /**
     * <pre>
     * listing of probs
     * </pre>
     *
     * <code>repeated string nerLabelProbs = 66;</code>
     * @param index The index of the element to return.
     * @return The nerLabelProbs at the given index.
     */
    public java.lang.String getNerLabelProbs(int index) {
      return nerLabelProbs_.get(index);
    }
    /**
     * <pre>
     * listing of probs
     * </pre>
     *
     * <code>repeated string nerLabelProbs = 66;</code>
     * @param index The index of the value to return.
     * @return The bytes of the nerLabelProbs at the given index.
     */
    public com.google.protobuf.ByteString
        getNerLabelProbsBytes(int index) {
      return nerLabelProbs_.getByteString(index);
    }

    public static final int NORMALIZEDNER_FIELD_NUMBER = 9;
    private volatile java.lang.Object normalizedNER_;
    /**
     * <pre>
     * The word's normalized NER tag
     * </pre>
     *
     * <code>optional string normalizedNER = 9;</code>
     * @return Whether the normalizedNER field is set.
     */
    @java.lang.Override
    public boolean hasNormalizedNER() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * The word's normalized NER tag
     * </pre>
     *
     * <code>optional string normalizedNER = 9;</code>
     * @return The normalizedNER.
     */
    @java.lang.Override
    public java.lang.String getNormalizedNER() {
      java.lang.Object ref = normalizedNER_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          normalizedNER_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The word's normalized NER tag
     * </pre>
     *
     * <code>optional string normalizedNER = 9;</code>
     * @return The bytes for normalizedNER.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNormalizedNERBytes() {
      java.lang.Object ref = normalizedNER_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        normalizedNER_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LEMMA_FIELD_NUMBER = 10;
    private volatile java.lang.Object lemma_;
    /**
     * <pre>
     * The word's lemma
     * </pre>
     *
     * <code>optional string lemma = 10;</code>
     * @return Whether the lemma field is set.
     */
    @java.lang.Override
    public boolean hasLemma() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * The word's lemma
     * </pre>
     *
     * <code>optional string lemma = 10;</code>
     * @return The lemma.
     */
    @java.lang.Override
    public java.lang.String getLemma() {
      java.lang.Object ref = lemma_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          lemma_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The word's lemma
     * </pre>
     *
     * <code>optional string lemma = 10;</code>
     * @return The bytes for lemma.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLemmaBytes() {
      java.lang.Object ref = lemma_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lemma_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BEGINCHAR_FIELD_NUMBER = 11;
    private int beginChar_;
    /**
     * <pre>
     * The character offset begin, in the document
     * </pre>
     *
     * <code>optional uint32 beginChar = 11;</code>
     * @return Whether the beginChar field is set.
     */
    @java.lang.Override
    public boolean hasBeginChar() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * The character offset begin, in the document
     * </pre>
     *
     * <code>optional uint32 beginChar = 11;</code>
     * @return The beginChar.
     */
    @java.lang.Override
    public int getBeginChar() {
      return beginChar_;
    }

    public static final int ENDCHAR_FIELD_NUMBER = 12;
    private int endChar_;
    /**
     * <pre>
     * The character offset end, in the document
     * </pre>
     *
     * <code>optional uint32 endChar = 12;</code>
     * @return Whether the endChar field is set.
     */
    @java.lang.Override
    public boolean hasEndChar() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * The character offset end, in the document
     * </pre>
     *
     * <code>optional uint32 endChar = 12;</code>
     * @return The endChar.
     */
    @java.lang.Override
    public int getEndChar() {
      return endChar_;
    }

    public static final int UTTERANCE_FIELD_NUMBER = 13;
    private int utterance_;
    /**
     * <pre>
     * The utterance tag used in dcoref
     * </pre>
     *
     * <code>optional uint32 utterance = 13;</code>
     * @return Whether the utterance field is set.
     */
    @java.lang.Override
    public boolean hasUtterance() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * The utterance tag used in dcoref
     * </pre>
     *
     * <code>optional uint32 utterance = 13;</code>
     * @return The utterance.
     */
    @java.lang.Override
    public int getUtterance() {
      return utterance_;
    }

    public static final int SPEAKER_FIELD_NUMBER = 14;
    private volatile java.lang.Object speaker_;
    /**
     * <pre>
     * The speaker speaking this word
     * </pre>
     *
     * <code>optional string speaker = 14;</code>
     * @return Whether the speaker field is set.
     */
    @java.lang.Override
    public boolean hasSpeaker() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <pre>
     * The speaker speaking this word
     * </pre>
     *
     * <code>optional string speaker = 14;</code>
     * @return The speaker.
     */
    @java.lang.Override
    public java.lang.String getSpeaker() {
      java.lang.Object ref = speaker_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          speaker_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The speaker speaking this word
     * </pre>
     *
     * <code>optional string speaker = 14;</code>
     * @return The bytes for speaker.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSpeakerBytes() {
      java.lang.Object ref = speaker_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        speaker_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SPEAKERTYPE_FIELD_NUMBER = 77;
    private volatile java.lang.Object speakerType_;
    /**
     * <pre>
     * The type of speaker speaking this word
     * </pre>
     *
     * <code>optional string speakerType = 77;</code>
     * @return Whether the speakerType field is set.
     */
    @java.lang.Override
    public boolean hasSpeakerType() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <pre>
     * The type of speaker speaking this word
     * </pre>
     *
     * <code>optional string speakerType = 77;</code>
     * @return The speakerType.
     */
    @java.lang.Override
    public java.lang.String getSpeakerType() {
      java.lang.Object ref = speakerType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          speakerType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The type of speaker speaking this word
     * </pre>
     *
     * <code>optional string speakerType = 77;</code>
     * @return The bytes for speakerType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSpeakerTypeBytes() {
      java.lang.Object ref = speakerType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        speakerType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BEGININDEX_FIELD_NUMBER = 15;
    private int beginIndex_;
    /**
     * <pre>
     * The begin index of, e.g., a span
     * </pre>
     *
     * <code>optional uint32 beginIndex = 15;</code>
     * @return Whether the beginIndex field is set.
     */
    @java.lang.Override
    public boolean hasBeginIndex() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <pre>
     * The begin index of, e.g., a span
     * </pre>
     *
     * <code>optional uint32 beginIndex = 15;</code>
     * @return The beginIndex.
     */
    @java.lang.Override
    public int getBeginIndex() {
      return beginIndex_;
    }

    public static final int ENDINDEX_FIELD_NUMBER = 16;
    private int endIndex_;
    /**
     * <pre>
     * The begin index of, e.g., a span
     * </pre>
     *
     * <code>optional uint32 endIndex = 16;</code>
     * @return Whether the endIndex field is set.
     */
    @java.lang.Override
    public boolean hasEndIndex() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <pre>
     * The begin index of, e.g., a span
     * </pre>
     *
     * <code>optional uint32 endIndex = 16;</code>
     * @return The endIndex.
     */
    @java.lang.Override
    public int getEndIndex() {
      return endIndex_;
    }

    public static final int TOKENBEGININDEX_FIELD_NUMBER = 17;
    private int tokenBeginIndex_;
    /**
     * <pre>
     * The begin index of the token
     * </pre>
     *
     * <code>optional uint32 tokenBeginIndex = 17;</code>
     * @return Whether the tokenBeginIndex field is set.
     */
    @java.lang.Override
    public boolean hasTokenBeginIndex() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <pre>
     * The begin index of the token
     * </pre>
     *
     * <code>optional uint32 tokenBeginIndex = 17;</code>
     * @return The tokenBeginIndex.
     */
    @java.lang.Override
    public int getTokenBeginIndex() {
      return tokenBeginIndex_;
    }

    public static final int TOKENENDINDEX_FIELD_NUMBER = 18;
    private int tokenEndIndex_;
    /**
     * <pre>
     * The end index of the token
     * </pre>
     *
     * <code>optional uint32 tokenEndIndex = 18;</code>
     * @return Whether the tokenEndIndex field is set.
     */
    @java.lang.Override
    public boolean hasTokenEndIndex() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <pre>
     * The end index of the token
     * </pre>
     *
     * <code>optional uint32 tokenEndIndex = 18;</code>
     * @return The tokenEndIndex.
     */
    @java.lang.Override
    public int getTokenEndIndex() {
      return tokenEndIndex_;
    }

    public static final int TIMEXVALUE_FIELD_NUMBER = 19;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Timex timexValue_;
    /**
     * <pre>
     * The time this word refers to
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
     * @return Whether the timexValue field is set.
     */
    @java.lang.Override
    public boolean hasTimexValue() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * <pre>
     * The time this word refers to
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
     * @return The timexValue.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getTimexValue() {
      return timexValue_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance() : timexValue_;
    }
    /**
     * <pre>
     * The time this word refers to
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder getTimexValueOrBuilder() {
      return timexValue_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance() : timexValue_;
    }

    public static final int HASXMLCONTEXT_FIELD_NUMBER = 21;
    private boolean hasXmlContext_;
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>optional bool hasXmlContext = 21;</code>
     * @return Whether the hasXmlContext field is set.
     */
    @java.lang.Override
    public boolean hasHasXmlContext() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>optional bool hasXmlContext = 21;</code>
     * @return The hasXmlContext.
     */
    @java.lang.Override
    public boolean getHasXmlContext() {
      return hasXmlContext_;
    }

    public static final int XMLCONTEXT_FIELD_NUMBER = 22;
    private com.google.protobuf.LazyStringList xmlContext_;
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>repeated string xmlContext = 22;</code>
     * @return A list containing the xmlContext.
     */
    public com.google.protobuf.ProtocolStringList
        getXmlContextList() {
      return xmlContext_;
    }
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>repeated string xmlContext = 22;</code>
     * @return The count of xmlContext.
     */
    public int getXmlContextCount() {
      return xmlContext_.size();
    }
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>repeated string xmlContext = 22;</code>
     * @param index The index of the element to return.
     * @return The xmlContext at the given index.
     */
    public java.lang.String getXmlContext(int index) {
      return xmlContext_.get(index);
    }
    /**
     * <pre>
     * Used by clean xml annotator
     * </pre>
     *
     * <code>repeated string xmlContext = 22;</code>
     * @param index The index of the value to return.
     * @return The bytes of the xmlContext at the given index.
     */
    public com.google.protobuf.ByteString
        getXmlContextBytes(int index) {
      return xmlContext_.getByteString(index);
    }

    public static final int COREFCLUSTERID_FIELD_NUMBER = 23;
    private int corefClusterID_;
    /**
     * <pre>
     * The [primary] cluster id for this token
     * </pre>
     *
     * <code>optional uint32 corefClusterID = 23;</code>
     * @return Whether the corefClusterID field is set.
     */
    @java.lang.Override
    public boolean hasCorefClusterID() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * <pre>
     * The [primary] cluster id for this token
     * </pre>
     *
     * <code>optional uint32 corefClusterID = 23;</code>
     * @return The corefClusterID.
     */
    @java.lang.Override
    public int getCorefClusterID() {
      return corefClusterID_;
    }

    public static final int ANSWER_FIELD_NUMBER = 24;
    private volatile java.lang.Object answer_;
    /**
     * <pre>
     * A temporary annotation which is occasionally left in
     * </pre>
     *
     * <code>optional string answer = 24;</code>
     * @return Whether the answer field is set.
     */
    @java.lang.Override
    public boolean hasAnswer() {
      return ((bitField0_ & 0x01000000) != 0);
    }
    /**
     * <pre>
     * A temporary annotation which is occasionally left in
     * </pre>
     *
     * <code>optional string answer = 24;</code>
     * @return The answer.
     */
    @java.lang.Override
    public java.lang.String getAnswer() {
      java.lang.Object ref = answer_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          answer_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * A temporary annotation which is occasionally left in
     * </pre>
     *
     * <code>optional string answer = 24;</code>
     * @return The bytes for answer.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAnswerBytes() {
      java.lang.Object ref = answer_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        answer_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HEADWORDINDEX_FIELD_NUMBER = 26;
    private int headWordIndex_;
    /**
     * <pre>
     *  optional string projectedCategory = 25;   // The syntactic category of the maximal constituent headed by the word. Not used anywhere, so deleted.
     * </pre>
     *
     * <code>optional uint32 headWordIndex = 26;</code>
     * @return Whether the headWordIndex field is set.
     */
    @java.lang.Override
    public boolean hasHeadWordIndex() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * <pre>
     *  optional string projectedCategory = 25;   // The syntactic category of the maximal constituent headed by the word. Not used anywhere, so deleted.
     * </pre>
     *
     * <code>optional uint32 headWordIndex = 26;</code>
     * @return The headWordIndex.
     */
    @java.lang.Override
    public int getHeadWordIndex() {
      return headWordIndex_;
    }

    public static final int OPERATOR_FIELD_NUMBER = 27;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Operator operator_;
    /**
     * <pre>
     * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
     * @return Whether the operator field is set.
     */
    @java.lang.Override
    public boolean hasOperator() {
      return ((bitField0_ & 0x04000000) != 0);
    }
    /**
     * <pre>
     * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
     * @return The operator.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Operator getOperator() {
      return operator_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.getDefaultInstance() : operator_;
    }
    /**
     * <pre>
     * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.OperatorOrBuilder getOperatorOrBuilder() {
      return operator_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.getDefaultInstance() : operator_;
    }

    public static final int POLARITY_FIELD_NUMBER = 28;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity polarity_;
    /**
     * <pre>
     * The polarity of this word, according to Natural Logic
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
     * @return Whether the polarity field is set.
     */
    @java.lang.Override
    public boolean hasPolarity() {
      return ((bitField0_ & 0x08000000) != 0);
    }
    /**
     * <pre>
     * The polarity of this word, according to Natural Logic
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
     * @return The polarity.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity getPolarity() {
      return polarity_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.getDefaultInstance() : polarity_;
    }
    /**
     * <pre>
     * The polarity of this word, according to Natural Logic
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.PolarityOrBuilder getPolarityOrBuilder() {
      return polarity_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.getDefaultInstance() : polarity_;
    }

    public static final int POLARITY_DIR_FIELD_NUMBER = 39;
    private volatile java.lang.Object polarityDir_;
    /**
     * <pre>
     * The polarity of this word, either "up", "down", or "flat"
     * </pre>
     *
     * <code>optional string polarity_dir = 39;</code>
     * @return Whether the polarityDir field is set.
     */
    @java.lang.Override
    public boolean hasPolarityDir() {
      return ((bitField0_ & 0x10000000) != 0);
    }
    /**
     * <pre>
     * The polarity of this word, either "up", "down", or "flat"
     * </pre>
     *
     * <code>optional string polarity_dir = 39;</code>
     * @return The polarityDir.
     */
    @java.lang.Override
    public java.lang.String getPolarityDir() {
      java.lang.Object ref = polarityDir_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          polarityDir_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The polarity of this word, either "up", "down", or "flat"
     * </pre>
     *
     * <code>optional string polarity_dir = 39;</code>
     * @return The bytes for polarityDir.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPolarityDirBytes() {
      java.lang.Object ref = polarityDir_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        polarityDir_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SPAN_FIELD_NUMBER = 29;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Span span_;
    /**
     * <pre>
     * The span of a leaf node of a tree
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
     * @return Whether the span field is set.
     */
    @java.lang.Override
    public boolean hasSpan() {
      return ((bitField0_ & 0x20000000) != 0);
    }
    /**
     * <pre>
     * The span of a leaf node of a tree
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
     * @return The span.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Span getSpan() {
      return span_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance() : span_;
    }
    /**
     * <pre>
     * The span of a leaf node of a tree
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder getSpanOrBuilder() {
      return span_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance() : span_;
    }

    public static final int SENTIMENT_FIELD_NUMBER = 30;
    private volatile java.lang.Object sentiment_;
    /**
     * <pre>
     * The final sentiment of the sentence
     * </pre>
     *
     * <code>optional string sentiment = 30;</code>
     * @return Whether the sentiment field is set.
     */
    @java.lang.Override
    public boolean hasSentiment() {
      return ((bitField0_ & 0x40000000) != 0);
    }
    /**
     * <pre>
     * The final sentiment of the sentence
     * </pre>
     *
     * <code>optional string sentiment = 30;</code>
     * @return The sentiment.
     */
    @java.lang.Override
    public java.lang.String getSentiment() {
      java.lang.Object ref = sentiment_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sentiment_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The final sentiment of the sentence
     * </pre>
     *
     * <code>optional string sentiment = 30;</code>
     * @return The bytes for sentiment.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSentimentBytes() {
      java.lang.Object ref = sentiment_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sentiment_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int QUOTATIONINDEX_FIELD_NUMBER = 31;
    private int quotationIndex_;
    /**
     * <pre>
     * The index of the quotation this token refers to
     * </pre>
     *
     * <code>optional int32 quotationIndex = 31;</code>
     * @return Whether the quotationIndex field is set.
     */
    @java.lang.Override
    public boolean hasQuotationIndex() {
      return ((bitField0_ & 0x80000000) != 0);
    }
    /**
     * <pre>
     * The index of the quotation this token refers to
     * </pre>
     *
     * <code>optional int32 quotationIndex = 31;</code>
     * @return The quotationIndex.
     */
    @java.lang.Override
    public int getQuotationIndex() {
      return quotationIndex_;
    }

    public static final int CONLLUFEATURES_FIELD_NUMBER = 32;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString conllUFeatures_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
     * @return Whether the conllUFeatures field is set.
     */
    @java.lang.Override
    public boolean hasConllUFeatures() {
      return ((bitField1_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
     * @return The conllUFeatures.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getConllUFeatures() {
      return conllUFeatures_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance() : conllUFeatures_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder getConllUFeaturesOrBuilder() {
      return conllUFeatures_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance() : conllUFeatures_;
    }

    public static final int COARSETAG_FIELD_NUMBER = 33;
    private volatile java.lang.Object coarseTag_;
    /**
     * <pre>
     *  The coarse POS tag (used to store the UPOS tag)
     * </pre>
     *
     * <code>optional string coarseTag = 33;</code>
     * @return Whether the coarseTag field is set.
     */
    @java.lang.Override
    public boolean hasCoarseTag() {
      return ((bitField1_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *  The coarse POS tag (used to store the UPOS tag)
     * </pre>
     *
     * <code>optional string coarseTag = 33;</code>
     * @return The coarseTag.
     */
    @java.lang.Override
    public java.lang.String getCoarseTag() {
      java.lang.Object ref = coarseTag_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          coarseTag_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     *  The coarse POS tag (used to store the UPOS tag)
     * </pre>
     *
     * <code>optional string coarseTag = 33;</code>
     * @return The bytes for coarseTag.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCoarseTagBytes() {
      java.lang.Object ref = coarseTag_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        coarseTag_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONLLUTOKENSPAN_FIELD_NUMBER = 34;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Span conllUTokenSpan_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
     * @return Whether the conllUTokenSpan field is set.
     */
    @java.lang.Override
    public boolean hasConllUTokenSpan() {
      return ((bitField1_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
     * @return The conllUTokenSpan.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Span getConllUTokenSpan() {
      return conllUTokenSpan_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance() : conllUTokenSpan_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder getConllUTokenSpanOrBuilder() {
      return conllUTokenSpan_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance() : conllUTokenSpan_;
    }

    public static final int CONLLUMISC_FIELD_NUMBER = 35;
    private volatile java.lang.Object conllUMisc_;
    /**
     * <code>optional string conllUMisc = 35;</code>
     * @return Whether the conllUMisc field is set.
     */
    @java.lang.Override
    public boolean hasConllUMisc() {
      return ((bitField1_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string conllUMisc = 35;</code>
     * @return The conllUMisc.
     */
    @java.lang.Override
    public java.lang.String getConllUMisc() {
      java.lang.Object ref = conllUMisc_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          conllUMisc_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string conllUMisc = 35;</code>
     * @return The bytes for conllUMisc.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getConllUMiscBytes() {
      java.lang.Object ref = conllUMisc_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        conllUMisc_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONLLUSECONDARYDEPS_FIELD_NUMBER = 36;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString conllUSecondaryDeps_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
     * @return Whether the conllUSecondaryDeps field is set.
     */
    @java.lang.Override
    public boolean hasConllUSecondaryDeps() {
      return ((bitField1_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
     * @return The conllUSecondaryDeps.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getConllUSecondaryDeps() {
      return conllUSecondaryDeps_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance() : conllUSecondaryDeps_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder getConllUSecondaryDepsOrBuilder() {
      return conllUSecondaryDeps_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance() : conllUSecondaryDeps_;
    }

    public static final int WIKIPEDIAENTITY_FIELD_NUMBER = 37;
    private volatile java.lang.Object wikipediaEntity_;
    /**
     * <code>optional string wikipediaEntity = 37;</code>
     * @return Whether the wikipediaEntity field is set.
     */
    @java.lang.Override
    public boolean hasWikipediaEntity() {
      return ((bitField1_ & 0x00000020) != 0);
    }
    /**
     * <code>optional string wikipediaEntity = 37;</code>
     * @return The wikipediaEntity.
     */
    @java.lang.Override
    public java.lang.String getWikipediaEntity() {
      java.lang.Object ref = wikipediaEntity_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          wikipediaEntity_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string wikipediaEntity = 37;</code>
     * @return The bytes for wikipediaEntity.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWikipediaEntityBytes() {
      java.lang.Object ref = wikipediaEntity_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        wikipediaEntity_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ISNEWLINE_FIELD_NUMBER = 38;
    private boolean isNewline_;
    /**
     * <code>optional bool isNewline = 38;</code>
     * @return Whether the isNewline field is set.
     */
    @java.lang.Override
    public boolean hasIsNewline() {
      return ((bitField1_ & 0x00000040) != 0);
    }
    /**
     * <code>optional bool isNewline = 38;</code>
     * @return The isNewline.
     */
    @java.lang.Override
    public boolean getIsNewline() {
      return isNewline_;
    }

    public static final int GENDER_FIELD_NUMBER = 51;
    private volatile java.lang.Object gender_;
    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional string gender = 51;</code>
     * @return Whether the gender field is set.
     */
    @java.lang.Override
    public boolean hasGender() {
      return ((bitField1_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional string gender = 51;</code>
     * @return The gender.
     */
    @java.lang.Override
    public java.lang.String getGender() {
      java.lang.Object ref = gender_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          gender_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Fields set by other annotators in CoreNLP
     * </pre>
     *
     * <code>optional string gender = 51;</code>
     * @return The bytes for gender.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGenderBytes() {
      java.lang.Object ref = gender_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gender_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TRUECASE_FIELD_NUMBER = 52;
    private volatile java.lang.Object trueCase_;
    /**
     * <pre>
     * true case type of token
     * </pre>
     *
     * <code>optional string trueCase = 52;</code>
     * @return Whether the trueCase field is set.
     */
    @java.lang.Override
    public boolean hasTrueCase() {
      return ((bitField1_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * true case type of token
     * </pre>
     *
     * <code>optional string trueCase = 52;</code>
     * @return The trueCase.
     */
    @java.lang.Override
    public java.lang.String getTrueCase() {
      java.lang.Object ref = trueCase_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          trueCase_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * true case type of token
     * </pre>
     *
     * <code>optional string trueCase = 52;</code>
     * @return The bytes for trueCase.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTrueCaseBytes() {
      java.lang.Object ref = trueCase_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        trueCase_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TRUECASETEXT_FIELD_NUMBER = 53;
    private volatile java.lang.Object trueCaseText_;
    /**
     * <pre>
     * true case gloss of token
     * </pre>
     *
     * <code>optional string trueCaseText = 53;</code>
     * @return Whether the trueCaseText field is set.
     */
    @java.lang.Override
    public boolean hasTrueCaseText() {
      return ((bitField1_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * true case gloss of token
     * </pre>
     *
     * <code>optional string trueCaseText = 53;</code>
     * @return The trueCaseText.
     */
    @java.lang.Override
    public java.lang.String getTrueCaseText() {
      java.lang.Object ref = trueCaseText_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          trueCaseText_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * true case gloss of token
     * </pre>
     *
     * <code>optional string trueCaseText = 53;</code>
     * @return The bytes for trueCaseText.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTrueCaseTextBytes() {
      java.lang.Object ref = trueCaseText_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        trueCaseText_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CHINESECHAR_FIELD_NUMBER = 54;
    private volatile java.lang.Object chineseChar_;
    /**
     * <pre>
     *  Chinese character info
     * </pre>
     *
     * <code>optional string chineseChar = 54;</code>
     * @return Whether the chineseChar field is set.
     */
    @java.lang.Override
    public boolean hasChineseChar() {
      return ((bitField1_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     *  Chinese character info
     * </pre>
     *
     * <code>optional string chineseChar = 54;</code>
     * @return The chineseChar.
     */
    @java.lang.Override
    public java.lang.String getChineseChar() {
      java.lang.Object ref = chineseChar_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          chineseChar_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     *  Chinese character info
     * </pre>
     *
     * <code>optional string chineseChar = 54;</code>
     * @return The bytes for chineseChar.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getChineseCharBytes() {
      java.lang.Object ref = chineseChar_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        chineseChar_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CHINESESEG_FIELD_NUMBER = 55;
    private volatile java.lang.Object chineseSeg_;
    /**
     * <code>optional string chineseSeg = 55;</code>
     * @return Whether the chineseSeg field is set.
     */
    @java.lang.Override
    public boolean hasChineseSeg() {
      return ((bitField1_ & 0x00000800) != 0);
    }
    /**
     * <code>optional string chineseSeg = 55;</code>
     * @return The chineseSeg.
     */
    @java.lang.Override
    public java.lang.String getChineseSeg() {
      java.lang.Object ref = chineseSeg_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          chineseSeg_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string chineseSeg = 55;</code>
     * @return The bytes for chineseSeg.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getChineseSegBytes() {
      java.lang.Object ref = chineseSeg_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        chineseSeg_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CHINESEXMLCHAR_FIELD_NUMBER = 60;
    private volatile java.lang.Object chineseXMLChar_;
    /**
     * <code>optional string chineseXMLChar = 60;</code>
     * @return Whether the chineseXMLChar field is set.
     */
    @java.lang.Override
    public boolean hasChineseXMLChar() {
      return ((bitField1_ & 0x00001000) != 0);
    }
    /**
     * <code>optional string chineseXMLChar = 60;</code>
     * @return The chineseXMLChar.
     */
    @java.lang.Override
    public java.lang.String getChineseXMLChar() {
      java.lang.Object ref = chineseXMLChar_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          chineseXMLChar_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string chineseXMLChar = 60;</code>
     * @return The bytes for chineseXMLChar.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getChineseXMLCharBytes() {
      java.lang.Object ref = chineseXMLChar_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        chineseXMLChar_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARABICSEG_FIELD_NUMBER = 76;
    private volatile java.lang.Object arabicSeg_;
    /**
     * <pre>
     *  Arabic character info
     * </pre>
     *
     * <code>optional string arabicSeg = 76;</code>
     * @return Whether the arabicSeg field is set.
     */
    @java.lang.Override
    public boolean hasArabicSeg() {
      return ((bitField1_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     *  Arabic character info
     * </pre>
     *
     * <code>optional string arabicSeg = 76;</code>
     * @return The arabicSeg.
     */
    @java.lang.Override
    public java.lang.String getArabicSeg() {
      java.lang.Object ref = arabicSeg_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          arabicSeg_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     *  Arabic character info
     * </pre>
     *
     * <code>optional string arabicSeg = 76;</code>
     * @return The bytes for arabicSeg.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getArabicSegBytes() {
      java.lang.Object ref = arabicSeg_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        arabicSeg_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECTIONNAME_FIELD_NUMBER = 56;
    private volatile java.lang.Object sectionName_;
    /**
     * <pre>
     * Section info
     * </pre>
     *
     * <code>optional string sectionName = 56;</code>
     * @return Whether the sectionName field is set.
     */
    @java.lang.Override
    public boolean hasSectionName() {
      return ((bitField1_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * Section info
     * </pre>
     *
     * <code>optional string sectionName = 56;</code>
     * @return The sectionName.
     */
    @java.lang.Override
    public java.lang.String getSectionName() {
      java.lang.Object ref = sectionName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sectionName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Section info
     * </pre>
     *
     * <code>optional string sectionName = 56;</code>
     * @return The bytes for sectionName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSectionNameBytes() {
      java.lang.Object ref = sectionName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sectionName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECTIONAUTHOR_FIELD_NUMBER = 57;
    private volatile java.lang.Object sectionAuthor_;
    /**
     * <code>optional string sectionAuthor = 57;</code>
     * @return Whether the sectionAuthor field is set.
     */
    @java.lang.Override
    public boolean hasSectionAuthor() {
      return ((bitField1_ & 0x00008000) != 0);
    }
    /**
     * <code>optional string sectionAuthor = 57;</code>
     * @return The sectionAuthor.
     */
    @java.lang.Override
    public java.lang.String getSectionAuthor() {
      java.lang.Object ref = sectionAuthor_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sectionAuthor_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string sectionAuthor = 57;</code>
     * @return The bytes for sectionAuthor.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSectionAuthorBytes() {
      java.lang.Object ref = sectionAuthor_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sectionAuthor_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECTIONDATE_FIELD_NUMBER = 58;
    private volatile java.lang.Object sectionDate_;
    /**
     * <code>optional string sectionDate = 58;</code>
     * @return Whether the sectionDate field is set.
     */
    @java.lang.Override
    public boolean hasSectionDate() {
      return ((bitField1_ & 0x00010000) != 0);
    }
    /**
     * <code>optional string sectionDate = 58;</code>
     * @return The sectionDate.
     */
    @java.lang.Override
    public java.lang.String getSectionDate() {
      java.lang.Object ref = sectionDate_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sectionDate_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string sectionDate = 58;</code>
     * @return The bytes for sectionDate.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSectionDateBytes() {
      java.lang.Object ref = sectionDate_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sectionDate_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SECTIONENDLABEL_FIELD_NUMBER = 59;
    private volatile java.lang.Object sectionEndLabel_;
    /**
     * <code>optional string sectionEndLabel = 59;</code>
     * @return Whether the sectionEndLabel field is set.
     */
    @java.lang.Override
    public boolean hasSectionEndLabel() {
      return ((bitField1_ & 0x00020000) != 0);
    }
    /**
     * <code>optional string sectionEndLabel = 59;</code>
     * @return The sectionEndLabel.
     */
    @java.lang.Override
    public java.lang.String getSectionEndLabel() {
      java.lang.Object ref = sectionEndLabel_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sectionEndLabel_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string sectionEndLabel = 59;</code>
     * @return The bytes for sectionEndLabel.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSectionEndLabelBytes() {
      java.lang.Object ref = sectionEndLabel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sectionEndLabel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PARENT_FIELD_NUMBER = 61;
    private volatile java.lang.Object parent_;
    /**
     * <pre>
     * French tokens have parents
     * </pre>
     *
     * <code>optional string parent = 61;</code>
     * @return Whether the parent field is set.
     */
    @java.lang.Override
    public boolean hasParent() {
      return ((bitField1_ & 0x00040000) != 0);
    }
    /**
     * <pre>
     * French tokens have parents
     * </pre>
     *
     * <code>optional string parent = 61;</code>
     * @return The parent.
     */
    @java.lang.Override
    public java.lang.String getParent() {
      java.lang.Object ref = parent_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          parent_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * French tokens have parents
     * </pre>
     *
     * <code>optional string parent = 61;</code>
     * @return The bytes for parent.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getParentBytes() {
      java.lang.Object ref = parent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        parent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COREFMENTIONINDEX_FIELD_NUMBER = 64;
    private com.google.protobuf.Internal.IntList corefMentionIndex_;
    /**
     * <pre>
     * mention index info
     * </pre>
     *
     * <code>repeated uint32 corefMentionIndex = 64;</code>
     * @return A list containing the corefMentionIndex.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getCorefMentionIndexList() {
      return corefMentionIndex_;
    }
    /**
     * <pre>
     * mention index info
     * </pre>
     *
     * <code>repeated uint32 corefMentionIndex = 64;</code>
     * @return The count of corefMentionIndex.
     */
    public int getCorefMentionIndexCount() {
      return corefMentionIndex_.size();
    }
    /**
     * <pre>
     * mention index info
     * </pre>
     *
     * <code>repeated uint32 corefMentionIndex = 64;</code>
     * @param index The index of the element to return.
     * @return The corefMentionIndex at the given index.
     */
    public int getCorefMentionIndex(int index) {
      return corefMentionIndex_.getInt(index);
    }

    public static final int ENTITYMENTIONINDEX_FIELD_NUMBER = 65;
    private int entityMentionIndex_;
    /**
     * <code>optional uint32 entityMentionIndex = 65;</code>
     * @return Whether the entityMentionIndex field is set.
     */
    @java.lang.Override
    public boolean hasEntityMentionIndex() {
      return ((bitField1_ & 0x00080000) != 0);
    }
    /**
     * <code>optional uint32 entityMentionIndex = 65;</code>
     * @return The entityMentionIndex.
     */
    @java.lang.Override
    public int getEntityMentionIndex() {
      return entityMentionIndex_;
    }

    public static final int ISMWT_FIELD_NUMBER = 67;
    private boolean isMWT_;
    /**
     * <pre>
     * mwt stuff
     * </pre>
     *
     * <code>optional bool isMWT = 67;</code>
     * @return Whether the isMWT field is set.
     */
    @java.lang.Override
    public boolean hasIsMWT() {
      return ((bitField1_ & 0x00100000) != 0);
    }
    /**
     * <pre>
     * mwt stuff
     * </pre>
     *
     * <code>optional bool isMWT = 67;</code>
     * @return The isMWT.
     */
    @java.lang.Override
    public boolean getIsMWT() {
      return isMWT_;
    }

    public static final int ISFIRSTMWT_FIELD_NUMBER = 68;
    private boolean isFirstMWT_;
    /**
     * <code>optional bool isFirstMWT = 68;</code>
     * @return Whether the isFirstMWT field is set.
     */
    @java.lang.Override
    public boolean hasIsFirstMWT() {
      return ((bitField1_ & 0x00200000) != 0);
    }
    /**
     * <code>optional bool isFirstMWT = 68;</code>
     * @return The isFirstMWT.
     */
    @java.lang.Override
    public boolean getIsFirstMWT() {
      return isFirstMWT_;
    }

    public static final int MWTTEXT_FIELD_NUMBER = 69;
    private volatile java.lang.Object mwtText_;
    /**
     * <code>optional string mwtText = 69;</code>
     * @return Whether the mwtText field is set.
     */
    @java.lang.Override
    public boolean hasMwtText() {
      return ((bitField1_ & 0x00400000) != 0);
    }
    /**
     * <code>optional string mwtText = 69;</code>
     * @return The mwtText.
     */
    @java.lang.Override
    public java.lang.String getMwtText() {
      java.lang.Object ref = mwtText_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          mwtText_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string mwtText = 69;</code>
     * @return The bytes for mwtText.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMwtTextBytes() {
      java.lang.Object ref = mwtText_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mwtText_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NUMERICVALUE_FIELD_NUMBER = 70;
    private long numericValue_;
    /**
     * <pre>
     * number info
     * </pre>
     *
     * <code>optional uint64 numericValue = 70;</code>
     * @return Whether the numericValue field is set.
     */
    @java.lang.Override
    public boolean hasNumericValue() {
      return ((bitField1_ & 0x00800000) != 0);
    }
    /**
     * <pre>
     * number info
     * </pre>
     *
     * <code>optional uint64 numericValue = 70;</code>
     * @return The numericValue.
     */
    @java.lang.Override
    public long getNumericValue() {
      return numericValue_;
    }

    public static final int NUMERICTYPE_FIELD_NUMBER = 71;
    private volatile java.lang.Object numericType_;
    /**
     * <code>optional string numericType = 71;</code>
     * @return Whether the numericType field is set.
     */
    @java.lang.Override
    public boolean hasNumericType() {
      return ((bitField1_ & 0x01000000) != 0);
    }
    /**
     * <code>optional string numericType = 71;</code>
     * @return The numericType.
     */
    @java.lang.Override
    public java.lang.String getNumericType() {
      java.lang.Object ref = numericType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          numericType_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string numericType = 71;</code>
     * @return The bytes for numericType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNumericTypeBytes() {
      java.lang.Object ref = numericType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        numericType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NUMERICCOMPOSITEVALUE_FIELD_NUMBER = 72;
    private long numericCompositeValue_;
    /**
     * <code>optional uint64 numericCompositeValue = 72;</code>
     * @return Whether the numericCompositeValue field is set.
     */
    @java.lang.Override
    public boolean hasNumericCompositeValue() {
      return ((bitField1_ & 0x02000000) != 0);
    }
    /**
     * <code>optional uint64 numericCompositeValue = 72;</code>
     * @return The numericCompositeValue.
     */
    @java.lang.Override
    public long getNumericCompositeValue() {
      return numericCompositeValue_;
    }

    public static final int NUMERICCOMPOSITETYPE_FIELD_NUMBER = 73;
    private volatile java.lang.Object numericCompositeType_;
    /**
     * <code>optional string numericCompositeType = 73;</code>
     * @return Whether the numericCompositeType field is set.
     */
    @java.lang.Override
    public boolean hasNumericCompositeType() {
      return ((bitField1_ & 0x04000000) != 0);
    }
    /**
     * <code>optional string numericCompositeType = 73;</code>
     * @return The numericCompositeType.
     */
    @java.lang.Override
    public java.lang.String getNumericCompositeType() {
      java.lang.Object ref = numericCompositeType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          numericCompositeType_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string numericCompositeType = 73;</code>
     * @return The bytes for numericCompositeType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNumericCompositeTypeBytes() {
      java.lang.Object ref = numericCompositeType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        numericCompositeType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CODEPOINTOFFSETBEGIN_FIELD_NUMBER = 74;
    private int codepointOffsetBegin_;
    /**
     * <code>optional uint32 codepointOffsetBegin = 74;</code>
     * @return Whether the codepointOffsetBegin field is set.
     */
    @java.lang.Override
    public boolean hasCodepointOffsetBegin() {
      return ((bitField1_ & 0x08000000) != 0);
    }
    /**
     * <code>optional uint32 codepointOffsetBegin = 74;</code>
     * @return The codepointOffsetBegin.
     */
    @java.lang.Override
    public int getCodepointOffsetBegin() {
      return codepointOffsetBegin_;
    }

    public static final int CODEPOINTOFFSETEND_FIELD_NUMBER = 75;
    private int codepointOffsetEnd_;
    /**
     * <code>optional uint32 codepointOffsetEnd = 75;</code>
     * @return Whether the codepointOffsetEnd field is set.
     */
    @java.lang.Override
    public boolean hasCodepointOffsetEnd() {
      return ((bitField1_ & 0x10000000) != 0);
    }
    /**
     * <code>optional uint32 codepointOffsetEnd = 75;</code>
     * @return The codepointOffsetEnd.
     */
    @java.lang.Override
    public int getCodepointOffsetEnd() {
      return codepointOffsetEnd_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasOperator()) {
        if (!getOperator().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPolarity()) {
        if (!getPolarity().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSpan()) {
        if (!getSpan().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasConllUTokenSpan()) {
        if (!getConllUTokenSpan().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!extensionsAreInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .ExtendableMessage<edu.stanford.nlp.pipeline.CoreNLPProtos.Token>.ExtensionWriter
          extensionWriter = newExtensionWriter();
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, word_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, pos_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, value_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, category_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, before_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, after_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, originalText_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, ner_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, normalizedNER_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, lemma_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeUInt32(11, beginChar_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeUInt32(12, endChar_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeUInt32(13, utterance_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, speaker_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        output.writeUInt32(15, beginIndex_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeUInt32(16, endIndex_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeUInt32(17, tokenBeginIndex_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeUInt32(18, tokenEndIndex_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        output.writeMessage(19, getTimexValue());
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        output.writeBool(21, hasXmlContext_);
      }
      for (int i = 0; i < xmlContext_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 22, xmlContext_.getRaw(i));
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        output.writeUInt32(23, corefClusterID_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 24, answer_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        output.writeUInt32(26, headWordIndex_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        output.writeMessage(27, getOperator());
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        output.writeMessage(28, getPolarity());
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        output.writeMessage(29, getSpan());
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 30, sentiment_);
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        output.writeInt32(31, quotationIndex_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        output.writeMessage(32, getConllUFeatures());
      }
      if (((bitField1_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 33, coarseTag_);
      }
      if (((bitField1_ & 0x00000004) != 0)) {
        output.writeMessage(34, getConllUTokenSpan());
      }
      if (((bitField1_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 35, conllUMisc_);
      }
      if (((bitField1_ & 0x00000010) != 0)) {
        output.writeMessage(36, getConllUSecondaryDeps());
      }
      if (((bitField1_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 37, wikipediaEntity_);
      }
      if (((bitField1_ & 0x00000040) != 0)) {
        output.writeBool(38, isNewline_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 39, polarityDir_);
      }
      if (((bitField1_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 51, gender_);
      }
      if (((bitField1_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 52, trueCase_);
      }
      if (((bitField1_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 53, trueCaseText_);
      }
      if (((bitField1_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 54, chineseChar_);
      }
      if (((bitField1_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 55, chineseSeg_);
      }
      if (((bitField1_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 56, sectionName_);
      }
      if (((bitField1_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 57, sectionAuthor_);
      }
      if (((bitField1_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 58, sectionDate_);
      }
      if (((bitField1_ & 0x00020000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 59, sectionEndLabel_);
      }
      if (((bitField1_ & 0x00001000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 60, chineseXMLChar_);
      }
      if (((bitField1_ & 0x00040000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 61, parent_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 62, coarseNER_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 63, fineGrainedNER_);
      }
      for (int i = 0; i < corefMentionIndex_.size(); i++) {
        output.writeUInt32(64, corefMentionIndex_.getInt(i));
      }
      if (((bitField1_ & 0x00080000) != 0)) {
        output.writeUInt32(65, entityMentionIndex_);
      }
      for (int i = 0; i < nerLabelProbs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 66, nerLabelProbs_.getRaw(i));
      }
      if (((bitField1_ & 0x00100000) != 0)) {
        output.writeBool(67, isMWT_);
      }
      if (((bitField1_ & 0x00200000) != 0)) {
        output.writeBool(68, isFirstMWT_);
      }
      if (((bitField1_ & 0x00400000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 69, mwtText_);
      }
      if (((bitField1_ & 0x00800000) != 0)) {
        output.writeUInt64(70, numericValue_);
      }
      if (((bitField1_ & 0x01000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 71, numericType_);
      }
      if (((bitField1_ & 0x02000000) != 0)) {
        output.writeUInt64(72, numericCompositeValue_);
      }
      if (((bitField1_ & 0x04000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 73, numericCompositeType_);
      }
      if (((bitField1_ & 0x08000000) != 0)) {
        output.writeUInt32(74, codepointOffsetBegin_);
      }
      if (((bitField1_ & 0x10000000) != 0)) {
        output.writeUInt32(75, codepointOffsetEnd_);
      }
      if (((bitField1_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 76, arabicSeg_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 77, speakerType_);
      }
      extensionWriter.writeUntil(256, output);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, word_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, pos_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, value_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, category_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, before_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, after_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, originalText_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, ner_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, normalizedNER_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, lemma_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(11, beginChar_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(12, endChar_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(13, utterance_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, speaker_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(15, beginIndex_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(16, endIndex_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(17, tokenBeginIndex_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(18, tokenEndIndex_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, getTimexValue());
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(21, hasXmlContext_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < xmlContext_.size(); i++) {
          dataSize += computeStringSizeNoTag(xmlContext_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getXmlContextList().size();
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(23, corefClusterID_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(24, answer_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(26, headWordIndex_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(27, getOperator());
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(28, getPolarity());
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(29, getSpan());
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(30, sentiment_);
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(31, quotationIndex_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(32, getConllUFeatures());
      }
      if (((bitField1_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33, coarseTag_);
      }
      if (((bitField1_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(34, getConllUTokenSpan());
      }
      if (((bitField1_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(35, conllUMisc_);
      }
      if (((bitField1_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(36, getConllUSecondaryDeps());
      }
      if (((bitField1_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(37, wikipediaEntity_);
      }
      if (((bitField1_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(38, isNewline_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(39, polarityDir_);
      }
      if (((bitField1_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(51, gender_);
      }
      if (((bitField1_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(52, trueCase_);
      }
      if (((bitField1_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(53, trueCaseText_);
      }
      if (((bitField1_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(54, chineseChar_);
      }
      if (((bitField1_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(55, chineseSeg_);
      }
      if (((bitField1_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(56, sectionName_);
      }
      if (((bitField1_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(57, sectionAuthor_);
      }
      if (((bitField1_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(58, sectionDate_);
      }
      if (((bitField1_ & 0x00020000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(59, sectionEndLabel_);
      }
      if (((bitField1_ & 0x00001000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(60, chineseXMLChar_);
      }
      if (((bitField1_ & 0x00040000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(61, parent_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(62, coarseNER_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(63, fineGrainedNER_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < corefMentionIndex_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(corefMentionIndex_.getInt(i));
        }
        size += dataSize;
        size += 2 * getCorefMentionIndexList().size();
      }
      if (((bitField1_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(65, entityMentionIndex_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < nerLabelProbs_.size(); i++) {
          dataSize += computeStringSizeNoTag(nerLabelProbs_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getNerLabelProbsList().size();
      }
      if (((bitField1_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(67, isMWT_);
      }
      if (((bitField1_ & 0x00200000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(68, isFirstMWT_);
      }
      if (((bitField1_ & 0x00400000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(69, mwtText_);
      }
      if (((bitField1_ & 0x00800000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(70, numericValue_);
      }
      if (((bitField1_ & 0x01000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(71, numericType_);
      }
      if (((bitField1_ & 0x02000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(72, numericCompositeValue_);
      }
      if (((bitField1_ & 0x04000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(73, numericCompositeType_);
      }
      if (((bitField1_ & 0x08000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(74, codepointOffsetBegin_);
      }
      if (((bitField1_ & 0x10000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(75, codepointOffsetEnd_);
      }
      if (((bitField1_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(76, arabicSeg_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(77, speakerType_);
      }
      size += extensionsSerializedSize();
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Token)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Token other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Token) obj;

      if (hasWord() != other.hasWord()) return false;
      if (hasWord()) {
        if (!getWord()
            .equals(other.getWord())) return false;
      }
      if (hasPos() != other.hasPos()) return false;
      if (hasPos()) {
        if (!getPos()
            .equals(other.getPos())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (hasCategory() != other.hasCategory()) return false;
      if (hasCategory()) {
        if (!getCategory()
            .equals(other.getCategory())) return false;
      }
      if (hasBefore() != other.hasBefore()) return false;
      if (hasBefore()) {
        if (!getBefore()
            .equals(other.getBefore())) return false;
      }
      if (hasAfter() != other.hasAfter()) return false;
      if (hasAfter()) {
        if (!getAfter()
            .equals(other.getAfter())) return false;
      }
      if (hasOriginalText() != other.hasOriginalText()) return false;
      if (hasOriginalText()) {
        if (!getOriginalText()
            .equals(other.getOriginalText())) return false;
      }
      if (hasNer() != other.hasNer()) return false;
      if (hasNer()) {
        if (!getNer()
            .equals(other.getNer())) return false;
      }
      if (hasCoarseNER() != other.hasCoarseNER()) return false;
      if (hasCoarseNER()) {
        if (!getCoarseNER()
            .equals(other.getCoarseNER())) return false;
      }
      if (hasFineGrainedNER() != other.hasFineGrainedNER()) return false;
      if (hasFineGrainedNER()) {
        if (!getFineGrainedNER()
            .equals(other.getFineGrainedNER())) return false;
      }
      if (!getNerLabelProbsList()
          .equals(other.getNerLabelProbsList())) return false;
      if (hasNormalizedNER() != other.hasNormalizedNER()) return false;
      if (hasNormalizedNER()) {
        if (!getNormalizedNER()
            .equals(other.getNormalizedNER())) return false;
      }
      if (hasLemma() != other.hasLemma()) return false;
      if (hasLemma()) {
        if (!getLemma()
            .equals(other.getLemma())) return false;
      }
      if (hasBeginChar() != other.hasBeginChar()) return false;
      if (hasBeginChar()) {
        if (getBeginChar()
            != other.getBeginChar()) return false;
      }
      if (hasEndChar() != other.hasEndChar()) return false;
      if (hasEndChar()) {
        if (getEndChar()
            != other.getEndChar()) return false;
      }
      if (hasUtterance() != other.hasUtterance()) return false;
      if (hasUtterance()) {
        if (getUtterance()
            != other.getUtterance()) return false;
      }
      if (hasSpeaker() != other.hasSpeaker()) return false;
      if (hasSpeaker()) {
        if (!getSpeaker()
            .equals(other.getSpeaker())) return false;
      }
      if (hasSpeakerType() != other.hasSpeakerType()) return false;
      if (hasSpeakerType()) {
        if (!getSpeakerType()
            .equals(other.getSpeakerType())) return false;
      }
      if (hasBeginIndex() != other.hasBeginIndex()) return false;
      if (hasBeginIndex()) {
        if (getBeginIndex()
            != other.getBeginIndex()) return false;
      }
      if (hasEndIndex() != other.hasEndIndex()) return false;
      if (hasEndIndex()) {
        if (getEndIndex()
            != other.getEndIndex()) return false;
      }
      if (hasTokenBeginIndex() != other.hasTokenBeginIndex()) return false;
      if (hasTokenBeginIndex()) {
        if (getTokenBeginIndex()
            != other.getTokenBeginIndex()) return false;
      }
      if (hasTokenEndIndex() != other.hasTokenEndIndex()) return false;
      if (hasTokenEndIndex()) {
        if (getTokenEndIndex()
            != other.getTokenEndIndex()) return false;
      }
      if (hasTimexValue() != other.hasTimexValue()) return false;
      if (hasTimexValue()) {
        if (!getTimexValue()
            .equals(other.getTimexValue())) return false;
      }
      if (hasHasXmlContext() != other.hasHasXmlContext()) return false;
      if (hasHasXmlContext()) {
        if (getHasXmlContext()
            != other.getHasXmlContext()) return false;
      }
      if (!getXmlContextList()
          .equals(other.getXmlContextList())) return false;
      if (hasCorefClusterID() != other.hasCorefClusterID()) return false;
      if (hasCorefClusterID()) {
        if (getCorefClusterID()
            != other.getCorefClusterID()) return false;
      }
      if (hasAnswer() != other.hasAnswer()) return false;
      if (hasAnswer()) {
        if (!getAnswer()
            .equals(other.getAnswer())) return false;
      }
      if (hasHeadWordIndex() != other.hasHeadWordIndex()) return false;
      if (hasHeadWordIndex()) {
        if (getHeadWordIndex()
            != other.getHeadWordIndex()) return false;
      }
      if (hasOperator() != other.hasOperator()) return false;
      if (hasOperator()) {
        if (!getOperator()
            .equals(other.getOperator())) return false;
      }
      if (hasPolarity() != other.hasPolarity()) return false;
      if (hasPolarity()) {
        if (!getPolarity()
            .equals(other.getPolarity())) return false;
      }
      if (hasPolarityDir() != other.hasPolarityDir()) return false;
      if (hasPolarityDir()) {
        if (!getPolarityDir()
            .equals(other.getPolarityDir())) return false;
      }
      if (hasSpan() != other.hasSpan()) return false;
      if (hasSpan()) {
        if (!getSpan()
            .equals(other.getSpan())) return false;
      }
      if (hasSentiment() != other.hasSentiment()) return false;
      if (hasSentiment()) {
        if (!getSentiment()
            .equals(other.getSentiment())) return false;
      }
      if (hasQuotationIndex() != other.hasQuotationIndex()) return false;
      if (hasQuotationIndex()) {
        if (getQuotationIndex()
            != other.getQuotationIndex()) return false;
      }
      if (hasConllUFeatures() != other.hasConllUFeatures()) return false;
      if (hasConllUFeatures()) {
        if (!getConllUFeatures()
            .equals(other.getConllUFeatures())) return false;
      }
      if (hasCoarseTag() != other.hasCoarseTag()) return false;
      if (hasCoarseTag()) {
        if (!getCoarseTag()
            .equals(other.getCoarseTag())) return false;
      }
      if (hasConllUTokenSpan() != other.hasConllUTokenSpan()) return false;
      if (hasConllUTokenSpan()) {
        if (!getConllUTokenSpan()
            .equals(other.getConllUTokenSpan())) return false;
      }
      if (hasConllUMisc() != other.hasConllUMisc()) return false;
      if (hasConllUMisc()) {
        if (!getConllUMisc()
            .equals(other.getConllUMisc())) return false;
      }
      if (hasConllUSecondaryDeps() != other.hasConllUSecondaryDeps()) return false;
      if (hasConllUSecondaryDeps()) {
        if (!getConllUSecondaryDeps()
            .equals(other.getConllUSecondaryDeps())) return false;
      }
      if (hasWikipediaEntity() != other.hasWikipediaEntity()) return false;
      if (hasWikipediaEntity()) {
        if (!getWikipediaEntity()
            .equals(other.getWikipediaEntity())) return false;
      }
      if (hasIsNewline() != other.hasIsNewline()) return false;
      if (hasIsNewline()) {
        if (getIsNewline()
            != other.getIsNewline()) return false;
      }
      if (hasGender() != other.hasGender()) return false;
      if (hasGender()) {
        if (!getGender()
            .equals(other.getGender())) return false;
      }
      if (hasTrueCase() != other.hasTrueCase()) return false;
      if (hasTrueCase()) {
        if (!getTrueCase()
            .equals(other.getTrueCase())) return false;
      }
      if (hasTrueCaseText() != other.hasTrueCaseText()) return false;
      if (hasTrueCaseText()) {
        if (!getTrueCaseText()
            .equals(other.getTrueCaseText())) return false;
      }
      if (hasChineseChar() != other.hasChineseChar()) return false;
      if (hasChineseChar()) {
        if (!getChineseChar()
            .equals(other.getChineseChar())) return false;
      }
      if (hasChineseSeg() != other.hasChineseSeg()) return false;
      if (hasChineseSeg()) {
        if (!getChineseSeg()
            .equals(other.getChineseSeg())) return false;
      }
      if (hasChineseXMLChar() != other.hasChineseXMLChar()) return false;
      if (hasChineseXMLChar()) {
        if (!getChineseXMLChar()
            .equals(other.getChineseXMLChar())) return false;
      }
      if (hasArabicSeg() != other.hasArabicSeg()) return false;
      if (hasArabicSeg()) {
        if (!getArabicSeg()
            .equals(other.getArabicSeg())) return false;
      }
      if (hasSectionName() != other.hasSectionName()) return false;
      if (hasSectionName()) {
        if (!getSectionName()
            .equals(other.getSectionName())) return false;
      }
      if (hasSectionAuthor() != other.hasSectionAuthor()) return false;
      if (hasSectionAuthor()) {
        if (!getSectionAuthor()
            .equals(other.getSectionAuthor())) return false;
      }
      if (hasSectionDate() != other.hasSectionDate()) return false;
      if (hasSectionDate()) {
        if (!getSectionDate()
            .equals(other.getSectionDate())) return false;
      }
      if (hasSectionEndLabel() != other.hasSectionEndLabel()) return false;
      if (hasSectionEndLabel()) {
        if (!getSectionEndLabel()
            .equals(other.getSectionEndLabel())) return false;
      }
      if (hasParent() != other.hasParent()) return false;
      if (hasParent()) {
        if (!getParent()
            .equals(other.getParent())) return false;
      }
      if (!getCorefMentionIndexList()
          .equals(other.getCorefMentionIndexList())) return false;
      if (hasEntityMentionIndex() != other.hasEntityMentionIndex()) return false;
      if (hasEntityMentionIndex()) {
        if (getEntityMentionIndex()
            != other.getEntityMentionIndex()) return false;
      }
      if (hasIsMWT() != other.hasIsMWT()) return false;
      if (hasIsMWT()) {
        if (getIsMWT()
            != other.getIsMWT()) return false;
      }
      if (hasIsFirstMWT() != other.hasIsFirstMWT()) return false;
      if (hasIsFirstMWT()) {
        if (getIsFirstMWT()
            != other.getIsFirstMWT()) return false;
      }
      if (hasMwtText() != other.hasMwtText()) return false;
      if (hasMwtText()) {
        if (!getMwtText()
            .equals(other.getMwtText())) return false;
      }
      if (hasNumericValue() != other.hasNumericValue()) return false;
      if (hasNumericValue()) {
        if (getNumericValue()
            != other.getNumericValue()) return false;
      }
      if (hasNumericType() != other.hasNumericType()) return false;
      if (hasNumericType()) {
        if (!getNumericType()
            .equals(other.getNumericType())) return false;
      }
      if (hasNumericCompositeValue() != other.hasNumericCompositeValue()) return false;
      if (hasNumericCompositeValue()) {
        if (getNumericCompositeValue()
            != other.getNumericCompositeValue()) return false;
      }
      if (hasNumericCompositeType() != other.hasNumericCompositeType()) return false;
      if (hasNumericCompositeType()) {
        if (!getNumericCompositeType()
            .equals(other.getNumericCompositeType())) return false;
      }
      if (hasCodepointOffsetBegin() != other.hasCodepointOffsetBegin()) return false;
      if (hasCodepointOffsetBegin()) {
        if (getCodepointOffsetBegin()
            != other.getCodepointOffsetBegin()) return false;
      }
      if (hasCodepointOffsetEnd() != other.hasCodepointOffsetEnd()) return false;
      if (hasCodepointOffsetEnd()) {
        if (getCodepointOffsetEnd()
            != other.getCodepointOffsetEnd()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      if (!getExtensionFields().equals(other.getExtensionFields()))
        return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasWord()) {
        hash = (37 * hash) + WORD_FIELD_NUMBER;
        hash = (53 * hash) + getWord().hashCode();
      }
      if (hasPos()) {
        hash = (37 * hash) + POS_FIELD_NUMBER;
        hash = (53 * hash) + getPos().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      if (hasCategory()) {
        hash = (37 * hash) + CATEGORY_FIELD_NUMBER;
        hash = (53 * hash) + getCategory().hashCode();
      }
      if (hasBefore()) {
        hash = (37 * hash) + BEFORE_FIELD_NUMBER;
        hash = (53 * hash) + getBefore().hashCode();
      }
      if (hasAfter()) {
        hash = (37 * hash) + AFTER_FIELD_NUMBER;
        hash = (53 * hash) + getAfter().hashCode();
      }
      if (hasOriginalText()) {
        hash = (37 * hash) + ORIGINALTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getOriginalText().hashCode();
      }
      if (hasNer()) {
        hash = (37 * hash) + NER_FIELD_NUMBER;
        hash = (53 * hash) + getNer().hashCode();
      }
      if (hasCoarseNER()) {
        hash = (37 * hash) + COARSENER_FIELD_NUMBER;
        hash = (53 * hash) + getCoarseNER().hashCode();
      }
      if (hasFineGrainedNER()) {
        hash = (37 * hash) + FINEGRAINEDNER_FIELD_NUMBER;
        hash = (53 * hash) + getFineGrainedNER().hashCode();
      }
      if (getNerLabelProbsCount() > 0) {
        hash = (37 * hash) + NERLABELPROBS_FIELD_NUMBER;
        hash = (53 * hash) + getNerLabelProbsList().hashCode();
      }
      if (hasNormalizedNER()) {
        hash = (37 * hash) + NORMALIZEDNER_FIELD_NUMBER;
        hash = (53 * hash) + getNormalizedNER().hashCode();
      }
      if (hasLemma()) {
        hash = (37 * hash) + LEMMA_FIELD_NUMBER;
        hash = (53 * hash) + getLemma().hashCode();
      }
      if (hasBeginChar()) {
        hash = (37 * hash) + BEGINCHAR_FIELD_NUMBER;
        hash = (53 * hash) + getBeginChar();
      }
      if (hasEndChar()) {
        hash = (37 * hash) + ENDCHAR_FIELD_NUMBER;
        hash = (53 * hash) + getEndChar();
      }
      if (hasUtterance()) {
        hash = (37 * hash) + UTTERANCE_FIELD_NUMBER;
        hash = (53 * hash) + getUtterance();
      }
      if (hasSpeaker()) {
        hash = (37 * hash) + SPEAKER_FIELD_NUMBER;
        hash = (53 * hash) + getSpeaker().hashCode();
      }
      if (hasSpeakerType()) {
        hash = (37 * hash) + SPEAKERTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getSpeakerType().hashCode();
      }
      if (hasBeginIndex()) {
        hash = (37 * hash) + BEGININDEX_FIELD_NUMBER;
        hash = (53 * hash) + getBeginIndex();
      }
      if (hasEndIndex()) {
        hash = (37 * hash) + ENDINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getEndIndex();
      }
      if (hasTokenBeginIndex()) {
        hash = (37 * hash) + TOKENBEGININDEX_FIELD_NUMBER;
        hash = (53 * hash) + getTokenBeginIndex();
      }
      if (hasTokenEndIndex()) {
        hash = (37 * hash) + TOKENENDINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getTokenEndIndex();
      }
      if (hasTimexValue()) {
        hash = (37 * hash) + TIMEXVALUE_FIELD_NUMBER;
        hash = (53 * hash) + getTimexValue().hashCode();
      }
      if (hasHasXmlContext()) {
        hash = (37 * hash) + HASXMLCONTEXT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasXmlContext());
      }
      if (getXmlContextCount() > 0) {
        hash = (37 * hash) + XMLCONTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getXmlContextList().hashCode();
      }
      if (hasCorefClusterID()) {
        hash = (37 * hash) + COREFCLUSTERID_FIELD_NUMBER;
        hash = (53 * hash) + getCorefClusterID();
      }
      if (hasAnswer()) {
        hash = (37 * hash) + ANSWER_FIELD_NUMBER;
        hash = (53 * hash) + getAnswer().hashCode();
      }
      if (hasHeadWordIndex()) {
        hash = (37 * hash) + HEADWORDINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getHeadWordIndex();
      }
      if (hasOperator()) {
        hash = (37 * hash) + OPERATOR_FIELD_NUMBER;
        hash = (53 * hash) + getOperator().hashCode();
      }
      if (hasPolarity()) {
        hash = (37 * hash) + POLARITY_FIELD_NUMBER;
        hash = (53 * hash) + getPolarity().hashCode();
      }
      if (hasPolarityDir()) {
        hash = (37 * hash) + POLARITY_DIR_FIELD_NUMBER;
        hash = (53 * hash) + getPolarityDir().hashCode();
      }
      if (hasSpan()) {
        hash = (37 * hash) + SPAN_FIELD_NUMBER;
        hash = (53 * hash) + getSpan().hashCode();
      }
      if (hasSentiment()) {
        hash = (37 * hash) + SENTIMENT_FIELD_NUMBER;
        hash = (53 * hash) + getSentiment().hashCode();
      }
      if (hasQuotationIndex()) {
        hash = (37 * hash) + QUOTATIONINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getQuotationIndex();
      }
      if (hasConllUFeatures()) {
        hash = (37 * hash) + CONLLUFEATURES_FIELD_NUMBER;
        hash = (53 * hash) + getConllUFeatures().hashCode();
      }
      if (hasCoarseTag()) {
        hash = (37 * hash) + COARSETAG_FIELD_NUMBER;
        hash = (53 * hash) + getCoarseTag().hashCode();
      }
      if (hasConllUTokenSpan()) {
        hash = (37 * hash) + CONLLUTOKENSPAN_FIELD_NUMBER;
        hash = (53 * hash) + getConllUTokenSpan().hashCode();
      }
      if (hasConllUMisc()) {
        hash = (37 * hash) + CONLLUMISC_FIELD_NUMBER;
        hash = (53 * hash) + getConllUMisc().hashCode();
      }
      if (hasConllUSecondaryDeps()) {
        hash = (37 * hash) + CONLLUSECONDARYDEPS_FIELD_NUMBER;
        hash = (53 * hash) + getConllUSecondaryDeps().hashCode();
      }
      if (hasWikipediaEntity()) {
        hash = (37 * hash) + WIKIPEDIAENTITY_FIELD_NUMBER;
        hash = (53 * hash) + getWikipediaEntity().hashCode();
      }
      if (hasIsNewline()) {
        hash = (37 * hash) + ISNEWLINE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsNewline());
      }
      if (hasGender()) {
        hash = (37 * hash) + GENDER_FIELD_NUMBER;
        hash = (53 * hash) + getGender().hashCode();
      }
      if (hasTrueCase()) {
        hash = (37 * hash) + TRUECASE_FIELD_NUMBER;
        hash = (53 * hash) + getTrueCase().hashCode();
      }
      if (hasTrueCaseText()) {
        hash = (37 * hash) + TRUECASETEXT_FIELD_NUMBER;
        hash = (53 * hash) + getTrueCaseText().hashCode();
      }
      if (hasChineseChar()) {
        hash = (37 * hash) + CHINESECHAR_FIELD_NUMBER;
        hash = (53 * hash) + getChineseChar().hashCode();
      }
      if (hasChineseSeg()) {
        hash = (37 * hash) + CHINESESEG_FIELD_NUMBER;
        hash = (53 * hash) + getChineseSeg().hashCode();
      }
      if (hasChineseXMLChar()) {
        hash = (37 * hash) + CHINESEXMLCHAR_FIELD_NUMBER;
        hash = (53 * hash) + getChineseXMLChar().hashCode();
      }
      if (hasArabicSeg()) {
        hash = (37 * hash) + ARABICSEG_FIELD_NUMBER;
        hash = (53 * hash) + getArabicSeg().hashCode();
      }
      if (hasSectionName()) {
        hash = (37 * hash) + SECTIONNAME_FIELD_NUMBER;
        hash = (53 * hash) + getSectionName().hashCode();
      }
      if (hasSectionAuthor()) {
        hash = (37 * hash) + SECTIONAUTHOR_FIELD_NUMBER;
        hash = (53 * hash) + getSectionAuthor().hashCode();
      }
      if (hasSectionDate()) {
        hash = (37 * hash) + SECTIONDATE_FIELD_NUMBER;
        hash = (53 * hash) + getSectionDate().hashCode();
      }
      if (hasSectionEndLabel()) {
        hash = (37 * hash) + SECTIONENDLABEL_FIELD_NUMBER;
        hash = (53 * hash) + getSectionEndLabel().hashCode();
      }
      if (hasParent()) {
        hash = (37 * hash) + PARENT_FIELD_NUMBER;
        hash = (53 * hash) + getParent().hashCode();
      }
      if (getCorefMentionIndexCount() > 0) {
        hash = (37 * hash) + COREFMENTIONINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getCorefMentionIndexList().hashCode();
      }
      if (hasEntityMentionIndex()) {
        hash = (37 * hash) + ENTITYMENTIONINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getEntityMentionIndex();
      }
      if (hasIsMWT()) {
        hash = (37 * hash) + ISMWT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsMWT());
      }
      if (hasIsFirstMWT()) {
        hash = (37 * hash) + ISFIRSTMWT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsFirstMWT());
      }
      if (hasMwtText()) {
        hash = (37 * hash) + MWTTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getMwtText().hashCode();
      }
      if (hasNumericValue()) {
        hash = (37 * hash) + NUMERICVALUE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNumericValue());
      }
      if (hasNumericType()) {
        hash = (37 * hash) + NUMERICTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getNumericType().hashCode();
      }
      if (hasNumericCompositeValue()) {
        hash = (37 * hash) + NUMERICCOMPOSITEVALUE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNumericCompositeValue());
      }
      if (hasNumericCompositeType()) {
        hash = (37 * hash) + NUMERICCOMPOSITETYPE_FIELD_NUMBER;
        hash = (53 * hash) + getNumericCompositeType().hashCode();
      }
      if (hasCodepointOffsetBegin()) {
        hash = (37 * hash) + CODEPOINTOFFSETBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getCodepointOffsetBegin();
      }
      if (hasCodepointOffsetEnd()) {
        hash = (37 * hash) + CODEPOINTOFFSETEND_FIELD_NUMBER;
        hash = (53 * hash) + getCodepointOffsetEnd();
      }
      hash = hashFields(hash, getExtensionFields());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Token prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The serialized version of a Token (a CoreLabel).
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Token}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Token)
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Token_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Token_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Token.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Token.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimexValueFieldBuilder();
          getOperatorFieldBuilder();
          getPolarityFieldBuilder();
          getSpanFieldBuilder();
          getConllUFeaturesFieldBuilder();
          getConllUTokenSpanFieldBuilder();
          getConllUSecondaryDepsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        word_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        pos_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        category_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        before_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        after_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        originalText_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        ner_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        coarseNER_ = "";
        bitField0_ = (bitField0_ & ~0x00000100);
        fineGrainedNER_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        nerLabelProbs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        normalizedNER_ = "";
        bitField0_ = (bitField0_ & ~0x00000800);
        lemma_ = "";
        bitField0_ = (bitField0_ & ~0x00001000);
        beginChar_ = 0;
        bitField0_ = (bitField0_ & ~0x00002000);
        endChar_ = 0;
        bitField0_ = (bitField0_ & ~0x00004000);
        utterance_ = 0;
        bitField0_ = (bitField0_ & ~0x00008000);
        speaker_ = "";
        bitField0_ = (bitField0_ & ~0x00010000);
        speakerType_ = "";
        bitField0_ = (bitField0_ & ~0x00020000);
        beginIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00040000);
        endIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00080000);
        tokenBeginIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00100000);
        tokenEndIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00200000);
        if (timexValueBuilder_ == null) {
          timexValue_ = null;
        } else {
          timexValueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00400000);
        hasXmlContext_ = false;
        bitField0_ = (bitField0_ & ~0x00800000);
        xmlContext_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x01000000);
        corefClusterID_ = 0;
        bitField0_ = (bitField0_ & ~0x02000000);
        answer_ = "";
        bitField0_ = (bitField0_ & ~0x04000000);
        headWordIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x08000000);
        if (operatorBuilder_ == null) {
          operator_ = null;
        } else {
          operatorBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x10000000);
        if (polarityBuilder_ == null) {
          polarity_ = null;
        } else {
          polarityBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x20000000);
        polarityDir_ = "";
        bitField0_ = (bitField0_ & ~0x40000000);
        if (spanBuilder_ == null) {
          span_ = null;
        } else {
          spanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x80000000);
        sentiment_ = "";
        bitField1_ = (bitField1_ & ~0x00000001);
        quotationIndex_ = 0;
        bitField1_ = (bitField1_ & ~0x00000002);
        if (conllUFeaturesBuilder_ == null) {
          conllUFeatures_ = null;
        } else {
          conllUFeaturesBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000004);
        coarseTag_ = "";
        bitField1_ = (bitField1_ & ~0x00000008);
        if (conllUTokenSpanBuilder_ == null) {
          conllUTokenSpan_ = null;
        } else {
          conllUTokenSpanBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000010);
        conllUMisc_ = "";
        bitField1_ = (bitField1_ & ~0x00000020);
        if (conllUSecondaryDepsBuilder_ == null) {
          conllUSecondaryDeps_ = null;
        } else {
          conllUSecondaryDepsBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000040);
        wikipediaEntity_ = "";
        bitField1_ = (bitField1_ & ~0x00000080);
        isNewline_ = false;
        bitField1_ = (bitField1_ & ~0x00000100);
        gender_ = "";
        bitField1_ = (bitField1_ & ~0x00000200);
        trueCase_ = "";
        bitField1_ = (bitField1_ & ~0x00000400);
        trueCaseText_ = "";
        bitField1_ = (bitField1_ & ~0x00000800);
        chineseChar_ = "";
        bitField1_ = (bitField1_ & ~0x00001000);
        chineseSeg_ = "";
        bitField1_ = (bitField1_ & ~0x00002000);
        chineseXMLChar_ = "";
        bitField1_ = (bitField1_ & ~0x00004000);
        arabicSeg_ = "";
        bitField1_ = (bitField1_ & ~0x00008000);
        sectionName_ = "";
        bitField1_ = (bitField1_ & ~0x00010000);
        sectionAuthor_ = "";
        bitField1_ = (bitField1_ & ~0x00020000);
        sectionDate_ = "";
        bitField1_ = (bitField1_ & ~0x00040000);
        sectionEndLabel_ = "";
        bitField1_ = (bitField1_ & ~0x00080000);
        parent_ = "";
        bitField1_ = (bitField1_ & ~0x00100000);
        corefMentionIndex_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00200000);
        entityMentionIndex_ = 0;
        bitField1_ = (bitField1_ & ~0x00400000);
        isMWT_ = false;
        bitField1_ = (bitField1_ & ~0x00800000);
        isFirstMWT_ = false;
        bitField1_ = (bitField1_ & ~0x01000000);
        mwtText_ = "";
        bitField1_ = (bitField1_ & ~0x02000000);
        numericValue_ = 0L;
        bitField1_ = (bitField1_ & ~0x04000000);
        numericType_ = "";
        bitField1_ = (bitField1_ & ~0x08000000);
        numericCompositeValue_ = 0L;
        bitField1_ = (bitField1_ & ~0x10000000);
        numericCompositeType_ = "";
        bitField1_ = (bitField1_ & ~0x20000000);
        codepointOffsetBegin_ = 0;
        bitField1_ = (bitField1_ & ~0x40000000);
        codepointOffsetEnd_ = 0;
        bitField1_ = (bitField1_ & ~0x80000000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Token_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Token result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Token result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Token(this);
        int from_bitField0_ = bitField0_;
        int from_bitField1_ = bitField1_;
        int to_bitField0_ = 0;
        int to_bitField1_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.word_ = word_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.pos_ = pos_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.category_ = category_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x00000010;
        }
        result.before_ = before_;
        if (((from_bitField0_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x00000020;
        }
        result.after_ = after_;
        if (((from_bitField0_ & 0x00000040) != 0)) {
          to_bitField0_ |= 0x00000040;
        }
        result.originalText_ = originalText_;
        if (((from_bitField0_ & 0x00000080) != 0)) {
          to_bitField0_ |= 0x00000080;
        }
        result.ner_ = ner_;
        if (((from_bitField0_ & 0x00000100) != 0)) {
          to_bitField0_ |= 0x00000100;
        }
        result.coarseNER_ = coarseNER_;
        if (((from_bitField0_ & 0x00000200) != 0)) {
          to_bitField0_ |= 0x00000200;
        }
        result.fineGrainedNER_ = fineGrainedNER_;
        if (((bitField0_ & 0x00000400) != 0)) {
          nerLabelProbs_ = nerLabelProbs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.nerLabelProbs_ = nerLabelProbs_;
        if (((from_bitField0_ & 0x00000800) != 0)) {
          to_bitField0_ |= 0x00000400;
        }
        result.normalizedNER_ = normalizedNER_;
        if (((from_bitField0_ & 0x00001000) != 0)) {
          to_bitField0_ |= 0x00000800;
        }
        result.lemma_ = lemma_;
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.beginChar_ = beginChar_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.endChar_ = endChar_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.utterance_ = utterance_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          to_bitField0_ |= 0x00008000;
        }
        result.speaker_ = speaker_;
        if (((from_bitField0_ & 0x00020000) != 0)) {
          to_bitField0_ |= 0x00010000;
        }
        result.speakerType_ = speakerType_;
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.beginIndex_ = beginIndex_;
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.endIndex_ = endIndex_;
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.tokenBeginIndex_ = tokenBeginIndex_;
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.tokenEndIndex_ = tokenEndIndex_;
          to_bitField0_ |= 0x00100000;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          if (timexValueBuilder_ == null) {
            result.timexValue_ = timexValue_;
          } else {
            result.timexValue_ = timexValueBuilder_.build();
          }
          to_bitField0_ |= 0x00200000;
        }
        if (((from_bitField0_ & 0x00800000) != 0)) {
          result.hasXmlContext_ = hasXmlContext_;
          to_bitField0_ |= 0x00400000;
        }
        if (((bitField0_ & 0x01000000) != 0)) {
          xmlContext_ = xmlContext_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x01000000);
        }
        result.xmlContext_ = xmlContext_;
        if (((from_bitField0_ & 0x02000000) != 0)) {
          result.corefClusterID_ = corefClusterID_;
          to_bitField0_ |= 0x00800000;
        }
        if (((from_bitField0_ & 0x04000000) != 0)) {
          to_bitField0_ |= 0x01000000;
        }
        result.answer_ = answer_;
        if (((from_bitField0_ & 0x08000000) != 0)) {
          result.headWordIndex_ = headWordIndex_;
          to_bitField0_ |= 0x02000000;
        }
        if (((from_bitField0_ & 0x10000000) != 0)) {
          if (operatorBuilder_ == null) {
            result.operator_ = operator_;
          } else {
            result.operator_ = operatorBuilder_.build();
          }
          to_bitField0_ |= 0x04000000;
        }
        if (((from_bitField0_ & 0x20000000) != 0)) {
          if (polarityBuilder_ == null) {
            result.polarity_ = polarity_;
          } else {
            result.polarity_ = polarityBuilder_.build();
          }
          to_bitField0_ |= 0x08000000;
        }
        if (((from_bitField0_ & 0x40000000) != 0)) {
          to_bitField0_ |= 0x10000000;
        }
        result.polarityDir_ = polarityDir_;
        if (((from_bitField0_ & 0x80000000) != 0)) {
          if (spanBuilder_ == null) {
            result.span_ = span_;
          } else {
            result.span_ = spanBuilder_.build();
          }
          to_bitField0_ |= 0x20000000;
        }
        if (((from_bitField1_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x40000000;
        }
        result.sentiment_ = sentiment_;
        if (((from_bitField1_ & 0x00000002) != 0)) {
          result.quotationIndex_ = quotationIndex_;
          to_bitField0_ |= 0x80000000;
        }
        if (((from_bitField1_ & 0x00000004) != 0)) {
          if (conllUFeaturesBuilder_ == null) {
            result.conllUFeatures_ = conllUFeatures_;
          } else {
            result.conllUFeatures_ = conllUFeaturesBuilder_.build();
          }
          to_bitField1_ |= 0x00000001;
        }
        if (((from_bitField1_ & 0x00000008) != 0)) {
          to_bitField1_ |= 0x00000002;
        }
        result.coarseTag_ = coarseTag_;
        if (((from_bitField1_ & 0x00000010) != 0)) {
          if (conllUTokenSpanBuilder_ == null) {
            result.conllUTokenSpan_ = conllUTokenSpan_;
          } else {
            result.conllUTokenSpan_ = conllUTokenSpanBuilder_.build();
          }
          to_bitField1_ |= 0x00000004;
        }
        if (((from_bitField1_ & 0x00000020) != 0)) {
          to_bitField1_ |= 0x00000008;
        }
        result.conllUMisc_ = conllUMisc_;
        if (((from_bitField1_ & 0x00000040) != 0)) {
          if (conllUSecondaryDepsBuilder_ == null) {
            result.conllUSecondaryDeps_ = conllUSecondaryDeps_;
          } else {
            result.conllUSecondaryDeps_ = conllUSecondaryDepsBuilder_.build();
          }
          to_bitField1_ |= 0x00000010;
        }
        if (((from_bitField1_ & 0x00000080) != 0)) {
          to_bitField1_ |= 0x00000020;
        }
        result.wikipediaEntity_ = wikipediaEntity_;
        if (((from_bitField1_ & 0x00000100) != 0)) {
          result.isNewline_ = isNewline_;
          to_bitField1_ |= 0x00000040;
        }
        if (((from_bitField1_ & 0x00000200) != 0)) {
          to_bitField1_ |= 0x00000080;
        }
        result.gender_ = gender_;
        if (((from_bitField1_ & 0x00000400) != 0)) {
          to_bitField1_ |= 0x00000100;
        }
        result.trueCase_ = trueCase_;
        if (((from_bitField1_ & 0x00000800) != 0)) {
          to_bitField1_ |= 0x00000200;
        }
        result.trueCaseText_ = trueCaseText_;
        if (((from_bitField1_ & 0x00001000) != 0)) {
          to_bitField1_ |= 0x00000400;
        }
        result.chineseChar_ = chineseChar_;
        if (((from_bitField1_ & 0x00002000) != 0)) {
          to_bitField1_ |= 0x00000800;
        }
        result.chineseSeg_ = chineseSeg_;
        if (((from_bitField1_ & 0x00004000) != 0)) {
          to_bitField1_ |= 0x00001000;
        }
        result.chineseXMLChar_ = chineseXMLChar_;
        if (((from_bitField1_ & 0x00008000) != 0)) {
          to_bitField1_ |= 0x00002000;
        }
        result.arabicSeg_ = arabicSeg_;
        if (((from_bitField1_ & 0x00010000) != 0)) {
          to_bitField1_ |= 0x00004000;
        }
        result.sectionName_ = sectionName_;
        if (((from_bitField1_ & 0x00020000) != 0)) {
          to_bitField1_ |= 0x00008000;
        }
        result.sectionAuthor_ = sectionAuthor_;
        if (((from_bitField1_ & 0x00040000) != 0)) {
          to_bitField1_ |= 0x00010000;
        }
        result.sectionDate_ = sectionDate_;
        if (((from_bitField1_ & 0x00080000) != 0)) {
          to_bitField1_ |= 0x00020000;
        }
        result.sectionEndLabel_ = sectionEndLabel_;
        if (((from_bitField1_ & 0x00100000) != 0)) {
          to_bitField1_ |= 0x00040000;
        }
        result.parent_ = parent_;
        if (((bitField1_ & 0x00200000) != 0)) {
          corefMentionIndex_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00200000);
        }
        result.corefMentionIndex_ = corefMentionIndex_;
        if (((from_bitField1_ & 0x00400000) != 0)) {
          result.entityMentionIndex_ = entityMentionIndex_;
          to_bitField1_ |= 0x00080000;
        }
        if (((from_bitField1_ & 0x00800000) != 0)) {
          result.isMWT_ = isMWT_;
          to_bitField1_ |= 0x00100000;
        }
        if (((from_bitField1_ & 0x01000000) != 0)) {
          result.isFirstMWT_ = isFirstMWT_;
          to_bitField1_ |= 0x00200000;
        }
        if (((from_bitField1_ & 0x02000000) != 0)) {
          to_bitField1_ |= 0x00400000;
        }
        result.mwtText_ = mwtText_;
        if (((from_bitField1_ & 0x04000000) != 0)) {
          result.numericValue_ = numericValue_;
          to_bitField1_ |= 0x00800000;
        }
        if (((from_bitField1_ & 0x08000000) != 0)) {
          to_bitField1_ |= 0x01000000;
        }
        result.numericType_ = numericType_;
        if (((from_bitField1_ & 0x10000000) != 0)) {
          result.numericCompositeValue_ = numericCompositeValue_;
          to_bitField1_ |= 0x02000000;
        }
        if (((from_bitField1_ & 0x20000000) != 0)) {
          to_bitField1_ |= 0x04000000;
        }
        result.numericCompositeType_ = numericCompositeType_;
        if (((from_bitField1_ & 0x40000000) != 0)) {
          result.codepointOffsetBegin_ = codepointOffsetBegin_;
          to_bitField1_ |= 0x08000000;
        }
        if (((from_bitField1_ & 0x80000000) != 0)) {
          result.codepointOffsetEnd_ = codepointOffsetEnd_;
          to_bitField1_ |= 0x10000000;
        }
        result.bitField0_ = to_bitField0_;
        result.bitField1_ = to_bitField1_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public <Type> Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, Type> extension,
          Type value) {
        return super.setExtension(extension, value);
      }
      @java.lang.Override
      public <Type> Builder setExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, java.util.List<Type>> extension,
          int index, Type value) {
        return super.setExtension(extension, index, value);
      }
      @java.lang.Override
      public <Type> Builder addExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, java.util.List<Type>> extension,
          Type value) {
        return super.addExtension(extension, value);
      }
      @java.lang.Override
      public <Type> Builder clearExtension(
          com.google.protobuf.GeneratedMessage.GeneratedExtension<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, ?> extension) {
        return super.clearExtension(extension);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Token) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Token)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Token other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance()) return this;
        if (other.hasWord()) {
          bitField0_ |= 0x00000001;
          word_ = other.word_;
          onChanged();
        }
        if (other.hasPos()) {
          bitField0_ |= 0x00000002;
          pos_ = other.pos_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000004;
          value_ = other.value_;
          onChanged();
        }
        if (other.hasCategory()) {
          bitField0_ |= 0x00000008;
          category_ = other.category_;
          onChanged();
        }
        if (other.hasBefore()) {
          bitField0_ |= 0x00000010;
          before_ = other.before_;
          onChanged();
        }
        if (other.hasAfter()) {
          bitField0_ |= 0x00000020;
          after_ = other.after_;
          onChanged();
        }
        if (other.hasOriginalText()) {
          bitField0_ |= 0x00000040;
          originalText_ = other.originalText_;
          onChanged();
        }
        if (other.hasNer()) {
          bitField0_ |= 0x00000080;
          ner_ = other.ner_;
          onChanged();
        }
        if (other.hasCoarseNER()) {
          bitField0_ |= 0x00000100;
          coarseNER_ = other.coarseNER_;
          onChanged();
        }
        if (other.hasFineGrainedNER()) {
          bitField0_ |= 0x00000200;
          fineGrainedNER_ = other.fineGrainedNER_;
          onChanged();
        }
        if (!other.nerLabelProbs_.isEmpty()) {
          if (nerLabelProbs_.isEmpty()) {
            nerLabelProbs_ = other.nerLabelProbs_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureNerLabelProbsIsMutable();
            nerLabelProbs_.addAll(other.nerLabelProbs_);
          }
          onChanged();
        }
        if (other.hasNormalizedNER()) {
          bitField0_ |= 0x00000800;
          normalizedNER_ = other.normalizedNER_;
          onChanged();
        }
        if (other.hasLemma()) {
          bitField0_ |= 0x00001000;
          lemma_ = other.lemma_;
          onChanged();
        }
        if (other.hasBeginChar()) {
          setBeginChar(other.getBeginChar());
        }
        if (other.hasEndChar()) {
          setEndChar(other.getEndChar());
        }
        if (other.hasUtterance()) {
          setUtterance(other.getUtterance());
        }
        if (other.hasSpeaker()) {
          bitField0_ |= 0x00010000;
          speaker_ = other.speaker_;
          onChanged();
        }
        if (other.hasSpeakerType()) {
          bitField0_ |= 0x00020000;
          speakerType_ = other.speakerType_;
          onChanged();
        }
        if (other.hasBeginIndex()) {
          setBeginIndex(other.getBeginIndex());
        }
        if (other.hasEndIndex()) {
          setEndIndex(other.getEndIndex());
        }
        if (other.hasTokenBeginIndex()) {
          setTokenBeginIndex(other.getTokenBeginIndex());
        }
        if (other.hasTokenEndIndex()) {
          setTokenEndIndex(other.getTokenEndIndex());
        }
        if (other.hasTimexValue()) {
          mergeTimexValue(other.getTimexValue());
        }
        if (other.hasHasXmlContext()) {
          setHasXmlContext(other.getHasXmlContext());
        }
        if (!other.xmlContext_.isEmpty()) {
          if (xmlContext_.isEmpty()) {
            xmlContext_ = other.xmlContext_;
            bitField0_ = (bitField0_ & ~0x01000000);
          } else {
            ensureXmlContextIsMutable();
            xmlContext_.addAll(other.xmlContext_);
          }
          onChanged();
        }
        if (other.hasCorefClusterID()) {
          setCorefClusterID(other.getCorefClusterID());
        }
        if (other.hasAnswer()) {
          bitField0_ |= 0x04000000;
          answer_ = other.answer_;
          onChanged();
        }
        if (other.hasHeadWordIndex()) {
          setHeadWordIndex(other.getHeadWordIndex());
        }
        if (other.hasOperator()) {
          mergeOperator(other.getOperator());
        }
        if (other.hasPolarity()) {
          mergePolarity(other.getPolarity());
        }
        if (other.hasPolarityDir()) {
          bitField0_ |= 0x40000000;
          polarityDir_ = other.polarityDir_;
          onChanged();
        }
        if (other.hasSpan()) {
          mergeSpan(other.getSpan());
        }
        if (other.hasSentiment()) {
          bitField1_ |= 0x00000001;
          sentiment_ = other.sentiment_;
          onChanged();
        }
        if (other.hasQuotationIndex()) {
          setQuotationIndex(other.getQuotationIndex());
        }
        if (other.hasConllUFeatures()) {
          mergeConllUFeatures(other.getConllUFeatures());
        }
        if (other.hasCoarseTag()) {
          bitField1_ |= 0x00000008;
          coarseTag_ = other.coarseTag_;
          onChanged();
        }
        if (other.hasConllUTokenSpan()) {
          mergeConllUTokenSpan(other.getConllUTokenSpan());
        }
        if (other.hasConllUMisc()) {
          bitField1_ |= 0x00000020;
          conllUMisc_ = other.conllUMisc_;
          onChanged();
        }
        if (other.hasConllUSecondaryDeps()) {
          mergeConllUSecondaryDeps(other.getConllUSecondaryDeps());
        }
        if (other.hasWikipediaEntity()) {
          bitField1_ |= 0x00000080;
          wikipediaEntity_ = other.wikipediaEntity_;
          onChanged();
        }
        if (other.hasIsNewline()) {
          setIsNewline(other.getIsNewline());
        }
        if (other.hasGender()) {
          bitField1_ |= 0x00000200;
          gender_ = other.gender_;
          onChanged();
        }
        if (other.hasTrueCase()) {
          bitField1_ |= 0x00000400;
          trueCase_ = other.trueCase_;
          onChanged();
        }
        if (other.hasTrueCaseText()) {
          bitField1_ |= 0x00000800;
          trueCaseText_ = other.trueCaseText_;
          onChanged();
        }
        if (other.hasChineseChar()) {
          bitField1_ |= 0x00001000;
          chineseChar_ = other.chineseChar_;
          onChanged();
        }
        if (other.hasChineseSeg()) {
          bitField1_ |= 0x00002000;
          chineseSeg_ = other.chineseSeg_;
          onChanged();
        }
        if (other.hasChineseXMLChar()) {
          bitField1_ |= 0x00004000;
          chineseXMLChar_ = other.chineseXMLChar_;
          onChanged();
        }
        if (other.hasArabicSeg()) {
          bitField1_ |= 0x00008000;
          arabicSeg_ = other.arabicSeg_;
          onChanged();
        }
        if (other.hasSectionName()) {
          bitField1_ |= 0x00010000;
          sectionName_ = other.sectionName_;
          onChanged();
        }
        if (other.hasSectionAuthor()) {
          bitField1_ |= 0x00020000;
          sectionAuthor_ = other.sectionAuthor_;
          onChanged();
        }
        if (other.hasSectionDate()) {
          bitField1_ |= 0x00040000;
          sectionDate_ = other.sectionDate_;
          onChanged();
        }
        if (other.hasSectionEndLabel()) {
          bitField1_ |= 0x00080000;
          sectionEndLabel_ = other.sectionEndLabel_;
          onChanged();
        }
        if (other.hasParent()) {
          bitField1_ |= 0x00100000;
          parent_ = other.parent_;
          onChanged();
        }
        if (!other.corefMentionIndex_.isEmpty()) {
          if (corefMentionIndex_.isEmpty()) {
            corefMentionIndex_ = other.corefMentionIndex_;
            bitField1_ = (bitField1_ & ~0x00200000);
          } else {
            ensureCorefMentionIndexIsMutable();
            corefMentionIndex_.addAll(other.corefMentionIndex_);
          }
          onChanged();
        }
        if (other.hasEntityMentionIndex()) {
          setEntityMentionIndex(other.getEntityMentionIndex());
        }
        if (other.hasIsMWT()) {
          setIsMWT(other.getIsMWT());
        }
        if (other.hasIsFirstMWT()) {
          setIsFirstMWT(other.getIsFirstMWT());
        }
        if (other.hasMwtText()) {
          bitField1_ |= 0x02000000;
          mwtText_ = other.mwtText_;
          onChanged();
        }
        if (other.hasNumericValue()) {
          setNumericValue(other.getNumericValue());
        }
        if (other.hasNumericType()) {
          bitField1_ |= 0x08000000;
          numericType_ = other.numericType_;
          onChanged();
        }
        if (other.hasNumericCompositeValue()) {
          setNumericCompositeValue(other.getNumericCompositeValue());
        }
        if (other.hasNumericCompositeType()) {
          bitField1_ |= 0x20000000;
          numericCompositeType_ = other.numericCompositeType_;
          onChanged();
        }
        if (other.hasCodepointOffsetBegin()) {
          setCodepointOffsetBegin(other.getCodepointOffsetBegin());
        }
        if (other.hasCodepointOffsetEnd()) {
          setCodepointOffsetEnd(other.getCodepointOffsetEnd());
        }
        this.mergeExtensionFields(other);
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasOperator()) {
          if (!getOperator().isInitialized()) {
            return false;
          }
        }
        if (hasPolarity()) {
          if (!getPolarity().isInitialized()) {
            return false;
          }
        }
        if (hasSpan()) {
          if (!getSpan().isInitialized()) {
            return false;
          }
        }
        if (hasConllUTokenSpan()) {
          if (!getConllUTokenSpan().isInitialized()) {
            return false;
          }
        }
        if (!extensionsAreInitialized()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                word_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                pos_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                value_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                category_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                before_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                after_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                originalText_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                ner_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                normalizedNER_ = input.readBytes();
                bitField0_ |= 0x00000800;
                break;
              } // case 74
              case 82: {
                lemma_ = input.readBytes();
                bitField0_ |= 0x00001000;
                break;
              } // case 82
              case 88: {
                beginChar_ = input.readUInt32();
                bitField0_ |= 0x00002000;
                break;
              } // case 88
              case 96: {
                endChar_ = input.readUInt32();
                bitField0_ |= 0x00004000;
                break;
              } // case 96
              case 104: {
                utterance_ = input.readUInt32();
                bitField0_ |= 0x00008000;
                break;
              } // case 104
              case 114: {
                speaker_ = input.readBytes();
                bitField0_ |= 0x00010000;
                break;
              } // case 114
              case 120: {
                beginIndex_ = input.readUInt32();
                bitField0_ |= 0x00040000;
                break;
              } // case 120
              case 128: {
                endIndex_ = input.readUInt32();
                bitField0_ |= 0x00080000;
                break;
              } // case 128
              case 136: {
                tokenBeginIndex_ = input.readUInt32();
                bitField0_ |= 0x00100000;
                break;
              } // case 136
              case 144: {
                tokenEndIndex_ = input.readUInt32();
                bitField0_ |= 0x00200000;
                break;
              } // case 144
              case 154: {
                input.readMessage(
                    getTimexValueFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00400000;
                break;
              } // case 154
              case 168: {
                hasXmlContext_ = input.readBool();
                bitField0_ |= 0x00800000;
                break;
              } // case 168
              case 178: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureXmlContextIsMutable();
                xmlContext_.add(bs);
                break;
              } // case 178
              case 184: {
                corefClusterID_ = input.readUInt32();
                bitField0_ |= 0x02000000;
                break;
              } // case 184
              case 194: {
                answer_ = input.readBytes();
                bitField0_ |= 0x04000000;
                break;
              } // case 194
              case 208: {
                headWordIndex_ = input.readUInt32();
                bitField0_ |= 0x08000000;
                break;
              } // case 208
              case 218: {
                input.readMessage(
                    getOperatorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x10000000;
                break;
              } // case 218
              case 226: {
                input.readMessage(
                    getPolarityFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x20000000;
                break;
              } // case 226
              case 234: {
                input.readMessage(
                    getSpanFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x80000000;
                break;
              } // case 234
              case 242: {
                sentiment_ = input.readBytes();
                bitField1_ |= 0x00000001;
                break;
              } // case 242
              case 248: {
                quotationIndex_ = input.readInt32();
                bitField1_ |= 0x00000002;
                break;
              } // case 248
              case 258: {
                input.readMessage(
                    getConllUFeaturesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField1_ |= 0x00000004;
                break;
              } // case 258
              case 266: {
                coarseTag_ = input.readBytes();
                bitField1_ |= 0x00000008;
                break;
              } // case 266
              case 274: {
                input.readMessage(
                    getConllUTokenSpanFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField1_ |= 0x00000010;
                break;
              } // case 274
              case 282: {
                conllUMisc_ = input.readBytes();
                bitField1_ |= 0x00000020;
                break;
              } // case 282
              case 290: {
                input.readMessage(
                    getConllUSecondaryDepsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField1_ |= 0x00000040;
                break;
              } // case 290
              case 298: {
                wikipediaEntity_ = input.readBytes();
                bitField1_ |= 0x00000080;
                break;
              } // case 298
              case 304: {
                isNewline_ = input.readBool();
                bitField1_ |= 0x00000100;
                break;
              } // case 304
              case 314: {
                polarityDir_ = input.readBytes();
                bitField0_ |= 0x40000000;
                break;
              } // case 314
              case 410: {
                gender_ = input.readBytes();
                bitField1_ |= 0x00000200;
                break;
              } // case 410
              case 418: {
                trueCase_ = input.readBytes();
                bitField1_ |= 0x00000400;
                break;
              } // case 418
              case 426: {
                trueCaseText_ = input.readBytes();
                bitField1_ |= 0x00000800;
                break;
              } // case 426
              case 434: {
                chineseChar_ = input.readBytes();
                bitField1_ |= 0x00001000;
                break;
              } // case 434
              case 442: {
                chineseSeg_ = input.readBytes();
                bitField1_ |= 0x00002000;
                break;
              } // case 442
              case 450: {
                sectionName_ = input.readBytes();
                bitField1_ |= 0x00010000;
                break;
              } // case 450
              case 458: {
                sectionAuthor_ = input.readBytes();
                bitField1_ |= 0x00020000;
                break;
              } // case 458
              case 466: {
                sectionDate_ = input.readBytes();
                bitField1_ |= 0x00040000;
                break;
              } // case 466
              case 474: {
                sectionEndLabel_ = input.readBytes();
                bitField1_ |= 0x00080000;
                break;
              } // case 474
              case 482: {
                chineseXMLChar_ = input.readBytes();
                bitField1_ |= 0x00004000;
                break;
              } // case 482
              case 490: {
                parent_ = input.readBytes();
                bitField1_ |= 0x00100000;
                break;
              } // case 490
              case 498: {
                coarseNER_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 498
              case 506: {
                fineGrainedNER_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 506
              case 512: {
                int v = input.readUInt32();
                ensureCorefMentionIndexIsMutable();
                corefMentionIndex_.addInt(v);
                break;
              } // case 512
              case 514: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureCorefMentionIndexIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  corefMentionIndex_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 514
              case 520: {
                entityMentionIndex_ = input.readUInt32();
                bitField1_ |= 0x00400000;
                break;
              } // case 520
              case 530: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureNerLabelProbsIsMutable();
                nerLabelProbs_.add(bs);
                break;
              } // case 530
              case 536: {
                isMWT_ = input.readBool();
                bitField1_ |= 0x00800000;
                break;
              } // case 536
              case 544: {
                isFirstMWT_ = input.readBool();
                bitField1_ |= 0x01000000;
                break;
              } // case 544
              case 554: {
                mwtText_ = input.readBytes();
                bitField1_ |= 0x02000000;
                break;
              } // case 554
              case 560: {
                numericValue_ = input.readUInt64();
                bitField1_ |= 0x04000000;
                break;
              } // case 560
              case 570: {
                numericType_ = input.readBytes();
                bitField1_ |= 0x08000000;
                break;
              } // case 570
              case 576: {
                numericCompositeValue_ = input.readUInt64();
                bitField1_ |= 0x10000000;
                break;
              } // case 576
              case 586: {
                numericCompositeType_ = input.readBytes();
                bitField1_ |= 0x20000000;
                break;
              } // case 586
              case 592: {
                codepointOffsetBegin_ = input.readUInt32();
                bitField1_ |= 0x40000000;
                break;
              } // case 592
              case 600: {
                codepointOffsetEnd_ = input.readUInt32();
                bitField1_ |= 0x80000000;
                break;
              } // case 600
              case 610: {
                arabicSeg_ = input.readBytes();
                bitField1_ |= 0x00008000;
                break;
              } // case 610
              case 618: {
                speakerType_ = input.readBytes();
                bitField0_ |= 0x00020000;
                break;
              } // case 618
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private int bitField1_;

      private java.lang.Object word_ = "";
      /**
       * <pre>
       * Fields set by the default annotators [new CoreNLP(new Properties())]
       * </pre>
       *
       * <code>optional string word = 1;</code>
       * @return Whether the word field is set.
       */
      public boolean hasWord() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Fields set by the default annotators [new CoreNLP(new Properties())]
       * </pre>
       *
       * <code>optional string word = 1;</code>
       * @return The word.
       */
      public java.lang.String getWord() {
        java.lang.Object ref = word_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            word_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Fields set by the default annotators [new CoreNLP(new Properties())]
       * </pre>
       *
       * <code>optional string word = 1;</code>
       * @return The bytes for word.
       */
      public com.google.protobuf.ByteString
          getWordBytes() {
        java.lang.Object ref = word_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          word_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Fields set by the default annotators [new CoreNLP(new Properties())]
       * </pre>
       *
       * <code>optional string word = 1;</code>
       * @param value The word to set.
       * @return This builder for chaining.
       */
      public Builder setWord(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        word_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Fields set by the default annotators [new CoreNLP(new Properties())]
       * </pre>
       *
       * <code>optional string word = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearWord() {
        bitField0_ = (bitField0_ & ~0x00000001);
        word_ = getDefaultInstance().getWord();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Fields set by the default annotators [new CoreNLP(new Properties())]
       * </pre>
       *
       * <code>optional string word = 1;</code>
       * @param value The bytes for word to set.
       * @return This builder for chaining.
       */
      public Builder setWordBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        word_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object pos_ = "";
      /**
       * <pre>
       * The word's part of speech tag
       * </pre>
       *
       * <code>optional string pos = 2;</code>
       * @return Whether the pos field is set.
       */
      public boolean hasPos() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The word's part of speech tag
       * </pre>
       *
       * <code>optional string pos = 2;</code>
       * @return The pos.
       */
      public java.lang.String getPos() {
        java.lang.Object ref = pos_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            pos_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The word's part of speech tag
       * </pre>
       *
       * <code>optional string pos = 2;</code>
       * @return The bytes for pos.
       */
      public com.google.protobuf.ByteString
          getPosBytes() {
        java.lang.Object ref = pos_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pos_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The word's part of speech tag
       * </pre>
       *
       * <code>optional string pos = 2;</code>
       * @param value The pos to set.
       * @return This builder for chaining.
       */
      public Builder setPos(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        pos_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's part of speech tag
       * </pre>
       *
       * <code>optional string pos = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPos() {
        bitField0_ = (bitField0_ & ~0x00000002);
        pos_ = getDefaultInstance().getPos();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's part of speech tag
       * </pre>
       *
       * <code>optional string pos = 2;</code>
       * @param value The bytes for pos to set.
       * @return This builder for chaining.
       */
      public Builder setPosBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        pos_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <pre>
       * The word's 'value', (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The word's 'value', (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The word's 'value', (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The word's 'value', (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's 'value', (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000004);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's 'value', (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string value = 3;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object category_ = "";
      /**
       * <pre>
       * The word's 'category' (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string category = 4;</code>
       * @return Whether the category field is set.
       */
      public boolean hasCategory() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The word's 'category' (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string category = 4;</code>
       * @return The category.
       */
      public java.lang.String getCategory() {
        java.lang.Object ref = category_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            category_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The word's 'category' (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string category = 4;</code>
       * @return The bytes for category.
       */
      public com.google.protobuf.ByteString
          getCategoryBytes() {
        java.lang.Object ref = category_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          category_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The word's 'category' (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string category = 4;</code>
       * @param value The category to set.
       * @return This builder for chaining.
       */
      public Builder setCategory(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        category_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's 'category' (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string category = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCategory() {
        bitField0_ = (bitField0_ & ~0x00000008);
        category_ = getDefaultInstance().getCategory();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's 'category' (e.g., parse tree node)
       * </pre>
       *
       * <code>optional string category = 4;</code>
       * @param value The bytes for category to set.
       * @return This builder for chaining.
       */
      public Builder setCategoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        category_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object before_ = "";
      /**
       * <pre>
       * The whitespace/xml before the token
       * </pre>
       *
       * <code>optional string before = 5;</code>
       * @return Whether the before field is set.
       */
      public boolean hasBefore() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * The whitespace/xml before the token
       * </pre>
       *
       * <code>optional string before = 5;</code>
       * @return The before.
       */
      public java.lang.String getBefore() {
        java.lang.Object ref = before_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            before_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The whitespace/xml before the token
       * </pre>
       *
       * <code>optional string before = 5;</code>
       * @return The bytes for before.
       */
      public com.google.protobuf.ByteString
          getBeforeBytes() {
        java.lang.Object ref = before_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          before_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The whitespace/xml before the token
       * </pre>
       *
       * <code>optional string before = 5;</code>
       * @param value The before to set.
       * @return This builder for chaining.
       */
      public Builder setBefore(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        before_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The whitespace/xml before the token
       * </pre>
       *
       * <code>optional string before = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearBefore() {
        bitField0_ = (bitField0_ & ~0x00000010);
        before_ = getDefaultInstance().getBefore();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The whitespace/xml before the token
       * </pre>
       *
       * <code>optional string before = 5;</code>
       * @param value The bytes for before to set.
       * @return This builder for chaining.
       */
      public Builder setBeforeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        before_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object after_ = "";
      /**
       * <pre>
       * The whitespace/xml after the token
       * </pre>
       *
       * <code>optional string after = 6;</code>
       * @return Whether the after field is set.
       */
      public boolean hasAfter() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * The whitespace/xml after the token
       * </pre>
       *
       * <code>optional string after = 6;</code>
       * @return The after.
       */
      public java.lang.String getAfter() {
        java.lang.Object ref = after_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            after_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The whitespace/xml after the token
       * </pre>
       *
       * <code>optional string after = 6;</code>
       * @return The bytes for after.
       */
      public com.google.protobuf.ByteString
          getAfterBytes() {
        java.lang.Object ref = after_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          after_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The whitespace/xml after the token
       * </pre>
       *
       * <code>optional string after = 6;</code>
       * @param value The after to set.
       * @return This builder for chaining.
       */
      public Builder setAfter(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        after_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The whitespace/xml after the token
       * </pre>
       *
       * <code>optional string after = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearAfter() {
        bitField0_ = (bitField0_ & ~0x00000020);
        after_ = getDefaultInstance().getAfter();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The whitespace/xml after the token
       * </pre>
       *
       * <code>optional string after = 6;</code>
       * @param value The bytes for after to set.
       * @return This builder for chaining.
       */
      public Builder setAfterBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        after_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object originalText_ = "";
      /**
       * <pre>
       * The original text for this token
       * </pre>
       *
       * <code>optional string originalText = 7;</code>
       * @return Whether the originalText field is set.
       */
      public boolean hasOriginalText() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * The original text for this token
       * </pre>
       *
       * <code>optional string originalText = 7;</code>
       * @return The originalText.
       */
      public java.lang.String getOriginalText() {
        java.lang.Object ref = originalText_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            originalText_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The original text for this token
       * </pre>
       *
       * <code>optional string originalText = 7;</code>
       * @return The bytes for originalText.
       */
      public com.google.protobuf.ByteString
          getOriginalTextBytes() {
        java.lang.Object ref = originalText_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          originalText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The original text for this token
       * </pre>
       *
       * <code>optional string originalText = 7;</code>
       * @param value The originalText to set.
       * @return This builder for chaining.
       */
      public Builder setOriginalText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        originalText_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The original text for this token
       * </pre>
       *
       * <code>optional string originalText = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearOriginalText() {
        bitField0_ = (bitField0_ & ~0x00000040);
        originalText_ = getDefaultInstance().getOriginalText();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The original text for this token
       * </pre>
       *
       * <code>optional string originalText = 7;</code>
       * @param value The bytes for originalText to set.
       * @return This builder for chaining.
       */
      public Builder setOriginalTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        originalText_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object ner_ = "";
      /**
       * <pre>
       * The word's NER tag
       * </pre>
       *
       * <code>optional string ner = 8;</code>
       * @return Whether the ner field is set.
       */
      public boolean hasNer() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * The word's NER tag
       * </pre>
       *
       * <code>optional string ner = 8;</code>
       * @return The ner.
       */
      public java.lang.String getNer() {
        java.lang.Object ref = ner_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            ner_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The word's NER tag
       * </pre>
       *
       * <code>optional string ner = 8;</code>
       * @return The bytes for ner.
       */
      public com.google.protobuf.ByteString
          getNerBytes() {
        java.lang.Object ref = ner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The word's NER tag
       * </pre>
       *
       * <code>optional string ner = 8;</code>
       * @param value The ner to set.
       * @return This builder for chaining.
       */
      public Builder setNer(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        ner_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's NER tag
       * </pre>
       *
       * <code>optional string ner = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearNer() {
        bitField0_ = (bitField0_ & ~0x00000080);
        ner_ = getDefaultInstance().getNer();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's NER tag
       * </pre>
       *
       * <code>optional string ner = 8;</code>
       * @param value The bytes for ner to set.
       * @return This builder for chaining.
       */
      public Builder setNerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        ner_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object coarseNER_ = "";
      /**
       * <pre>
       * The word's coarse NER tag
       * </pre>
       *
       * <code>optional string coarseNER = 62;</code>
       * @return Whether the coarseNER field is set.
       */
      public boolean hasCoarseNER() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * The word's coarse NER tag
       * </pre>
       *
       * <code>optional string coarseNER = 62;</code>
       * @return The coarseNER.
       */
      public java.lang.String getCoarseNER() {
        java.lang.Object ref = coarseNER_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            coarseNER_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The word's coarse NER tag
       * </pre>
       *
       * <code>optional string coarseNER = 62;</code>
       * @return The bytes for coarseNER.
       */
      public com.google.protobuf.ByteString
          getCoarseNERBytes() {
        java.lang.Object ref = coarseNER_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          coarseNER_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The word's coarse NER tag
       * </pre>
       *
       * <code>optional string coarseNER = 62;</code>
       * @param value The coarseNER to set.
       * @return This builder for chaining.
       */
      public Builder setCoarseNER(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        coarseNER_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's coarse NER tag
       * </pre>
       *
       * <code>optional string coarseNER = 62;</code>
       * @return This builder for chaining.
       */
      public Builder clearCoarseNER() {
        bitField0_ = (bitField0_ & ~0x00000100);
        coarseNER_ = getDefaultInstance().getCoarseNER();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's coarse NER tag
       * </pre>
       *
       * <code>optional string coarseNER = 62;</code>
       * @param value The bytes for coarseNER to set.
       * @return This builder for chaining.
       */
      public Builder setCoarseNERBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        coarseNER_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object fineGrainedNER_ = "";
      /**
       * <pre>
       * The word's fine-grained NER tag
       * </pre>
       *
       * <code>optional string fineGrainedNER = 63;</code>
       * @return Whether the fineGrainedNER field is set.
       */
      public boolean hasFineGrainedNER() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * The word's fine-grained NER tag
       * </pre>
       *
       * <code>optional string fineGrainedNER = 63;</code>
       * @return The fineGrainedNER.
       */
      public java.lang.String getFineGrainedNER() {
        java.lang.Object ref = fineGrainedNER_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            fineGrainedNER_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The word's fine-grained NER tag
       * </pre>
       *
       * <code>optional string fineGrainedNER = 63;</code>
       * @return The bytes for fineGrainedNER.
       */
      public com.google.protobuf.ByteString
          getFineGrainedNERBytes() {
        java.lang.Object ref = fineGrainedNER_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fineGrainedNER_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The word's fine-grained NER tag
       * </pre>
       *
       * <code>optional string fineGrainedNER = 63;</code>
       * @param value The fineGrainedNER to set.
       * @return This builder for chaining.
       */
      public Builder setFineGrainedNER(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        fineGrainedNER_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's fine-grained NER tag
       * </pre>
       *
       * <code>optional string fineGrainedNER = 63;</code>
       * @return This builder for chaining.
       */
      public Builder clearFineGrainedNER() {
        bitField0_ = (bitField0_ & ~0x00000200);
        fineGrainedNER_ = getDefaultInstance().getFineGrainedNER();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's fine-grained NER tag
       * </pre>
       *
       * <code>optional string fineGrainedNER = 63;</code>
       * @param value The bytes for fineGrainedNER to set.
       * @return This builder for chaining.
       */
      public Builder setFineGrainedNERBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        fineGrainedNER_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList nerLabelProbs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureNerLabelProbsIsMutable() {
        if (!((bitField0_ & 0x00000400) != 0)) {
          nerLabelProbs_ = new com.google.protobuf.LazyStringArrayList(nerLabelProbs_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @return A list containing the nerLabelProbs.
       */
      public com.google.protobuf.ProtocolStringList
          getNerLabelProbsList() {
        return nerLabelProbs_.getUnmodifiableView();
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @return The count of nerLabelProbs.
       */
      public int getNerLabelProbsCount() {
        return nerLabelProbs_.size();
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @param index The index of the element to return.
       * @return The nerLabelProbs at the given index.
       */
      public java.lang.String getNerLabelProbs(int index) {
        return nerLabelProbs_.get(index);
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @param index The index of the value to return.
       * @return The bytes of the nerLabelProbs at the given index.
       */
      public com.google.protobuf.ByteString
          getNerLabelProbsBytes(int index) {
        return nerLabelProbs_.getByteString(index);
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @param index The index to set the value at.
       * @param value The nerLabelProbs to set.
       * @return This builder for chaining.
       */
      public Builder setNerLabelProbs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNerLabelProbsIsMutable();
        nerLabelProbs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @param value The nerLabelProbs to add.
       * @return This builder for chaining.
       */
      public Builder addNerLabelProbs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNerLabelProbsIsMutable();
        nerLabelProbs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @param values The nerLabelProbs to add.
       * @return This builder for chaining.
       */
      public Builder addAllNerLabelProbs(
          java.lang.Iterable<java.lang.String> values) {
        ensureNerLabelProbsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, nerLabelProbs_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @return This builder for chaining.
       */
      public Builder clearNerLabelProbs() {
        nerLabelProbs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * listing of probs
       * </pre>
       *
       * <code>repeated string nerLabelProbs = 66;</code>
       * @param value The bytes of the nerLabelProbs to add.
       * @return This builder for chaining.
       */
      public Builder addNerLabelProbsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNerLabelProbsIsMutable();
        nerLabelProbs_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object normalizedNER_ = "";
      /**
       * <pre>
       * The word's normalized NER tag
       * </pre>
       *
       * <code>optional string normalizedNER = 9;</code>
       * @return Whether the normalizedNER field is set.
       */
      public boolean hasNormalizedNER() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * The word's normalized NER tag
       * </pre>
       *
       * <code>optional string normalizedNER = 9;</code>
       * @return The normalizedNER.
       */
      public java.lang.String getNormalizedNER() {
        java.lang.Object ref = normalizedNER_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            normalizedNER_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The word's normalized NER tag
       * </pre>
       *
       * <code>optional string normalizedNER = 9;</code>
       * @return The bytes for normalizedNER.
       */
      public com.google.protobuf.ByteString
          getNormalizedNERBytes() {
        java.lang.Object ref = normalizedNER_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          normalizedNER_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The word's normalized NER tag
       * </pre>
       *
       * <code>optional string normalizedNER = 9;</code>
       * @param value The normalizedNER to set.
       * @return This builder for chaining.
       */
      public Builder setNormalizedNER(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        normalizedNER_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's normalized NER tag
       * </pre>
       *
       * <code>optional string normalizedNER = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearNormalizedNER() {
        bitField0_ = (bitField0_ & ~0x00000800);
        normalizedNER_ = getDefaultInstance().getNormalizedNER();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's normalized NER tag
       * </pre>
       *
       * <code>optional string normalizedNER = 9;</code>
       * @param value The bytes for normalizedNER to set.
       * @return This builder for chaining.
       */
      public Builder setNormalizedNERBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        normalizedNER_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object lemma_ = "";
      /**
       * <pre>
       * The word's lemma
       * </pre>
       *
       * <code>optional string lemma = 10;</code>
       * @return Whether the lemma field is set.
       */
      public boolean hasLemma() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * The word's lemma
       * </pre>
       *
       * <code>optional string lemma = 10;</code>
       * @return The lemma.
       */
      public java.lang.String getLemma() {
        java.lang.Object ref = lemma_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            lemma_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The word's lemma
       * </pre>
       *
       * <code>optional string lemma = 10;</code>
       * @return The bytes for lemma.
       */
      public com.google.protobuf.ByteString
          getLemmaBytes() {
        java.lang.Object ref = lemma_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lemma_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The word's lemma
       * </pre>
       *
       * <code>optional string lemma = 10;</code>
       * @param value The lemma to set.
       * @return This builder for chaining.
       */
      public Builder setLemma(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00001000;
        lemma_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's lemma
       * </pre>
       *
       * <code>optional string lemma = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearLemma() {
        bitField0_ = (bitField0_ & ~0x00001000);
        lemma_ = getDefaultInstance().getLemma();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The word's lemma
       * </pre>
       *
       * <code>optional string lemma = 10;</code>
       * @param value The bytes for lemma to set.
       * @return This builder for chaining.
       */
      public Builder setLemmaBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00001000;
        lemma_ = value;
        onChanged();
        return this;
      }

      private int beginChar_ ;
      /**
       * <pre>
       * The character offset begin, in the document
       * </pre>
       *
       * <code>optional uint32 beginChar = 11;</code>
       * @return Whether the beginChar field is set.
       */
      @java.lang.Override
      public boolean hasBeginChar() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * The character offset begin, in the document
       * </pre>
       *
       * <code>optional uint32 beginChar = 11;</code>
       * @return The beginChar.
       */
      @java.lang.Override
      public int getBeginChar() {
        return beginChar_;
      }
      /**
       * <pre>
       * The character offset begin, in the document
       * </pre>
       *
       * <code>optional uint32 beginChar = 11;</code>
       * @param value The beginChar to set.
       * @return This builder for chaining.
       */
      public Builder setBeginChar(int value) {
        bitField0_ |= 0x00002000;
        beginChar_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The character offset begin, in the document
       * </pre>
       *
       * <code>optional uint32 beginChar = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearBeginChar() {
        bitField0_ = (bitField0_ & ~0x00002000);
        beginChar_ = 0;
        onChanged();
        return this;
      }

      private int endChar_ ;
      /**
       * <pre>
       * The character offset end, in the document
       * </pre>
       *
       * <code>optional uint32 endChar = 12;</code>
       * @return Whether the endChar field is set.
       */
      @java.lang.Override
      public boolean hasEndChar() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * The character offset end, in the document
       * </pre>
       *
       * <code>optional uint32 endChar = 12;</code>
       * @return The endChar.
       */
      @java.lang.Override
      public int getEndChar() {
        return endChar_;
      }
      /**
       * <pre>
       * The character offset end, in the document
       * </pre>
       *
       * <code>optional uint32 endChar = 12;</code>
       * @param value The endChar to set.
       * @return This builder for chaining.
       */
      public Builder setEndChar(int value) {
        bitField0_ |= 0x00004000;
        endChar_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The character offset end, in the document
       * </pre>
       *
       * <code>optional uint32 endChar = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndChar() {
        bitField0_ = (bitField0_ & ~0x00004000);
        endChar_ = 0;
        onChanged();
        return this;
      }

      private int utterance_ ;
      /**
       * <pre>
       * The utterance tag used in dcoref
       * </pre>
       *
       * <code>optional uint32 utterance = 13;</code>
       * @return Whether the utterance field is set.
       */
      @java.lang.Override
      public boolean hasUtterance() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       * The utterance tag used in dcoref
       * </pre>
       *
       * <code>optional uint32 utterance = 13;</code>
       * @return The utterance.
       */
      @java.lang.Override
      public int getUtterance() {
        return utterance_;
      }
      /**
       * <pre>
       * The utterance tag used in dcoref
       * </pre>
       *
       * <code>optional uint32 utterance = 13;</code>
       * @param value The utterance to set.
       * @return This builder for chaining.
       */
      public Builder setUtterance(int value) {
        bitField0_ |= 0x00008000;
        utterance_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The utterance tag used in dcoref
       * </pre>
       *
       * <code>optional uint32 utterance = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearUtterance() {
        bitField0_ = (bitField0_ & ~0x00008000);
        utterance_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object speaker_ = "";
      /**
       * <pre>
       * The speaker speaking this word
       * </pre>
       *
       * <code>optional string speaker = 14;</code>
       * @return Whether the speaker field is set.
       */
      public boolean hasSpeaker() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <pre>
       * The speaker speaking this word
       * </pre>
       *
       * <code>optional string speaker = 14;</code>
       * @return The speaker.
       */
      public java.lang.String getSpeaker() {
        java.lang.Object ref = speaker_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            speaker_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The speaker speaking this word
       * </pre>
       *
       * <code>optional string speaker = 14;</code>
       * @return The bytes for speaker.
       */
      public com.google.protobuf.ByteString
          getSpeakerBytes() {
        java.lang.Object ref = speaker_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          speaker_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The speaker speaking this word
       * </pre>
       *
       * <code>optional string speaker = 14;</code>
       * @param value The speaker to set.
       * @return This builder for chaining.
       */
      public Builder setSpeaker(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00010000;
        speaker_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The speaker speaking this word
       * </pre>
       *
       * <code>optional string speaker = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpeaker() {
        bitField0_ = (bitField0_ & ~0x00010000);
        speaker_ = getDefaultInstance().getSpeaker();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The speaker speaking this word
       * </pre>
       *
       * <code>optional string speaker = 14;</code>
       * @param value The bytes for speaker to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00010000;
        speaker_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object speakerType_ = "";
      /**
       * <pre>
       * The type of speaker speaking this word
       * </pre>
       *
       * <code>optional string speakerType = 77;</code>
       * @return Whether the speakerType field is set.
       */
      public boolean hasSpeakerType() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <pre>
       * The type of speaker speaking this word
       * </pre>
       *
       * <code>optional string speakerType = 77;</code>
       * @return The speakerType.
       */
      public java.lang.String getSpeakerType() {
        java.lang.Object ref = speakerType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            speakerType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The type of speaker speaking this word
       * </pre>
       *
       * <code>optional string speakerType = 77;</code>
       * @return The bytes for speakerType.
       */
      public com.google.protobuf.ByteString
          getSpeakerTypeBytes() {
        java.lang.Object ref = speakerType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          speakerType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The type of speaker speaking this word
       * </pre>
       *
       * <code>optional string speakerType = 77;</code>
       * @param value The speakerType to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00020000;
        speakerType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of speaker speaking this word
       * </pre>
       *
       * <code>optional string speakerType = 77;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpeakerType() {
        bitField0_ = (bitField0_ & ~0x00020000);
        speakerType_ = getDefaultInstance().getSpeakerType();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of speaker speaking this word
       * </pre>
       *
       * <code>optional string speakerType = 77;</code>
       * @param value The bytes for speakerType to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00020000;
        speakerType_ = value;
        onChanged();
        return this;
      }

      private int beginIndex_ ;
      /**
       * <pre>
       * The begin index of, e.g., a span
       * </pre>
       *
       * <code>optional uint32 beginIndex = 15;</code>
       * @return Whether the beginIndex field is set.
       */
      @java.lang.Override
      public boolean hasBeginIndex() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <pre>
       * The begin index of, e.g., a span
       * </pre>
       *
       * <code>optional uint32 beginIndex = 15;</code>
       * @return The beginIndex.
       */
      @java.lang.Override
      public int getBeginIndex() {
        return beginIndex_;
      }
      /**
       * <pre>
       * The begin index of, e.g., a span
       * </pre>
       *
       * <code>optional uint32 beginIndex = 15;</code>
       * @param value The beginIndex to set.
       * @return This builder for chaining.
       */
      public Builder setBeginIndex(int value) {
        bitField0_ |= 0x00040000;
        beginIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The begin index of, e.g., a span
       * </pre>
       *
       * <code>optional uint32 beginIndex = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearBeginIndex() {
        bitField0_ = (bitField0_ & ~0x00040000);
        beginIndex_ = 0;
        onChanged();
        return this;
      }

      private int endIndex_ ;
      /**
       * <pre>
       * The begin index of, e.g., a span
       * </pre>
       *
       * <code>optional uint32 endIndex = 16;</code>
       * @return Whether the endIndex field is set.
       */
      @java.lang.Override
      public boolean hasEndIndex() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <pre>
       * The begin index of, e.g., a span
       * </pre>
       *
       * <code>optional uint32 endIndex = 16;</code>
       * @return The endIndex.
       */
      @java.lang.Override
      public int getEndIndex() {
        return endIndex_;
      }
      /**
       * <pre>
       * The begin index of, e.g., a span
       * </pre>
       *
       * <code>optional uint32 endIndex = 16;</code>
       * @param value The endIndex to set.
       * @return This builder for chaining.
       */
      public Builder setEndIndex(int value) {
        bitField0_ |= 0x00080000;
        endIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The begin index of, e.g., a span
       * </pre>
       *
       * <code>optional uint32 endIndex = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndIndex() {
        bitField0_ = (bitField0_ & ~0x00080000);
        endIndex_ = 0;
        onChanged();
        return this;
      }

      private int tokenBeginIndex_ ;
      /**
       * <pre>
       * The begin index of the token
       * </pre>
       *
       * <code>optional uint32 tokenBeginIndex = 17;</code>
       * @return Whether the tokenBeginIndex field is set.
       */
      @java.lang.Override
      public boolean hasTokenBeginIndex() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <pre>
       * The begin index of the token
       * </pre>
       *
       * <code>optional uint32 tokenBeginIndex = 17;</code>
       * @return The tokenBeginIndex.
       */
      @java.lang.Override
      public int getTokenBeginIndex() {
        return tokenBeginIndex_;
      }
      /**
       * <pre>
       * The begin index of the token
       * </pre>
       *
       * <code>optional uint32 tokenBeginIndex = 17;</code>
       * @param value The tokenBeginIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTokenBeginIndex(int value) {
        bitField0_ |= 0x00100000;
        tokenBeginIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The begin index of the token
       * </pre>
       *
       * <code>optional uint32 tokenBeginIndex = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenBeginIndex() {
        bitField0_ = (bitField0_ & ~0x00100000);
        tokenBeginIndex_ = 0;
        onChanged();
        return this;
      }

      private int tokenEndIndex_ ;
      /**
       * <pre>
       * The end index of the token
       * </pre>
       *
       * <code>optional uint32 tokenEndIndex = 18;</code>
       * @return Whether the tokenEndIndex field is set.
       */
      @java.lang.Override
      public boolean hasTokenEndIndex() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <pre>
       * The end index of the token
       * </pre>
       *
       * <code>optional uint32 tokenEndIndex = 18;</code>
       * @return The tokenEndIndex.
       */
      @java.lang.Override
      public int getTokenEndIndex() {
        return tokenEndIndex_;
      }
      /**
       * <pre>
       * The end index of the token
       * </pre>
       *
       * <code>optional uint32 tokenEndIndex = 18;</code>
       * @param value The tokenEndIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTokenEndIndex(int value) {
        bitField0_ |= 0x00200000;
        tokenEndIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The end index of the token
       * </pre>
       *
       * <code>optional uint32 tokenEndIndex = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenEndIndex() {
        bitField0_ = (bitField0_ & ~0x00200000);
        tokenEndIndex_ = 0;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Timex timexValue_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Timex, edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder> timexValueBuilder_;
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       * @return Whether the timexValue field is set.
       */
      public boolean hasTimexValue() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       * @return The timexValue.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getTimexValue() {
        if (timexValueBuilder_ == null) {
          return timexValue_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance() : timexValue_;
        } else {
          return timexValueBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       */
      public Builder setTimexValue(edu.stanford.nlp.pipeline.CoreNLPProtos.Timex value) {
        if (timexValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timexValue_ = value;
          onChanged();
        } else {
          timexValueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00400000;
        return this;
      }
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       */
      public Builder setTimexValue(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder builderForValue) {
        if (timexValueBuilder_ == null) {
          timexValue_ = builderForValue.build();
          onChanged();
        } else {
          timexValueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00400000;
        return this;
      }
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       */
      public Builder mergeTimexValue(edu.stanford.nlp.pipeline.CoreNLPProtos.Timex value) {
        if (timexValueBuilder_ == null) {
          if (((bitField0_ & 0x00400000) != 0) &&
              timexValue_ != null &&
              timexValue_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance()) {
            timexValue_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.newBuilder(timexValue_).mergeFrom(value).buildPartial();
          } else {
            timexValue_ = value;
          }
          onChanged();
        } else {
          timexValueBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00400000;
        return this;
      }
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       */
      public Builder clearTimexValue() {
        if (timexValueBuilder_ == null) {
          timexValue_ = null;
          onChanged();
        } else {
          timexValueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00400000);
        return this;
      }
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder getTimexValueBuilder() {
        bitField0_ |= 0x00400000;
        onChanged();
        return getTimexValueFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder getTimexValueOrBuilder() {
        if (timexValueBuilder_ != null) {
          return timexValueBuilder_.getMessageOrBuilder();
        } else {
          return timexValue_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance() : timexValue_;
        }
      }
      /**
       * <pre>
       * The time this word refers to
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Timex timexValue = 19;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Timex, edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder> 
          getTimexValueFieldBuilder() {
        if (timexValueBuilder_ == null) {
          timexValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Timex, edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder>(
                  getTimexValue(),
                  getParentForChildren(),
                  isClean());
          timexValue_ = null;
        }
        return timexValueBuilder_;
      }

      private boolean hasXmlContext_ ;
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>optional bool hasXmlContext = 21;</code>
       * @return Whether the hasXmlContext field is set.
       */
      @java.lang.Override
      public boolean hasHasXmlContext() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>optional bool hasXmlContext = 21;</code>
       * @return The hasXmlContext.
       */
      @java.lang.Override
      public boolean getHasXmlContext() {
        return hasXmlContext_;
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>optional bool hasXmlContext = 21;</code>
       * @param value The hasXmlContext to set.
       * @return This builder for chaining.
       */
      public Builder setHasXmlContext(boolean value) {
        bitField0_ |= 0x00800000;
        hasXmlContext_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>optional bool hasXmlContext = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasXmlContext() {
        bitField0_ = (bitField0_ & ~0x00800000);
        hasXmlContext_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList xmlContext_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureXmlContextIsMutable() {
        if (!((bitField0_ & 0x01000000) != 0)) {
          xmlContext_ = new com.google.protobuf.LazyStringArrayList(xmlContext_);
          bitField0_ |= 0x01000000;
         }
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @return A list containing the xmlContext.
       */
      public com.google.protobuf.ProtocolStringList
          getXmlContextList() {
        return xmlContext_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @return The count of xmlContext.
       */
      public int getXmlContextCount() {
        return xmlContext_.size();
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @param index The index of the element to return.
       * @return The xmlContext at the given index.
       */
      public java.lang.String getXmlContext(int index) {
        return xmlContext_.get(index);
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @param index The index of the value to return.
       * @return The bytes of the xmlContext at the given index.
       */
      public com.google.protobuf.ByteString
          getXmlContextBytes(int index) {
        return xmlContext_.getByteString(index);
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @param index The index to set the value at.
       * @param value The xmlContext to set.
       * @return This builder for chaining.
       */
      public Builder setXmlContext(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureXmlContextIsMutable();
        xmlContext_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @param value The xmlContext to add.
       * @return This builder for chaining.
       */
      public Builder addXmlContext(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureXmlContextIsMutable();
        xmlContext_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @param values The xmlContext to add.
       * @return This builder for chaining.
       */
      public Builder addAllXmlContext(
          java.lang.Iterable<java.lang.String> values) {
        ensureXmlContextIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, xmlContext_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @return This builder for chaining.
       */
      public Builder clearXmlContext() {
        xmlContext_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x01000000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Used by clean xml annotator
       * </pre>
       *
       * <code>repeated string xmlContext = 22;</code>
       * @param value The bytes of the xmlContext to add.
       * @return This builder for chaining.
       */
      public Builder addXmlContextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureXmlContextIsMutable();
        xmlContext_.add(value);
        onChanged();
        return this;
      }

      private int corefClusterID_ ;
      /**
       * <pre>
       * The [primary] cluster id for this token
       * </pre>
       *
       * <code>optional uint32 corefClusterID = 23;</code>
       * @return Whether the corefClusterID field is set.
       */
      @java.lang.Override
      public boolean hasCorefClusterID() {
        return ((bitField0_ & 0x02000000) != 0);
      }
      /**
       * <pre>
       * The [primary] cluster id for this token
       * </pre>
       *
       * <code>optional uint32 corefClusterID = 23;</code>
       * @return The corefClusterID.
       */
      @java.lang.Override
      public int getCorefClusterID() {
        return corefClusterID_;
      }
      /**
       * <pre>
       * The [primary] cluster id for this token
       * </pre>
       *
       * <code>optional uint32 corefClusterID = 23;</code>
       * @param value The corefClusterID to set.
       * @return This builder for chaining.
       */
      public Builder setCorefClusterID(int value) {
        bitField0_ |= 0x02000000;
        corefClusterID_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The [primary] cluster id for this token
       * </pre>
       *
       * <code>optional uint32 corefClusterID = 23;</code>
       * @return This builder for chaining.
       */
      public Builder clearCorefClusterID() {
        bitField0_ = (bitField0_ & ~0x02000000);
        corefClusterID_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object answer_ = "";
      /**
       * <pre>
       * A temporary annotation which is occasionally left in
       * </pre>
       *
       * <code>optional string answer = 24;</code>
       * @return Whether the answer field is set.
       */
      public boolean hasAnswer() {
        return ((bitField0_ & 0x04000000) != 0);
      }
      /**
       * <pre>
       * A temporary annotation which is occasionally left in
       * </pre>
       *
       * <code>optional string answer = 24;</code>
       * @return The answer.
       */
      public java.lang.String getAnswer() {
        java.lang.Object ref = answer_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            answer_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * A temporary annotation which is occasionally left in
       * </pre>
       *
       * <code>optional string answer = 24;</code>
       * @return The bytes for answer.
       */
      public com.google.protobuf.ByteString
          getAnswerBytes() {
        java.lang.Object ref = answer_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          answer_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * A temporary annotation which is occasionally left in
       * </pre>
       *
       * <code>optional string answer = 24;</code>
       * @param value The answer to set.
       * @return This builder for chaining.
       */
      public Builder setAnswer(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x04000000;
        answer_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A temporary annotation which is occasionally left in
       * </pre>
       *
       * <code>optional string answer = 24;</code>
       * @return This builder for chaining.
       */
      public Builder clearAnswer() {
        bitField0_ = (bitField0_ & ~0x04000000);
        answer_ = getDefaultInstance().getAnswer();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A temporary annotation which is occasionally left in
       * </pre>
       *
       * <code>optional string answer = 24;</code>
       * @param value The bytes for answer to set.
       * @return This builder for chaining.
       */
      public Builder setAnswerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x04000000;
        answer_ = value;
        onChanged();
        return this;
      }

      private int headWordIndex_ ;
      /**
       * <pre>
       *  optional string projectedCategory = 25;   // The syntactic category of the maximal constituent headed by the word. Not used anywhere, so deleted.
       * </pre>
       *
       * <code>optional uint32 headWordIndex = 26;</code>
       * @return Whether the headWordIndex field is set.
       */
      @java.lang.Override
      public boolean hasHeadWordIndex() {
        return ((bitField0_ & 0x08000000) != 0);
      }
      /**
       * <pre>
       *  optional string projectedCategory = 25;   // The syntactic category of the maximal constituent headed by the word. Not used anywhere, so deleted.
       * </pre>
       *
       * <code>optional uint32 headWordIndex = 26;</code>
       * @return The headWordIndex.
       */
      @java.lang.Override
      public int getHeadWordIndex() {
        return headWordIndex_;
      }
      /**
       * <pre>
       *  optional string projectedCategory = 25;   // The syntactic category of the maximal constituent headed by the word. Not used anywhere, so deleted.
       * </pre>
       *
       * <code>optional uint32 headWordIndex = 26;</code>
       * @param value The headWordIndex to set.
       * @return This builder for chaining.
       */
      public Builder setHeadWordIndex(int value) {
        bitField0_ |= 0x08000000;
        headWordIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *  optional string projectedCategory = 25;   // The syntactic category of the maximal constituent headed by the word. Not used anywhere, so deleted.
       * </pre>
       *
       * <code>optional uint32 headWordIndex = 26;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeadWordIndex() {
        bitField0_ = (bitField0_ & ~0x08000000);
        headWordIndex_ = 0;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Operator operator_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Operator, edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.OperatorOrBuilder> operatorBuilder_;
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       * @return Whether the operator field is set.
       */
      public boolean hasOperator() {
        return ((bitField0_ & 0x10000000) != 0);
      }
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       * @return The operator.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Operator getOperator() {
        if (operatorBuilder_ == null) {
          return operator_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.getDefaultInstance() : operator_;
        } else {
          return operatorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       */
      public Builder setOperator(edu.stanford.nlp.pipeline.CoreNLPProtos.Operator value) {
        if (operatorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          operator_ = value;
          onChanged();
        } else {
          operatorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x10000000;
        return this;
      }
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       */
      public Builder setOperator(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.Builder builderForValue) {
        if (operatorBuilder_ == null) {
          operator_ = builderForValue.build();
          onChanged();
        } else {
          operatorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x10000000;
        return this;
      }
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       */
      public Builder mergeOperator(edu.stanford.nlp.pipeline.CoreNLPProtos.Operator value) {
        if (operatorBuilder_ == null) {
          if (((bitField0_ & 0x10000000) != 0) &&
              operator_ != null &&
              operator_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.getDefaultInstance()) {
            operator_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.newBuilder(operator_).mergeFrom(value).buildPartial();
          } else {
            operator_ = value;
          }
          onChanged();
        } else {
          operatorBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x10000000;
        return this;
      }
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       */
      public Builder clearOperator() {
        if (operatorBuilder_ == null) {
          operator_ = null;
          onChanged();
        } else {
          operatorBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x10000000);
        return this;
      }
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.Builder getOperatorBuilder() {
        bitField0_ |= 0x10000000;
        onChanged();
        return getOperatorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.OperatorOrBuilder getOperatorOrBuilder() {
        if (operatorBuilder_ != null) {
          return operatorBuilder_.getMessageOrBuilder();
        } else {
          return operator_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.getDefaultInstance() : operator_;
        }
      }
      /**
       * <pre>
       * If this is an operator, which one is it and what is its scope (as per Natural Logic)?
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Operator operator = 27;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Operator, edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.OperatorOrBuilder> 
          getOperatorFieldBuilder() {
        if (operatorBuilder_ == null) {
          operatorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Operator, edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.OperatorOrBuilder>(
                  getOperator(),
                  getParentForChildren(),
                  isClean());
          operator_ = null;
        }
        return operatorBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity polarity_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity, edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.PolarityOrBuilder> polarityBuilder_;
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       * @return Whether the polarity field is set.
       */
      public boolean hasPolarity() {
        return ((bitField0_ & 0x20000000) != 0);
      }
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       * @return The polarity.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity getPolarity() {
        if (polarityBuilder_ == null) {
          return polarity_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.getDefaultInstance() : polarity_;
        } else {
          return polarityBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       */
      public Builder setPolarity(edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity value) {
        if (polarityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          polarity_ = value;
          onChanged();
        } else {
          polarityBuilder_.setMessage(value);
        }
        bitField0_ |= 0x20000000;
        return this;
      }
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       */
      public Builder setPolarity(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.Builder builderForValue) {
        if (polarityBuilder_ == null) {
          polarity_ = builderForValue.build();
          onChanged();
        } else {
          polarityBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x20000000;
        return this;
      }
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       */
      public Builder mergePolarity(edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity value) {
        if (polarityBuilder_ == null) {
          if (((bitField0_ & 0x20000000) != 0) &&
              polarity_ != null &&
              polarity_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.getDefaultInstance()) {
            polarity_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.newBuilder(polarity_).mergeFrom(value).buildPartial();
          } else {
            polarity_ = value;
          }
          onChanged();
        } else {
          polarityBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x20000000;
        return this;
      }
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       */
      public Builder clearPolarity() {
        if (polarityBuilder_ == null) {
          polarity_ = null;
          onChanged();
        } else {
          polarityBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x20000000);
        return this;
      }
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.Builder getPolarityBuilder() {
        bitField0_ |= 0x20000000;
        onChanged();
        return getPolarityFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.PolarityOrBuilder getPolarityOrBuilder() {
        if (polarityBuilder_ != null) {
          return polarityBuilder_.getMessageOrBuilder();
        } else {
          return polarity_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.getDefaultInstance() : polarity_;
        }
      }
      /**
       * <pre>
       * The polarity of this word, according to Natural Logic
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Polarity polarity = 28;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity, edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.PolarityOrBuilder> 
          getPolarityFieldBuilder() {
        if (polarityBuilder_ == null) {
          polarityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity, edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.PolarityOrBuilder>(
                  getPolarity(),
                  getParentForChildren(),
                  isClean());
          polarity_ = null;
        }
        return polarityBuilder_;
      }

      private java.lang.Object polarityDir_ = "";
      /**
       * <pre>
       * The polarity of this word, either "up", "down", or "flat"
       * </pre>
       *
       * <code>optional string polarity_dir = 39;</code>
       * @return Whether the polarityDir field is set.
       */
      public boolean hasPolarityDir() {
        return ((bitField0_ & 0x40000000) != 0);
      }
      /**
       * <pre>
       * The polarity of this word, either "up", "down", or "flat"
       * </pre>
       *
       * <code>optional string polarity_dir = 39;</code>
       * @return The polarityDir.
       */
      public java.lang.String getPolarityDir() {
        java.lang.Object ref = polarityDir_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            polarityDir_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The polarity of this word, either "up", "down", or "flat"
       * </pre>
       *
       * <code>optional string polarity_dir = 39;</code>
       * @return The bytes for polarityDir.
       */
      public com.google.protobuf.ByteString
          getPolarityDirBytes() {
        java.lang.Object ref = polarityDir_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          polarityDir_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The polarity of this word, either "up", "down", or "flat"
       * </pre>
       *
       * <code>optional string polarity_dir = 39;</code>
       * @param value The polarityDir to set.
       * @return This builder for chaining.
       */
      public Builder setPolarityDir(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x40000000;
        polarityDir_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The polarity of this word, either "up", "down", or "flat"
       * </pre>
       *
       * <code>optional string polarity_dir = 39;</code>
       * @return This builder for chaining.
       */
      public Builder clearPolarityDir() {
        bitField0_ = (bitField0_ & ~0x40000000);
        polarityDir_ = getDefaultInstance().getPolarityDir();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The polarity of this word, either "up", "down", or "flat"
       * </pre>
       *
       * <code>optional string polarity_dir = 39;</code>
       * @param value The bytes for polarityDir to set.
       * @return This builder for chaining.
       */
      public Builder setPolarityDirBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x40000000;
        polarityDir_ = value;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Span span_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Span, edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder> spanBuilder_;
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       * @return Whether the span field is set.
       */
      public boolean hasSpan() {
        return ((bitField0_ & 0x80000000) != 0);
      }
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       * @return The span.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Span getSpan() {
        if (spanBuilder_ == null) {
          return span_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance() : span_;
        } else {
          return spanBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       */
      public Builder setSpan(edu.stanford.nlp.pipeline.CoreNLPProtos.Span value) {
        if (spanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          span_ = value;
          onChanged();
        } else {
          spanBuilder_.setMessage(value);
        }
        bitField0_ |= 0x80000000;
        return this;
      }
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       */
      public Builder setSpan(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder builderForValue) {
        if (spanBuilder_ == null) {
          span_ = builderForValue.build();
          onChanged();
        } else {
          spanBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x80000000;
        return this;
      }
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       */
      public Builder mergeSpan(edu.stanford.nlp.pipeline.CoreNLPProtos.Span value) {
        if (spanBuilder_ == null) {
          if (((bitField0_ & 0x80000000) != 0) &&
              span_ != null &&
              span_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance()) {
            span_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Span.newBuilder(span_).mergeFrom(value).buildPartial();
          } else {
            span_ = value;
          }
          onChanged();
        } else {
          spanBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x80000000;
        return this;
      }
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       */
      public Builder clearSpan() {
        if (spanBuilder_ == null) {
          span_ = null;
          onChanged();
        } else {
          spanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x80000000);
        return this;
      }
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder getSpanBuilder() {
        bitField0_ |= 0x80000000;
        onChanged();
        return getSpanFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder getSpanOrBuilder() {
        if (spanBuilder_ != null) {
          return spanBuilder_.getMessageOrBuilder();
        } else {
          return span_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance() : span_;
        }
      }
      /**
       * <pre>
       * The span of a leaf node of a tree
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.Span span = 29;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Span, edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder> 
          getSpanFieldBuilder() {
        if (spanBuilder_ == null) {
          spanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Span, edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder>(
                  getSpan(),
                  getParentForChildren(),
                  isClean());
          span_ = null;
        }
        return spanBuilder_;
      }

      private java.lang.Object sentiment_ = "";
      /**
       * <pre>
       * The final sentiment of the sentence
       * </pre>
       *
       * <code>optional string sentiment = 30;</code>
       * @return Whether the sentiment field is set.
       */
      public boolean hasSentiment() {
        return ((bitField1_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The final sentiment of the sentence
       * </pre>
       *
       * <code>optional string sentiment = 30;</code>
       * @return The sentiment.
       */
      public java.lang.String getSentiment() {
        java.lang.Object ref = sentiment_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sentiment_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The final sentiment of the sentence
       * </pre>
       *
       * <code>optional string sentiment = 30;</code>
       * @return The bytes for sentiment.
       */
      public com.google.protobuf.ByteString
          getSentimentBytes() {
        java.lang.Object ref = sentiment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sentiment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The final sentiment of the sentence
       * </pre>
       *
       * <code>optional string sentiment = 30;</code>
       * @param value The sentiment to set.
       * @return This builder for chaining.
       */
      public Builder setSentiment(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000001;
        sentiment_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The final sentiment of the sentence
       * </pre>
       *
       * <code>optional string sentiment = 30;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentiment() {
        bitField1_ = (bitField1_ & ~0x00000001);
        sentiment_ = getDefaultInstance().getSentiment();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The final sentiment of the sentence
       * </pre>
       *
       * <code>optional string sentiment = 30;</code>
       * @param value The bytes for sentiment to set.
       * @return This builder for chaining.
       */
      public Builder setSentimentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000001;
        sentiment_ = value;
        onChanged();
        return this;
      }

      private int quotationIndex_ ;
      /**
       * <pre>
       * The index of the quotation this token refers to
       * </pre>
       *
       * <code>optional int32 quotationIndex = 31;</code>
       * @return Whether the quotationIndex field is set.
       */
      @java.lang.Override
      public boolean hasQuotationIndex() {
        return ((bitField1_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The index of the quotation this token refers to
       * </pre>
       *
       * <code>optional int32 quotationIndex = 31;</code>
       * @return The quotationIndex.
       */
      @java.lang.Override
      public int getQuotationIndex() {
        return quotationIndex_;
      }
      /**
       * <pre>
       * The index of the quotation this token refers to
       * </pre>
       *
       * <code>optional int32 quotationIndex = 31;</code>
       * @param value The quotationIndex to set.
       * @return This builder for chaining.
       */
      public Builder setQuotationIndex(int value) {
        bitField1_ |= 0x00000002;
        quotationIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The index of the quotation this token refers to
       * </pre>
       *
       * <code>optional int32 quotationIndex = 31;</code>
       * @return This builder for chaining.
       */
      public Builder clearQuotationIndex() {
        bitField1_ = (bitField1_ & ~0x00000002);
        quotationIndex_ = 0;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString conllUFeatures_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder> conllUFeaturesBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       * @return Whether the conllUFeatures field is set.
       */
      public boolean hasConllUFeatures() {
        return ((bitField1_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       * @return The conllUFeatures.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getConllUFeatures() {
        if (conllUFeaturesBuilder_ == null) {
          return conllUFeatures_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance() : conllUFeatures_;
        } else {
          return conllUFeaturesBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       */
      public Builder setConllUFeatures(edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString value) {
        if (conllUFeaturesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          conllUFeatures_ = value;
          onChanged();
        } else {
          conllUFeaturesBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       */
      public Builder setConllUFeatures(
          edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder builderForValue) {
        if (conllUFeaturesBuilder_ == null) {
          conllUFeatures_ = builderForValue.build();
          onChanged();
        } else {
          conllUFeaturesBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       */
      public Builder mergeConllUFeatures(edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString value) {
        if (conllUFeaturesBuilder_ == null) {
          if (((bitField1_ & 0x00000004) != 0) &&
              conllUFeatures_ != null &&
              conllUFeatures_ != edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance()) {
            conllUFeatures_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.newBuilder(conllUFeatures_).mergeFrom(value).buildPartial();
          } else {
            conllUFeatures_ = value;
          }
          onChanged();
        } else {
          conllUFeaturesBuilder_.mergeFrom(value);
        }
        bitField1_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       */
      public Builder clearConllUFeatures() {
        if (conllUFeaturesBuilder_ == null) {
          conllUFeatures_ = null;
          onChanged();
        } else {
          conllUFeaturesBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder getConllUFeaturesBuilder() {
        bitField1_ |= 0x00000004;
        onChanged();
        return getConllUFeaturesFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder getConllUFeaturesOrBuilder() {
        if (conllUFeaturesBuilder_ != null) {
          return conllUFeaturesBuilder_.getMessageOrBuilder();
        } else {
          return conllUFeatures_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance() : conllUFeatures_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUFeatures = 32;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder> 
          getConllUFeaturesFieldBuilder() {
        if (conllUFeaturesBuilder_ == null) {
          conllUFeaturesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder>(
                  getConllUFeatures(),
                  getParentForChildren(),
                  isClean());
          conllUFeatures_ = null;
        }
        return conllUFeaturesBuilder_;
      }

      private java.lang.Object coarseTag_ = "";
      /**
       * <pre>
       *  The coarse POS tag (used to store the UPOS tag)
       * </pre>
       *
       * <code>optional string coarseTag = 33;</code>
       * @return Whether the coarseTag field is set.
       */
      public boolean hasCoarseTag() {
        return ((bitField1_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       *  The coarse POS tag (used to store the UPOS tag)
       * </pre>
       *
       * <code>optional string coarseTag = 33;</code>
       * @return The coarseTag.
       */
      public java.lang.String getCoarseTag() {
        java.lang.Object ref = coarseTag_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            coarseTag_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *  The coarse POS tag (used to store the UPOS tag)
       * </pre>
       *
       * <code>optional string coarseTag = 33;</code>
       * @return The bytes for coarseTag.
       */
      public com.google.protobuf.ByteString
          getCoarseTagBytes() {
        java.lang.Object ref = coarseTag_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          coarseTag_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *  The coarse POS tag (used to store the UPOS tag)
       * </pre>
       *
       * <code>optional string coarseTag = 33;</code>
       * @param value The coarseTag to set.
       * @return This builder for chaining.
       */
      public Builder setCoarseTag(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000008;
        coarseTag_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *  The coarse POS tag (used to store the UPOS tag)
       * </pre>
       *
       * <code>optional string coarseTag = 33;</code>
       * @return This builder for chaining.
       */
      public Builder clearCoarseTag() {
        bitField1_ = (bitField1_ & ~0x00000008);
        coarseTag_ = getDefaultInstance().getCoarseTag();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *  The coarse POS tag (used to store the UPOS tag)
       * </pre>
       *
       * <code>optional string coarseTag = 33;</code>
       * @param value The bytes for coarseTag to set.
       * @return This builder for chaining.
       */
      public Builder setCoarseTagBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000008;
        coarseTag_ = value;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Span conllUTokenSpan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Span, edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder> conllUTokenSpanBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       * @return Whether the conllUTokenSpan field is set.
       */
      public boolean hasConllUTokenSpan() {
        return ((bitField1_ & 0x00000010) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       * @return The conllUTokenSpan.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Span getConllUTokenSpan() {
        if (conllUTokenSpanBuilder_ == null) {
          return conllUTokenSpan_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance() : conllUTokenSpan_;
        } else {
          return conllUTokenSpanBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       */
      public Builder setConllUTokenSpan(edu.stanford.nlp.pipeline.CoreNLPProtos.Span value) {
        if (conllUTokenSpanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          conllUTokenSpan_ = value;
          onChanged();
        } else {
          conllUTokenSpanBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       */
      public Builder setConllUTokenSpan(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder builderForValue) {
        if (conllUTokenSpanBuilder_ == null) {
          conllUTokenSpan_ = builderForValue.build();
          onChanged();
        } else {
          conllUTokenSpanBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       */
      public Builder mergeConllUTokenSpan(edu.stanford.nlp.pipeline.CoreNLPProtos.Span value) {
        if (conllUTokenSpanBuilder_ == null) {
          if (((bitField1_ & 0x00000010) != 0) &&
              conllUTokenSpan_ != null &&
              conllUTokenSpan_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance()) {
            conllUTokenSpan_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Span.newBuilder(conllUTokenSpan_).mergeFrom(value).buildPartial();
          } else {
            conllUTokenSpan_ = value;
          }
          onChanged();
        } else {
          conllUTokenSpanBuilder_.mergeFrom(value);
        }
        bitField1_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       */
      public Builder clearConllUTokenSpan() {
        if (conllUTokenSpanBuilder_ == null) {
          conllUTokenSpan_ = null;
          onChanged();
        } else {
          conllUTokenSpanBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000010);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder getConllUTokenSpanBuilder() {
        bitField1_ |= 0x00000010;
        onChanged();
        return getConllUTokenSpanFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder getConllUTokenSpanOrBuilder() {
        if (conllUTokenSpanBuilder_ != null) {
          return conllUTokenSpanBuilder_.getMessageOrBuilder();
        } else {
          return conllUTokenSpan_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance() : conllUTokenSpan_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Span conllUTokenSpan = 34;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Span, edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder> 
          getConllUTokenSpanFieldBuilder() {
        if (conllUTokenSpanBuilder_ == null) {
          conllUTokenSpanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Span, edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder>(
                  getConllUTokenSpan(),
                  getParentForChildren(),
                  isClean());
          conllUTokenSpan_ = null;
        }
        return conllUTokenSpanBuilder_;
      }

      private java.lang.Object conllUMisc_ = "";
      /**
       * <code>optional string conllUMisc = 35;</code>
       * @return Whether the conllUMisc field is set.
       */
      public boolean hasConllUMisc() {
        return ((bitField1_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string conllUMisc = 35;</code>
       * @return The conllUMisc.
       */
      public java.lang.String getConllUMisc() {
        java.lang.Object ref = conllUMisc_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            conllUMisc_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string conllUMisc = 35;</code>
       * @return The bytes for conllUMisc.
       */
      public com.google.protobuf.ByteString
          getConllUMiscBytes() {
        java.lang.Object ref = conllUMisc_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          conllUMisc_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string conllUMisc = 35;</code>
       * @param value The conllUMisc to set.
       * @return This builder for chaining.
       */
      public Builder setConllUMisc(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000020;
        conllUMisc_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string conllUMisc = 35;</code>
       * @return This builder for chaining.
       */
      public Builder clearConllUMisc() {
        bitField1_ = (bitField1_ & ~0x00000020);
        conllUMisc_ = getDefaultInstance().getConllUMisc();
        onChanged();
        return this;
      }
      /**
       * <code>optional string conllUMisc = 35;</code>
       * @param value The bytes for conllUMisc to set.
       * @return This builder for chaining.
       */
      public Builder setConllUMiscBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000020;
        conllUMisc_ = value;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString conllUSecondaryDeps_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder> conllUSecondaryDepsBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       * @return Whether the conllUSecondaryDeps field is set.
       */
      public boolean hasConllUSecondaryDeps() {
        return ((bitField1_ & 0x00000040) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       * @return The conllUSecondaryDeps.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getConllUSecondaryDeps() {
        if (conllUSecondaryDepsBuilder_ == null) {
          return conllUSecondaryDeps_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance() : conllUSecondaryDeps_;
        } else {
          return conllUSecondaryDepsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       */
      public Builder setConllUSecondaryDeps(edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString value) {
        if (conllUSecondaryDepsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          conllUSecondaryDeps_ = value;
          onChanged();
        } else {
          conllUSecondaryDepsBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       */
      public Builder setConllUSecondaryDeps(
          edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder builderForValue) {
        if (conllUSecondaryDepsBuilder_ == null) {
          conllUSecondaryDeps_ = builderForValue.build();
          onChanged();
        } else {
          conllUSecondaryDepsBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       */
      public Builder mergeConllUSecondaryDeps(edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString value) {
        if (conllUSecondaryDepsBuilder_ == null) {
          if (((bitField1_ & 0x00000040) != 0) &&
              conllUSecondaryDeps_ != null &&
              conllUSecondaryDeps_ != edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance()) {
            conllUSecondaryDeps_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.newBuilder(conllUSecondaryDeps_).mergeFrom(value).buildPartial();
          } else {
            conllUSecondaryDeps_ = value;
          }
          onChanged();
        } else {
          conllUSecondaryDepsBuilder_.mergeFrom(value);
        }
        bitField1_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       */
      public Builder clearConllUSecondaryDeps() {
        if (conllUSecondaryDepsBuilder_ == null) {
          conllUSecondaryDeps_ = null;
          onChanged();
        } else {
          conllUSecondaryDepsBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000040);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder getConllUSecondaryDepsBuilder() {
        bitField1_ |= 0x00000040;
        onChanged();
        return getConllUSecondaryDepsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder getConllUSecondaryDepsOrBuilder() {
        if (conllUSecondaryDepsBuilder_ != null) {
          return conllUSecondaryDepsBuilder_.getMessageOrBuilder();
        } else {
          return conllUSecondaryDeps_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance() : conllUSecondaryDeps_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.MapStringString conllUSecondaryDeps = 36;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder> 
          getConllUSecondaryDepsFieldBuilder() {
        if (conllUSecondaryDepsBuilder_ == null) {
          conllUSecondaryDepsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder>(
                  getConllUSecondaryDeps(),
                  getParentForChildren(),
                  isClean());
          conllUSecondaryDeps_ = null;
        }
        return conllUSecondaryDepsBuilder_;
      }

      private java.lang.Object wikipediaEntity_ = "";
      /**
       * <code>optional string wikipediaEntity = 37;</code>
       * @return Whether the wikipediaEntity field is set.
       */
      public boolean hasWikipediaEntity() {
        return ((bitField1_ & 0x00000080) != 0);
      }
      /**
       * <code>optional string wikipediaEntity = 37;</code>
       * @return The wikipediaEntity.
       */
      public java.lang.String getWikipediaEntity() {
        java.lang.Object ref = wikipediaEntity_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            wikipediaEntity_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string wikipediaEntity = 37;</code>
       * @return The bytes for wikipediaEntity.
       */
      public com.google.protobuf.ByteString
          getWikipediaEntityBytes() {
        java.lang.Object ref = wikipediaEntity_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          wikipediaEntity_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string wikipediaEntity = 37;</code>
       * @param value The wikipediaEntity to set.
       * @return This builder for chaining.
       */
      public Builder setWikipediaEntity(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000080;
        wikipediaEntity_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string wikipediaEntity = 37;</code>
       * @return This builder for chaining.
       */
      public Builder clearWikipediaEntity() {
        bitField1_ = (bitField1_ & ~0x00000080);
        wikipediaEntity_ = getDefaultInstance().getWikipediaEntity();
        onChanged();
        return this;
      }
      /**
       * <code>optional string wikipediaEntity = 37;</code>
       * @param value The bytes for wikipediaEntity to set.
       * @return This builder for chaining.
       */
      public Builder setWikipediaEntityBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000080;
        wikipediaEntity_ = value;
        onChanged();
        return this;
      }

      private boolean isNewline_ ;
      /**
       * <code>optional bool isNewline = 38;</code>
       * @return Whether the isNewline field is set.
       */
      @java.lang.Override
      public boolean hasIsNewline() {
        return ((bitField1_ & 0x00000100) != 0);
      }
      /**
       * <code>optional bool isNewline = 38;</code>
       * @return The isNewline.
       */
      @java.lang.Override
      public boolean getIsNewline() {
        return isNewline_;
      }
      /**
       * <code>optional bool isNewline = 38;</code>
       * @param value The isNewline to set.
       * @return This builder for chaining.
       */
      public Builder setIsNewline(boolean value) {
        bitField1_ |= 0x00000100;
        isNewline_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isNewline = 38;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsNewline() {
        bitField1_ = (bitField1_ & ~0x00000100);
        isNewline_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object gender_ = "";
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional string gender = 51;</code>
       * @return Whether the gender field is set.
       */
      public boolean hasGender() {
        return ((bitField1_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional string gender = 51;</code>
       * @return The gender.
       */
      public java.lang.String getGender() {
        java.lang.Object ref = gender_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            gender_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional string gender = 51;</code>
       * @return The bytes for gender.
       */
      public com.google.protobuf.ByteString
          getGenderBytes() {
        java.lang.Object ref = gender_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gender_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional string gender = 51;</code>
       * @param value The gender to set.
       * @return This builder for chaining.
       */
      public Builder setGender(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000200;
        gender_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional string gender = 51;</code>
       * @return This builder for chaining.
       */
      public Builder clearGender() {
        bitField1_ = (bitField1_ & ~0x00000200);
        gender_ = getDefaultInstance().getGender();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Fields set by other annotators in CoreNLP
       * </pre>
       *
       * <code>optional string gender = 51;</code>
       * @param value The bytes for gender to set.
       * @return This builder for chaining.
       */
      public Builder setGenderBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000200;
        gender_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object trueCase_ = "";
      /**
       * <pre>
       * true case type of token
       * </pre>
       *
       * <code>optional string trueCase = 52;</code>
       * @return Whether the trueCase field is set.
       */
      public boolean hasTrueCase() {
        return ((bitField1_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * true case type of token
       * </pre>
       *
       * <code>optional string trueCase = 52;</code>
       * @return The trueCase.
       */
      public java.lang.String getTrueCase() {
        java.lang.Object ref = trueCase_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            trueCase_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * true case type of token
       * </pre>
       *
       * <code>optional string trueCase = 52;</code>
       * @return The bytes for trueCase.
       */
      public com.google.protobuf.ByteString
          getTrueCaseBytes() {
        java.lang.Object ref = trueCase_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          trueCase_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * true case type of token
       * </pre>
       *
       * <code>optional string trueCase = 52;</code>
       * @param value The trueCase to set.
       * @return This builder for chaining.
       */
      public Builder setTrueCase(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000400;
        trueCase_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * true case type of token
       * </pre>
       *
       * <code>optional string trueCase = 52;</code>
       * @return This builder for chaining.
       */
      public Builder clearTrueCase() {
        bitField1_ = (bitField1_ & ~0x00000400);
        trueCase_ = getDefaultInstance().getTrueCase();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * true case type of token
       * </pre>
       *
       * <code>optional string trueCase = 52;</code>
       * @param value The bytes for trueCase to set.
       * @return This builder for chaining.
       */
      public Builder setTrueCaseBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000400;
        trueCase_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object trueCaseText_ = "";
      /**
       * <pre>
       * true case gloss of token
       * </pre>
       *
       * <code>optional string trueCaseText = 53;</code>
       * @return Whether the trueCaseText field is set.
       */
      public boolean hasTrueCaseText() {
        return ((bitField1_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * true case gloss of token
       * </pre>
       *
       * <code>optional string trueCaseText = 53;</code>
       * @return The trueCaseText.
       */
      public java.lang.String getTrueCaseText() {
        java.lang.Object ref = trueCaseText_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            trueCaseText_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * true case gloss of token
       * </pre>
       *
       * <code>optional string trueCaseText = 53;</code>
       * @return The bytes for trueCaseText.
       */
      public com.google.protobuf.ByteString
          getTrueCaseTextBytes() {
        java.lang.Object ref = trueCaseText_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          trueCaseText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * true case gloss of token
       * </pre>
       *
       * <code>optional string trueCaseText = 53;</code>
       * @param value The trueCaseText to set.
       * @return This builder for chaining.
       */
      public Builder setTrueCaseText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000800;
        trueCaseText_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * true case gloss of token
       * </pre>
       *
       * <code>optional string trueCaseText = 53;</code>
       * @return This builder for chaining.
       */
      public Builder clearTrueCaseText() {
        bitField1_ = (bitField1_ & ~0x00000800);
        trueCaseText_ = getDefaultInstance().getTrueCaseText();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * true case gloss of token
       * </pre>
       *
       * <code>optional string trueCaseText = 53;</code>
       * @param value The bytes for trueCaseText to set.
       * @return This builder for chaining.
       */
      public Builder setTrueCaseTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000800;
        trueCaseText_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object chineseChar_ = "";
      /**
       * <pre>
       *  Chinese character info
       * </pre>
       *
       * <code>optional string chineseChar = 54;</code>
       * @return Whether the chineseChar field is set.
       */
      public boolean hasChineseChar() {
        return ((bitField1_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       *  Chinese character info
       * </pre>
       *
       * <code>optional string chineseChar = 54;</code>
       * @return The chineseChar.
       */
      public java.lang.String getChineseChar() {
        java.lang.Object ref = chineseChar_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            chineseChar_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *  Chinese character info
       * </pre>
       *
       * <code>optional string chineseChar = 54;</code>
       * @return The bytes for chineseChar.
       */
      public com.google.protobuf.ByteString
          getChineseCharBytes() {
        java.lang.Object ref = chineseChar_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          chineseChar_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *  Chinese character info
       * </pre>
       *
       * <code>optional string chineseChar = 54;</code>
       * @param value The chineseChar to set.
       * @return This builder for chaining.
       */
      public Builder setChineseChar(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00001000;
        chineseChar_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *  Chinese character info
       * </pre>
       *
       * <code>optional string chineseChar = 54;</code>
       * @return This builder for chaining.
       */
      public Builder clearChineseChar() {
        bitField1_ = (bitField1_ & ~0x00001000);
        chineseChar_ = getDefaultInstance().getChineseChar();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *  Chinese character info
       * </pre>
       *
       * <code>optional string chineseChar = 54;</code>
       * @param value The bytes for chineseChar to set.
       * @return This builder for chaining.
       */
      public Builder setChineseCharBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00001000;
        chineseChar_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object chineseSeg_ = "";
      /**
       * <code>optional string chineseSeg = 55;</code>
       * @return Whether the chineseSeg field is set.
       */
      public boolean hasChineseSeg() {
        return ((bitField1_ & 0x00002000) != 0);
      }
      /**
       * <code>optional string chineseSeg = 55;</code>
       * @return The chineseSeg.
       */
      public java.lang.String getChineseSeg() {
        java.lang.Object ref = chineseSeg_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            chineseSeg_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string chineseSeg = 55;</code>
       * @return The bytes for chineseSeg.
       */
      public com.google.protobuf.ByteString
          getChineseSegBytes() {
        java.lang.Object ref = chineseSeg_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          chineseSeg_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string chineseSeg = 55;</code>
       * @param value The chineseSeg to set.
       * @return This builder for chaining.
       */
      public Builder setChineseSeg(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00002000;
        chineseSeg_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string chineseSeg = 55;</code>
       * @return This builder for chaining.
       */
      public Builder clearChineseSeg() {
        bitField1_ = (bitField1_ & ~0x00002000);
        chineseSeg_ = getDefaultInstance().getChineseSeg();
        onChanged();
        return this;
      }
      /**
       * <code>optional string chineseSeg = 55;</code>
       * @param value The bytes for chineseSeg to set.
       * @return This builder for chaining.
       */
      public Builder setChineseSegBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00002000;
        chineseSeg_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object chineseXMLChar_ = "";
      /**
       * <code>optional string chineseXMLChar = 60;</code>
       * @return Whether the chineseXMLChar field is set.
       */
      public boolean hasChineseXMLChar() {
        return ((bitField1_ & 0x00004000) != 0);
      }
      /**
       * <code>optional string chineseXMLChar = 60;</code>
       * @return The chineseXMLChar.
       */
      public java.lang.String getChineseXMLChar() {
        java.lang.Object ref = chineseXMLChar_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            chineseXMLChar_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string chineseXMLChar = 60;</code>
       * @return The bytes for chineseXMLChar.
       */
      public com.google.protobuf.ByteString
          getChineseXMLCharBytes() {
        java.lang.Object ref = chineseXMLChar_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          chineseXMLChar_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string chineseXMLChar = 60;</code>
       * @param value The chineseXMLChar to set.
       * @return This builder for chaining.
       */
      public Builder setChineseXMLChar(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00004000;
        chineseXMLChar_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string chineseXMLChar = 60;</code>
       * @return This builder for chaining.
       */
      public Builder clearChineseXMLChar() {
        bitField1_ = (bitField1_ & ~0x00004000);
        chineseXMLChar_ = getDefaultInstance().getChineseXMLChar();
        onChanged();
        return this;
      }
      /**
       * <code>optional string chineseXMLChar = 60;</code>
       * @param value The bytes for chineseXMLChar to set.
       * @return This builder for chaining.
       */
      public Builder setChineseXMLCharBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00004000;
        chineseXMLChar_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object arabicSeg_ = "";
      /**
       * <pre>
       *  Arabic character info
       * </pre>
       *
       * <code>optional string arabicSeg = 76;</code>
       * @return Whether the arabicSeg field is set.
       */
      public boolean hasArabicSeg() {
        return ((bitField1_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       *  Arabic character info
       * </pre>
       *
       * <code>optional string arabicSeg = 76;</code>
       * @return The arabicSeg.
       */
      public java.lang.String getArabicSeg() {
        java.lang.Object ref = arabicSeg_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            arabicSeg_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *  Arabic character info
       * </pre>
       *
       * <code>optional string arabicSeg = 76;</code>
       * @return The bytes for arabicSeg.
       */
      public com.google.protobuf.ByteString
          getArabicSegBytes() {
        java.lang.Object ref = arabicSeg_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          arabicSeg_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *  Arabic character info
       * </pre>
       *
       * <code>optional string arabicSeg = 76;</code>
       * @param value The arabicSeg to set.
       * @return This builder for chaining.
       */
      public Builder setArabicSeg(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00008000;
        arabicSeg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *  Arabic character info
       * </pre>
       *
       * <code>optional string arabicSeg = 76;</code>
       * @return This builder for chaining.
       */
      public Builder clearArabicSeg() {
        bitField1_ = (bitField1_ & ~0x00008000);
        arabicSeg_ = getDefaultInstance().getArabicSeg();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *  Arabic character info
       * </pre>
       *
       * <code>optional string arabicSeg = 76;</code>
       * @param value The bytes for arabicSeg to set.
       * @return This builder for chaining.
       */
      public Builder setArabicSegBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00008000;
        arabicSeg_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sectionName_ = "";
      /**
       * <pre>
       * Section info
       * </pre>
       *
       * <code>optional string sectionName = 56;</code>
       * @return Whether the sectionName field is set.
       */
      public boolean hasSectionName() {
        return ((bitField1_ & 0x00010000) != 0);
      }
      /**
       * <pre>
       * Section info
       * </pre>
       *
       * <code>optional string sectionName = 56;</code>
       * @return The sectionName.
       */
      public java.lang.String getSectionName() {
        java.lang.Object ref = sectionName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sectionName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Section info
       * </pre>
       *
       * <code>optional string sectionName = 56;</code>
       * @return The bytes for sectionName.
       */
      public com.google.protobuf.ByteString
          getSectionNameBytes() {
        java.lang.Object ref = sectionName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sectionName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Section info
       * </pre>
       *
       * <code>optional string sectionName = 56;</code>
       * @param value The sectionName to set.
       * @return This builder for chaining.
       */
      public Builder setSectionName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00010000;
        sectionName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Section info
       * </pre>
       *
       * <code>optional string sectionName = 56;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionName() {
        bitField1_ = (bitField1_ & ~0x00010000);
        sectionName_ = getDefaultInstance().getSectionName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Section info
       * </pre>
       *
       * <code>optional string sectionName = 56;</code>
       * @param value The bytes for sectionName to set.
       * @return This builder for chaining.
       */
      public Builder setSectionNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00010000;
        sectionName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sectionAuthor_ = "";
      /**
       * <code>optional string sectionAuthor = 57;</code>
       * @return Whether the sectionAuthor field is set.
       */
      public boolean hasSectionAuthor() {
        return ((bitField1_ & 0x00020000) != 0);
      }
      /**
       * <code>optional string sectionAuthor = 57;</code>
       * @return The sectionAuthor.
       */
      public java.lang.String getSectionAuthor() {
        java.lang.Object ref = sectionAuthor_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sectionAuthor_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string sectionAuthor = 57;</code>
       * @return The bytes for sectionAuthor.
       */
      public com.google.protobuf.ByteString
          getSectionAuthorBytes() {
        java.lang.Object ref = sectionAuthor_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sectionAuthor_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string sectionAuthor = 57;</code>
       * @param value The sectionAuthor to set.
       * @return This builder for chaining.
       */
      public Builder setSectionAuthor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00020000;
        sectionAuthor_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string sectionAuthor = 57;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionAuthor() {
        bitField1_ = (bitField1_ & ~0x00020000);
        sectionAuthor_ = getDefaultInstance().getSectionAuthor();
        onChanged();
        return this;
      }
      /**
       * <code>optional string sectionAuthor = 57;</code>
       * @param value The bytes for sectionAuthor to set.
       * @return This builder for chaining.
       */
      public Builder setSectionAuthorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00020000;
        sectionAuthor_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sectionDate_ = "";
      /**
       * <code>optional string sectionDate = 58;</code>
       * @return Whether the sectionDate field is set.
       */
      public boolean hasSectionDate() {
        return ((bitField1_ & 0x00040000) != 0);
      }
      /**
       * <code>optional string sectionDate = 58;</code>
       * @return The sectionDate.
       */
      public java.lang.String getSectionDate() {
        java.lang.Object ref = sectionDate_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sectionDate_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string sectionDate = 58;</code>
       * @return The bytes for sectionDate.
       */
      public com.google.protobuf.ByteString
          getSectionDateBytes() {
        java.lang.Object ref = sectionDate_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sectionDate_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string sectionDate = 58;</code>
       * @param value The sectionDate to set.
       * @return This builder for chaining.
       */
      public Builder setSectionDate(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00040000;
        sectionDate_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string sectionDate = 58;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionDate() {
        bitField1_ = (bitField1_ & ~0x00040000);
        sectionDate_ = getDefaultInstance().getSectionDate();
        onChanged();
        return this;
      }
      /**
       * <code>optional string sectionDate = 58;</code>
       * @param value The bytes for sectionDate to set.
       * @return This builder for chaining.
       */
      public Builder setSectionDateBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00040000;
        sectionDate_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sectionEndLabel_ = "";
      /**
       * <code>optional string sectionEndLabel = 59;</code>
       * @return Whether the sectionEndLabel field is set.
       */
      public boolean hasSectionEndLabel() {
        return ((bitField1_ & 0x00080000) != 0);
      }
      /**
       * <code>optional string sectionEndLabel = 59;</code>
       * @return The sectionEndLabel.
       */
      public java.lang.String getSectionEndLabel() {
        java.lang.Object ref = sectionEndLabel_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sectionEndLabel_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string sectionEndLabel = 59;</code>
       * @return The bytes for sectionEndLabel.
       */
      public com.google.protobuf.ByteString
          getSectionEndLabelBytes() {
        java.lang.Object ref = sectionEndLabel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sectionEndLabel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string sectionEndLabel = 59;</code>
       * @param value The sectionEndLabel to set.
       * @return This builder for chaining.
       */
      public Builder setSectionEndLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00080000;
        sectionEndLabel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string sectionEndLabel = 59;</code>
       * @return This builder for chaining.
       */
      public Builder clearSectionEndLabel() {
        bitField1_ = (bitField1_ & ~0x00080000);
        sectionEndLabel_ = getDefaultInstance().getSectionEndLabel();
        onChanged();
        return this;
      }
      /**
       * <code>optional string sectionEndLabel = 59;</code>
       * @param value The bytes for sectionEndLabel to set.
       * @return This builder for chaining.
       */
      public Builder setSectionEndLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00080000;
        sectionEndLabel_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object parent_ = "";
      /**
       * <pre>
       * French tokens have parents
       * </pre>
       *
       * <code>optional string parent = 61;</code>
       * @return Whether the parent field is set.
       */
      public boolean hasParent() {
        return ((bitField1_ & 0x00100000) != 0);
      }
      /**
       * <pre>
       * French tokens have parents
       * </pre>
       *
       * <code>optional string parent = 61;</code>
       * @return The parent.
       */
      public java.lang.String getParent() {
        java.lang.Object ref = parent_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            parent_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * French tokens have parents
       * </pre>
       *
       * <code>optional string parent = 61;</code>
       * @return The bytes for parent.
       */
      public com.google.protobuf.ByteString
          getParentBytes() {
        java.lang.Object ref = parent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          parent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * French tokens have parents
       * </pre>
       *
       * <code>optional string parent = 61;</code>
       * @param value The parent to set.
       * @return This builder for chaining.
       */
      public Builder setParent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00100000;
        parent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * French tokens have parents
       * </pre>
       *
       * <code>optional string parent = 61;</code>
       * @return This builder for chaining.
       */
      public Builder clearParent() {
        bitField1_ = (bitField1_ & ~0x00100000);
        parent_ = getDefaultInstance().getParent();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * French tokens have parents
       * </pre>
       *
       * <code>optional string parent = 61;</code>
       * @param value The bytes for parent to set.
       * @return This builder for chaining.
       */
      public Builder setParentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00100000;
        parent_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList corefMentionIndex_ = emptyIntList();
      private void ensureCorefMentionIndexIsMutable() {
        if (!((bitField1_ & 0x00200000) != 0)) {
          corefMentionIndex_ = mutableCopy(corefMentionIndex_);
          bitField1_ |= 0x00200000;
         }
      }
      /**
       * <pre>
       * mention index info
       * </pre>
       *
       * <code>repeated uint32 corefMentionIndex = 64;</code>
       * @return A list containing the corefMentionIndex.
       */
      public java.util.List<java.lang.Integer>
          getCorefMentionIndexList() {
        return ((bitField1_ & 0x00200000) != 0) ?
                 java.util.Collections.unmodifiableList(corefMentionIndex_) : corefMentionIndex_;
      }
      /**
       * <pre>
       * mention index info
       * </pre>
       *
       * <code>repeated uint32 corefMentionIndex = 64;</code>
       * @return The count of corefMentionIndex.
       */
      public int getCorefMentionIndexCount() {
        return corefMentionIndex_.size();
      }
      /**
       * <pre>
       * mention index info
       * </pre>
       *
       * <code>repeated uint32 corefMentionIndex = 64;</code>
       * @param index The index of the element to return.
       * @return The corefMentionIndex at the given index.
       */
      public int getCorefMentionIndex(int index) {
        return corefMentionIndex_.getInt(index);
      }
      /**
       * <pre>
       * mention index info
       * </pre>
       *
       * <code>repeated uint32 corefMentionIndex = 64;</code>
       * @param index The index to set the value at.
       * @param value The corefMentionIndex to set.
       * @return This builder for chaining.
       */
      public Builder setCorefMentionIndex(
          int index, int value) {
        ensureCorefMentionIndexIsMutable();
        corefMentionIndex_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mention index info
       * </pre>
       *
       * <code>repeated uint32 corefMentionIndex = 64;</code>
       * @param value The corefMentionIndex to add.
       * @return This builder for chaining.
       */
      public Builder addCorefMentionIndex(int value) {
        ensureCorefMentionIndexIsMutable();
        corefMentionIndex_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mention index info
       * </pre>
       *
       * <code>repeated uint32 corefMentionIndex = 64;</code>
       * @param values The corefMentionIndex to add.
       * @return This builder for chaining.
       */
      public Builder addAllCorefMentionIndex(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureCorefMentionIndexIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, corefMentionIndex_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mention index info
       * </pre>
       *
       * <code>repeated uint32 corefMentionIndex = 64;</code>
       * @return This builder for chaining.
       */
      public Builder clearCorefMentionIndex() {
        corefMentionIndex_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00200000);
        onChanged();
        return this;
      }

      private int entityMentionIndex_ ;
      /**
       * <code>optional uint32 entityMentionIndex = 65;</code>
       * @return Whether the entityMentionIndex field is set.
       */
      @java.lang.Override
      public boolean hasEntityMentionIndex() {
        return ((bitField1_ & 0x00400000) != 0);
      }
      /**
       * <code>optional uint32 entityMentionIndex = 65;</code>
       * @return The entityMentionIndex.
       */
      @java.lang.Override
      public int getEntityMentionIndex() {
        return entityMentionIndex_;
      }
      /**
       * <code>optional uint32 entityMentionIndex = 65;</code>
       * @param value The entityMentionIndex to set.
       * @return This builder for chaining.
       */
      public Builder setEntityMentionIndex(int value) {
        bitField1_ |= 0x00400000;
        entityMentionIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 entityMentionIndex = 65;</code>
       * @return This builder for chaining.
       */
      public Builder clearEntityMentionIndex() {
        bitField1_ = (bitField1_ & ~0x00400000);
        entityMentionIndex_ = 0;
        onChanged();
        return this;
      }

      private boolean isMWT_ ;
      /**
       * <pre>
       * mwt stuff
       * </pre>
       *
       * <code>optional bool isMWT = 67;</code>
       * @return Whether the isMWT field is set.
       */
      @java.lang.Override
      public boolean hasIsMWT() {
        return ((bitField1_ & 0x00800000) != 0);
      }
      /**
       * <pre>
       * mwt stuff
       * </pre>
       *
       * <code>optional bool isMWT = 67;</code>
       * @return The isMWT.
       */
      @java.lang.Override
      public boolean getIsMWT() {
        return isMWT_;
      }
      /**
       * <pre>
       * mwt stuff
       * </pre>
       *
       * <code>optional bool isMWT = 67;</code>
       * @param value The isMWT to set.
       * @return This builder for chaining.
       */
      public Builder setIsMWT(boolean value) {
        bitField1_ |= 0x00800000;
        isMWT_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * mwt stuff
       * </pre>
       *
       * <code>optional bool isMWT = 67;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsMWT() {
        bitField1_ = (bitField1_ & ~0x00800000);
        isMWT_ = false;
        onChanged();
        return this;
      }

      private boolean isFirstMWT_ ;
      /**
       * <code>optional bool isFirstMWT = 68;</code>
       * @return Whether the isFirstMWT field is set.
       */
      @java.lang.Override
      public boolean hasIsFirstMWT() {
        return ((bitField1_ & 0x01000000) != 0);
      }
      /**
       * <code>optional bool isFirstMWT = 68;</code>
       * @return The isFirstMWT.
       */
      @java.lang.Override
      public boolean getIsFirstMWT() {
        return isFirstMWT_;
      }
      /**
       * <code>optional bool isFirstMWT = 68;</code>
       * @param value The isFirstMWT to set.
       * @return This builder for chaining.
       */
      public Builder setIsFirstMWT(boolean value) {
        bitField1_ |= 0x01000000;
        isFirstMWT_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isFirstMWT = 68;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsFirstMWT() {
        bitField1_ = (bitField1_ & ~0x01000000);
        isFirstMWT_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object mwtText_ = "";
      /**
       * <code>optional string mwtText = 69;</code>
       * @return Whether the mwtText field is set.
       */
      public boolean hasMwtText() {
        return ((bitField1_ & 0x02000000) != 0);
      }
      /**
       * <code>optional string mwtText = 69;</code>
       * @return The mwtText.
       */
      public java.lang.String getMwtText() {
        java.lang.Object ref = mwtText_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mwtText_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string mwtText = 69;</code>
       * @return The bytes for mwtText.
       */
      public com.google.protobuf.ByteString
          getMwtTextBytes() {
        java.lang.Object ref = mwtText_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mwtText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string mwtText = 69;</code>
       * @param value The mwtText to set.
       * @return This builder for chaining.
       */
      public Builder setMwtText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x02000000;
        mwtText_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string mwtText = 69;</code>
       * @return This builder for chaining.
       */
      public Builder clearMwtText() {
        bitField1_ = (bitField1_ & ~0x02000000);
        mwtText_ = getDefaultInstance().getMwtText();
        onChanged();
        return this;
      }
      /**
       * <code>optional string mwtText = 69;</code>
       * @param value The bytes for mwtText to set.
       * @return This builder for chaining.
       */
      public Builder setMwtTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x02000000;
        mwtText_ = value;
        onChanged();
        return this;
      }

      private long numericValue_ ;
      /**
       * <pre>
       * number info
       * </pre>
       *
       * <code>optional uint64 numericValue = 70;</code>
       * @return Whether the numericValue field is set.
       */
      @java.lang.Override
      public boolean hasNumericValue() {
        return ((bitField1_ & 0x04000000) != 0);
      }
      /**
       * <pre>
       * number info
       * </pre>
       *
       * <code>optional uint64 numericValue = 70;</code>
       * @return The numericValue.
       */
      @java.lang.Override
      public long getNumericValue() {
        return numericValue_;
      }
      /**
       * <pre>
       * number info
       * </pre>
       *
       * <code>optional uint64 numericValue = 70;</code>
       * @param value The numericValue to set.
       * @return This builder for chaining.
       */
      public Builder setNumericValue(long value) {
        bitField1_ |= 0x04000000;
        numericValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * number info
       * </pre>
       *
       * <code>optional uint64 numericValue = 70;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumericValue() {
        bitField1_ = (bitField1_ & ~0x04000000);
        numericValue_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object numericType_ = "";
      /**
       * <code>optional string numericType = 71;</code>
       * @return Whether the numericType field is set.
       */
      public boolean hasNumericType() {
        return ((bitField1_ & 0x08000000) != 0);
      }
      /**
       * <code>optional string numericType = 71;</code>
       * @return The numericType.
       */
      public java.lang.String getNumericType() {
        java.lang.Object ref = numericType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            numericType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string numericType = 71;</code>
       * @return The bytes for numericType.
       */
      public com.google.protobuf.ByteString
          getNumericTypeBytes() {
        java.lang.Object ref = numericType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          numericType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string numericType = 71;</code>
       * @param value The numericType to set.
       * @return This builder for chaining.
       */
      public Builder setNumericType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x08000000;
        numericType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string numericType = 71;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumericType() {
        bitField1_ = (bitField1_ & ~0x08000000);
        numericType_ = getDefaultInstance().getNumericType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string numericType = 71;</code>
       * @param value The bytes for numericType to set.
       * @return This builder for chaining.
       */
      public Builder setNumericTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x08000000;
        numericType_ = value;
        onChanged();
        return this;
      }

      private long numericCompositeValue_ ;
      /**
       * <code>optional uint64 numericCompositeValue = 72;</code>
       * @return Whether the numericCompositeValue field is set.
       */
      @java.lang.Override
      public boolean hasNumericCompositeValue() {
        return ((bitField1_ & 0x10000000) != 0);
      }
      /**
       * <code>optional uint64 numericCompositeValue = 72;</code>
       * @return The numericCompositeValue.
       */
      @java.lang.Override
      public long getNumericCompositeValue() {
        return numericCompositeValue_;
      }
      /**
       * <code>optional uint64 numericCompositeValue = 72;</code>
       * @param value The numericCompositeValue to set.
       * @return This builder for chaining.
       */
      public Builder setNumericCompositeValue(long value) {
        bitField1_ |= 0x10000000;
        numericCompositeValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 numericCompositeValue = 72;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumericCompositeValue() {
        bitField1_ = (bitField1_ & ~0x10000000);
        numericCompositeValue_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object numericCompositeType_ = "";
      /**
       * <code>optional string numericCompositeType = 73;</code>
       * @return Whether the numericCompositeType field is set.
       */
      public boolean hasNumericCompositeType() {
        return ((bitField1_ & 0x20000000) != 0);
      }
      /**
       * <code>optional string numericCompositeType = 73;</code>
       * @return The numericCompositeType.
       */
      public java.lang.String getNumericCompositeType() {
        java.lang.Object ref = numericCompositeType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            numericCompositeType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string numericCompositeType = 73;</code>
       * @return The bytes for numericCompositeType.
       */
      public com.google.protobuf.ByteString
          getNumericCompositeTypeBytes() {
        java.lang.Object ref = numericCompositeType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          numericCompositeType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string numericCompositeType = 73;</code>
       * @param value The numericCompositeType to set.
       * @return This builder for chaining.
       */
      public Builder setNumericCompositeType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x20000000;
        numericCompositeType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string numericCompositeType = 73;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumericCompositeType() {
        bitField1_ = (bitField1_ & ~0x20000000);
        numericCompositeType_ = getDefaultInstance().getNumericCompositeType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string numericCompositeType = 73;</code>
       * @param value The bytes for numericCompositeType to set.
       * @return This builder for chaining.
       */
      public Builder setNumericCompositeTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x20000000;
        numericCompositeType_ = value;
        onChanged();
        return this;
      }

      private int codepointOffsetBegin_ ;
      /**
       * <code>optional uint32 codepointOffsetBegin = 74;</code>
       * @return Whether the codepointOffsetBegin field is set.
       */
      @java.lang.Override
      public boolean hasCodepointOffsetBegin() {
        return ((bitField1_ & 0x40000000) != 0);
      }
      /**
       * <code>optional uint32 codepointOffsetBegin = 74;</code>
       * @return The codepointOffsetBegin.
       */
      @java.lang.Override
      public int getCodepointOffsetBegin() {
        return codepointOffsetBegin_;
      }
      /**
       * <code>optional uint32 codepointOffsetBegin = 74;</code>
       * @param value The codepointOffsetBegin to set.
       * @return This builder for chaining.
       */
      public Builder setCodepointOffsetBegin(int value) {
        bitField1_ |= 0x40000000;
        codepointOffsetBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 codepointOffsetBegin = 74;</code>
       * @return This builder for chaining.
       */
      public Builder clearCodepointOffsetBegin() {
        bitField1_ = (bitField1_ & ~0x40000000);
        codepointOffsetBegin_ = 0;
        onChanged();
        return this;
      }

      private int codepointOffsetEnd_ ;
      /**
       * <code>optional uint32 codepointOffsetEnd = 75;</code>
       * @return Whether the codepointOffsetEnd field is set.
       */
      @java.lang.Override
      public boolean hasCodepointOffsetEnd() {
        return ((bitField1_ & 0x80000000) != 0);
      }
      /**
       * <code>optional uint32 codepointOffsetEnd = 75;</code>
       * @return The codepointOffsetEnd.
       */
      @java.lang.Override
      public int getCodepointOffsetEnd() {
        return codepointOffsetEnd_;
      }
      /**
       * <code>optional uint32 codepointOffsetEnd = 75;</code>
       * @param value The codepointOffsetEnd to set.
       * @return This builder for chaining.
       */
      public Builder setCodepointOffsetEnd(int value) {
        bitField1_ |= 0x80000000;
        codepointOffsetEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 codepointOffsetEnd = 75;</code>
       * @return This builder for chaining.
       */
      public Builder clearCodepointOffsetEnd() {
        bitField1_ = (bitField1_ & ~0x80000000);
        codepointOffsetEnd_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Token)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Token)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Token DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Token();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Token getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Token>
        PARSER = new com.google.protobuf.AbstractParser<Token>() {
      @java.lang.Override
      public Token parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Token> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Token> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface QuoteOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Quote)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional string text = 1;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <code>optional string text = 1;</code>
     * @return The text.
     */
    java.lang.String getText();
    /**
     * <code>optional string text = 1;</code>
     * @return The bytes for text.
     */
    com.google.protobuf.ByteString
        getTextBytes();

    /**
     * <code>optional uint32 begin = 2;</code>
     * @return Whether the begin field is set.
     */
    boolean hasBegin();
    /**
     * <code>optional uint32 begin = 2;</code>
     * @return The begin.
     */
    int getBegin();

    /**
     * <code>optional uint32 end = 3;</code>
     * @return Whether the end field is set.
     */
    boolean hasEnd();
    /**
     * <code>optional uint32 end = 3;</code>
     * @return The end.
     */
    int getEnd();

    /**
     * <code>optional uint32 sentenceBegin = 5;</code>
     * @return Whether the sentenceBegin field is set.
     */
    boolean hasSentenceBegin();
    /**
     * <code>optional uint32 sentenceBegin = 5;</code>
     * @return The sentenceBegin.
     */
    int getSentenceBegin();

    /**
     * <code>optional uint32 sentenceEnd = 6;</code>
     * @return Whether the sentenceEnd field is set.
     */
    boolean hasSentenceEnd();
    /**
     * <code>optional uint32 sentenceEnd = 6;</code>
     * @return The sentenceEnd.
     */
    int getSentenceEnd();

    /**
     * <code>optional uint32 tokenBegin = 7;</code>
     * @return Whether the tokenBegin field is set.
     */
    boolean hasTokenBegin();
    /**
     * <code>optional uint32 tokenBegin = 7;</code>
     * @return The tokenBegin.
     */
    int getTokenBegin();

    /**
     * <code>optional uint32 tokenEnd = 8;</code>
     * @return Whether the tokenEnd field is set.
     */
    boolean hasTokenEnd();
    /**
     * <code>optional uint32 tokenEnd = 8;</code>
     * @return The tokenEnd.
     */
    int getTokenEnd();

    /**
     * <code>optional string docid = 9;</code>
     * @return Whether the docid field is set.
     */
    boolean hasDocid();
    /**
     * <code>optional string docid = 9;</code>
     * @return The docid.
     */
    java.lang.String getDocid();
    /**
     * <code>optional string docid = 9;</code>
     * @return The bytes for docid.
     */
    com.google.protobuf.ByteString
        getDocidBytes();

    /**
     * <code>optional uint32 index = 10;</code>
     * @return Whether the index field is set.
     */
    boolean hasIndex();
    /**
     * <code>optional uint32 index = 10;</code>
     * @return The index.
     */
    int getIndex();

    /**
     * <code>optional string author = 11;</code>
     * @return Whether the author field is set.
     */
    boolean hasAuthor();
    /**
     * <code>optional string author = 11;</code>
     * @return The author.
     */
    java.lang.String getAuthor();
    /**
     * <code>optional string author = 11;</code>
     * @return The bytes for author.
     */
    com.google.protobuf.ByteString
        getAuthorBytes();

    /**
     * <code>optional string mention = 12;</code>
     * @return Whether the mention field is set.
     */
    boolean hasMention();
    /**
     * <code>optional string mention = 12;</code>
     * @return The mention.
     */
    java.lang.String getMention();
    /**
     * <code>optional string mention = 12;</code>
     * @return The bytes for mention.
     */
    com.google.protobuf.ByteString
        getMentionBytes();

    /**
     * <code>optional uint32 mentionBegin = 13;</code>
     * @return Whether the mentionBegin field is set.
     */
    boolean hasMentionBegin();
    /**
     * <code>optional uint32 mentionBegin = 13;</code>
     * @return The mentionBegin.
     */
    int getMentionBegin();

    /**
     * <code>optional uint32 mentionEnd = 14;</code>
     * @return Whether the mentionEnd field is set.
     */
    boolean hasMentionEnd();
    /**
     * <code>optional uint32 mentionEnd = 14;</code>
     * @return The mentionEnd.
     */
    int getMentionEnd();

    /**
     * <code>optional string mentionType = 15;</code>
     * @return Whether the mentionType field is set.
     */
    boolean hasMentionType();
    /**
     * <code>optional string mentionType = 15;</code>
     * @return The mentionType.
     */
    java.lang.String getMentionType();
    /**
     * <code>optional string mentionType = 15;</code>
     * @return The bytes for mentionType.
     */
    com.google.protobuf.ByteString
        getMentionTypeBytes();

    /**
     * <code>optional string mentionSieve = 16;</code>
     * @return Whether the mentionSieve field is set.
     */
    boolean hasMentionSieve();
    /**
     * <code>optional string mentionSieve = 16;</code>
     * @return The mentionSieve.
     */
    java.lang.String getMentionSieve();
    /**
     * <code>optional string mentionSieve = 16;</code>
     * @return The bytes for mentionSieve.
     */
    com.google.protobuf.ByteString
        getMentionSieveBytes();

    /**
     * <code>optional string speaker = 17;</code>
     * @return Whether the speaker field is set.
     */
    boolean hasSpeaker();
    /**
     * <code>optional string speaker = 17;</code>
     * @return The speaker.
     */
    java.lang.String getSpeaker();
    /**
     * <code>optional string speaker = 17;</code>
     * @return The bytes for speaker.
     */
    com.google.protobuf.ByteString
        getSpeakerBytes();

    /**
     * <code>optional string speakerSieve = 18;</code>
     * @return Whether the speakerSieve field is set.
     */
    boolean hasSpeakerSieve();
    /**
     * <code>optional string speakerSieve = 18;</code>
     * @return The speakerSieve.
     */
    java.lang.String getSpeakerSieve();
    /**
     * <code>optional string speakerSieve = 18;</code>
     * @return The bytes for speakerSieve.
     */
    com.google.protobuf.ByteString
        getSpeakerSieveBytes();

    /**
     * <code>optional string canonicalMention = 19;</code>
     * @return Whether the canonicalMention field is set.
     */
    boolean hasCanonicalMention();
    /**
     * <code>optional string canonicalMention = 19;</code>
     * @return The canonicalMention.
     */
    java.lang.String getCanonicalMention();
    /**
     * <code>optional string canonicalMention = 19;</code>
     * @return The bytes for canonicalMention.
     */
    com.google.protobuf.ByteString
        getCanonicalMentionBytes();

    /**
     * <code>optional uint32 canonicalMentionBegin = 20;</code>
     * @return Whether the canonicalMentionBegin field is set.
     */
    boolean hasCanonicalMentionBegin();
    /**
     * <code>optional uint32 canonicalMentionBegin = 20;</code>
     * @return The canonicalMentionBegin.
     */
    int getCanonicalMentionBegin();

    /**
     * <code>optional uint32 canonicalMentionEnd = 21;</code>
     * @return Whether the canonicalMentionEnd field is set.
     */
    boolean hasCanonicalMentionEnd();
    /**
     * <code>optional uint32 canonicalMentionEnd = 21;</code>
     * @return The canonicalMentionEnd.
     */
    int getCanonicalMentionEnd();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
     * @return Whether the attributionDependencyGraph field is set.
     */
    boolean hasAttributionDependencyGraph();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
     * @return The attributionDependencyGraph.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getAttributionDependencyGraph();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getAttributionDependencyGraphOrBuilder();
  }
  /**
   * <pre>
   * A quotation marker in text
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Quote}
   */
  public static final class Quote extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Quote)
      QuoteOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Quote.newBuilder() to construct.
    private Quote(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Quote() {
      text_ = "";
      docid_ = "";
      author_ = "";
      mention_ = "";
      mentionType_ = "";
      mentionSieve_ = "";
      speaker_ = "";
      speakerSieve_ = "";
      canonicalMention_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Quote();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Quote_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Quote_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder.class);
    }

    private int bitField0_;
    public static final int TEXT_FIELD_NUMBER = 1;
    private volatile java.lang.Object text_;
    /**
     * <code>optional string text = 1;</code>
     * @return Whether the text field is set.
     */
    @java.lang.Override
    public boolean hasText() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string text = 1;</code>
     * @return The text.
     */
    @java.lang.Override
    public java.lang.String getText() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          text_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string text = 1;</code>
     * @return The bytes for text.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTextBytes() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        text_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BEGIN_FIELD_NUMBER = 2;
    private int begin_;
    /**
     * <code>optional uint32 begin = 2;</code>
     * @return Whether the begin field is set.
     */
    @java.lang.Override
    public boolean hasBegin() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint32 begin = 2;</code>
     * @return The begin.
     */
    @java.lang.Override
    public int getBegin() {
      return begin_;
    }

    public static final int END_FIELD_NUMBER = 3;
    private int end_;
    /**
     * <code>optional uint32 end = 3;</code>
     * @return Whether the end field is set.
     */
    @java.lang.Override
    public boolean hasEnd() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional uint32 end = 3;</code>
     * @return The end.
     */
    @java.lang.Override
    public int getEnd() {
      return end_;
    }

    public static final int SENTENCEBEGIN_FIELD_NUMBER = 5;
    private int sentenceBegin_;
    /**
     * <code>optional uint32 sentenceBegin = 5;</code>
     * @return Whether the sentenceBegin field is set.
     */
    @java.lang.Override
    public boolean hasSentenceBegin() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional uint32 sentenceBegin = 5;</code>
     * @return The sentenceBegin.
     */
    @java.lang.Override
    public int getSentenceBegin() {
      return sentenceBegin_;
    }

    public static final int SENTENCEEND_FIELD_NUMBER = 6;
    private int sentenceEnd_;
    /**
     * <code>optional uint32 sentenceEnd = 6;</code>
     * @return Whether the sentenceEnd field is set.
     */
    @java.lang.Override
    public boolean hasSentenceEnd() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional uint32 sentenceEnd = 6;</code>
     * @return The sentenceEnd.
     */
    @java.lang.Override
    public int getSentenceEnd() {
      return sentenceEnd_;
    }

    public static final int TOKENBEGIN_FIELD_NUMBER = 7;
    private int tokenBegin_;
    /**
     * <code>optional uint32 tokenBegin = 7;</code>
     * @return Whether the tokenBegin field is set.
     */
    @java.lang.Override
    public boolean hasTokenBegin() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional uint32 tokenBegin = 7;</code>
     * @return The tokenBegin.
     */
    @java.lang.Override
    public int getTokenBegin() {
      return tokenBegin_;
    }

    public static final int TOKENEND_FIELD_NUMBER = 8;
    private int tokenEnd_;
    /**
     * <code>optional uint32 tokenEnd = 8;</code>
     * @return Whether the tokenEnd field is set.
     */
    @java.lang.Override
    public boolean hasTokenEnd() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional uint32 tokenEnd = 8;</code>
     * @return The tokenEnd.
     */
    @java.lang.Override
    public int getTokenEnd() {
      return tokenEnd_;
    }

    public static final int DOCID_FIELD_NUMBER = 9;
    private volatile java.lang.Object docid_;
    /**
     * <code>optional string docid = 9;</code>
     * @return Whether the docid field is set.
     */
    @java.lang.Override
    public boolean hasDocid() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional string docid = 9;</code>
     * @return The docid.
     */
    @java.lang.Override
    public java.lang.String getDocid() {
      java.lang.Object ref = docid_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          docid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string docid = 9;</code>
     * @return The bytes for docid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDocidBytes() {
      java.lang.Object ref = docid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        docid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INDEX_FIELD_NUMBER = 10;
    private int index_;
    /**
     * <code>optional uint32 index = 10;</code>
     * @return Whether the index field is set.
     */
    @java.lang.Override
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional uint32 index = 10;</code>
     * @return The index.
     */
    @java.lang.Override
    public int getIndex() {
      return index_;
    }

    public static final int AUTHOR_FIELD_NUMBER = 11;
    private volatile java.lang.Object author_;
    /**
     * <code>optional string author = 11;</code>
     * @return Whether the author field is set.
     */
    @java.lang.Override
    public boolean hasAuthor() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional string author = 11;</code>
     * @return The author.
     */
    @java.lang.Override
    public java.lang.String getAuthor() {
      java.lang.Object ref = author_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          author_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string author = 11;</code>
     * @return The bytes for author.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAuthorBytes() {
      java.lang.Object ref = author_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        author_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MENTION_FIELD_NUMBER = 12;
    private volatile java.lang.Object mention_;
    /**
     * <code>optional string mention = 12;</code>
     * @return Whether the mention field is set.
     */
    @java.lang.Override
    public boolean hasMention() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional string mention = 12;</code>
     * @return The mention.
     */
    @java.lang.Override
    public java.lang.String getMention() {
      java.lang.Object ref = mention_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          mention_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string mention = 12;</code>
     * @return The bytes for mention.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMentionBytes() {
      java.lang.Object ref = mention_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mention_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MENTIONBEGIN_FIELD_NUMBER = 13;
    private int mentionBegin_;
    /**
     * <code>optional uint32 mentionBegin = 13;</code>
     * @return Whether the mentionBegin field is set.
     */
    @java.lang.Override
    public boolean hasMentionBegin() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional uint32 mentionBegin = 13;</code>
     * @return The mentionBegin.
     */
    @java.lang.Override
    public int getMentionBegin() {
      return mentionBegin_;
    }

    public static final int MENTIONEND_FIELD_NUMBER = 14;
    private int mentionEnd_;
    /**
     * <code>optional uint32 mentionEnd = 14;</code>
     * @return Whether the mentionEnd field is set.
     */
    @java.lang.Override
    public boolean hasMentionEnd() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional uint32 mentionEnd = 14;</code>
     * @return The mentionEnd.
     */
    @java.lang.Override
    public int getMentionEnd() {
      return mentionEnd_;
    }

    public static final int MENTIONTYPE_FIELD_NUMBER = 15;
    private volatile java.lang.Object mentionType_;
    /**
     * <code>optional string mentionType = 15;</code>
     * @return Whether the mentionType field is set.
     */
    @java.lang.Override
    public boolean hasMentionType() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional string mentionType = 15;</code>
     * @return The mentionType.
     */
    @java.lang.Override
    public java.lang.String getMentionType() {
      java.lang.Object ref = mentionType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          mentionType_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string mentionType = 15;</code>
     * @return The bytes for mentionType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMentionTypeBytes() {
      java.lang.Object ref = mentionType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mentionType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MENTIONSIEVE_FIELD_NUMBER = 16;
    private volatile java.lang.Object mentionSieve_;
    /**
     * <code>optional string mentionSieve = 16;</code>
     * @return Whether the mentionSieve field is set.
     */
    @java.lang.Override
    public boolean hasMentionSieve() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>optional string mentionSieve = 16;</code>
     * @return The mentionSieve.
     */
    @java.lang.Override
    public java.lang.String getMentionSieve() {
      java.lang.Object ref = mentionSieve_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          mentionSieve_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string mentionSieve = 16;</code>
     * @return The bytes for mentionSieve.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMentionSieveBytes() {
      java.lang.Object ref = mentionSieve_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mentionSieve_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SPEAKER_FIELD_NUMBER = 17;
    private volatile java.lang.Object speaker_;
    /**
     * <code>optional string speaker = 17;</code>
     * @return Whether the speaker field is set.
     */
    @java.lang.Override
    public boolean hasSpeaker() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>optional string speaker = 17;</code>
     * @return The speaker.
     */
    @java.lang.Override
    public java.lang.String getSpeaker() {
      java.lang.Object ref = speaker_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          speaker_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string speaker = 17;</code>
     * @return The bytes for speaker.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSpeakerBytes() {
      java.lang.Object ref = speaker_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        speaker_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SPEAKERSIEVE_FIELD_NUMBER = 18;
    private volatile java.lang.Object speakerSieve_;
    /**
     * <code>optional string speakerSieve = 18;</code>
     * @return Whether the speakerSieve field is set.
     */
    @java.lang.Override
    public boolean hasSpeakerSieve() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <code>optional string speakerSieve = 18;</code>
     * @return The speakerSieve.
     */
    @java.lang.Override
    public java.lang.String getSpeakerSieve() {
      java.lang.Object ref = speakerSieve_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          speakerSieve_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string speakerSieve = 18;</code>
     * @return The bytes for speakerSieve.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSpeakerSieveBytes() {
      java.lang.Object ref = speakerSieve_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        speakerSieve_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CANONICALMENTION_FIELD_NUMBER = 19;
    private volatile java.lang.Object canonicalMention_;
    /**
     * <code>optional string canonicalMention = 19;</code>
     * @return Whether the canonicalMention field is set.
     */
    @java.lang.Override
    public boolean hasCanonicalMention() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>optional string canonicalMention = 19;</code>
     * @return The canonicalMention.
     */
    @java.lang.Override
    public java.lang.String getCanonicalMention() {
      java.lang.Object ref = canonicalMention_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          canonicalMention_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string canonicalMention = 19;</code>
     * @return The bytes for canonicalMention.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCanonicalMentionBytes() {
      java.lang.Object ref = canonicalMention_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        canonicalMention_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CANONICALMENTIONBEGIN_FIELD_NUMBER = 20;
    private int canonicalMentionBegin_;
    /**
     * <code>optional uint32 canonicalMentionBegin = 20;</code>
     * @return Whether the canonicalMentionBegin field is set.
     */
    @java.lang.Override
    public boolean hasCanonicalMentionBegin() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <code>optional uint32 canonicalMentionBegin = 20;</code>
     * @return The canonicalMentionBegin.
     */
    @java.lang.Override
    public int getCanonicalMentionBegin() {
      return canonicalMentionBegin_;
    }

    public static final int CANONICALMENTIONEND_FIELD_NUMBER = 21;
    private int canonicalMentionEnd_;
    /**
     * <code>optional uint32 canonicalMentionEnd = 21;</code>
     * @return Whether the canonicalMentionEnd field is set.
     */
    @java.lang.Override
    public boolean hasCanonicalMentionEnd() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <code>optional uint32 canonicalMentionEnd = 21;</code>
     * @return The canonicalMentionEnd.
     */
    @java.lang.Override
    public int getCanonicalMentionEnd() {
      return canonicalMentionEnd_;
    }

    public static final int ATTRIBUTIONDEPENDENCYGRAPH_FIELD_NUMBER = 22;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph attributionDependencyGraph_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
     * @return Whether the attributionDependencyGraph field is set.
     */
    @java.lang.Override
    public boolean hasAttributionDependencyGraph() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
     * @return The attributionDependencyGraph.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getAttributionDependencyGraph() {
      return attributionDependencyGraph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : attributionDependencyGraph_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getAttributionDependencyGraphOrBuilder() {
      return attributionDependencyGraph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : attributionDependencyGraph_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasAttributionDependencyGraph()) {
        if (!getAttributionDependencyGraph().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, text_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, begin_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(3, end_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(5, sentenceBegin_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt32(6, sentenceEnd_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeUInt32(7, tokenBegin_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeUInt32(8, tokenEnd_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, docid_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeUInt32(10, index_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, author_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, mention_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeUInt32(13, mentionBegin_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeUInt32(14, mentionEnd_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, mentionType_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, mentionSieve_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 17, speaker_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 18, speakerSieve_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 19, canonicalMention_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeUInt32(20, canonicalMentionBegin_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeUInt32(21, canonicalMentionEnd_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeMessage(22, getAttributionDependencyGraph());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, text_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, begin_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, end_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, sentenceBegin_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, sentenceEnd_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, tokenBegin_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(8, tokenEnd_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, docid_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(10, index_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, author_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, mention_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(13, mentionBegin_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(14, mentionEnd_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, mentionType_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, mentionSieve_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, speaker_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(18, speakerSieve_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(19, canonicalMention_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(20, canonicalMentionBegin_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(21, canonicalMentionEnd_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, getAttributionDependencyGraph());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Quote)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Quote other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Quote) obj;

      if (hasText() != other.hasText()) return false;
      if (hasText()) {
        if (!getText()
            .equals(other.getText())) return false;
      }
      if (hasBegin() != other.hasBegin()) return false;
      if (hasBegin()) {
        if (getBegin()
            != other.getBegin()) return false;
      }
      if (hasEnd() != other.hasEnd()) return false;
      if (hasEnd()) {
        if (getEnd()
            != other.getEnd()) return false;
      }
      if (hasSentenceBegin() != other.hasSentenceBegin()) return false;
      if (hasSentenceBegin()) {
        if (getSentenceBegin()
            != other.getSentenceBegin()) return false;
      }
      if (hasSentenceEnd() != other.hasSentenceEnd()) return false;
      if (hasSentenceEnd()) {
        if (getSentenceEnd()
            != other.getSentenceEnd()) return false;
      }
      if (hasTokenBegin() != other.hasTokenBegin()) return false;
      if (hasTokenBegin()) {
        if (getTokenBegin()
            != other.getTokenBegin()) return false;
      }
      if (hasTokenEnd() != other.hasTokenEnd()) return false;
      if (hasTokenEnd()) {
        if (getTokenEnd()
            != other.getTokenEnd()) return false;
      }
      if (hasDocid() != other.hasDocid()) return false;
      if (hasDocid()) {
        if (!getDocid()
            .equals(other.getDocid())) return false;
      }
      if (hasIndex() != other.hasIndex()) return false;
      if (hasIndex()) {
        if (getIndex()
            != other.getIndex()) return false;
      }
      if (hasAuthor() != other.hasAuthor()) return false;
      if (hasAuthor()) {
        if (!getAuthor()
            .equals(other.getAuthor())) return false;
      }
      if (hasMention() != other.hasMention()) return false;
      if (hasMention()) {
        if (!getMention()
            .equals(other.getMention())) return false;
      }
      if (hasMentionBegin() != other.hasMentionBegin()) return false;
      if (hasMentionBegin()) {
        if (getMentionBegin()
            != other.getMentionBegin()) return false;
      }
      if (hasMentionEnd() != other.hasMentionEnd()) return false;
      if (hasMentionEnd()) {
        if (getMentionEnd()
            != other.getMentionEnd()) return false;
      }
      if (hasMentionType() != other.hasMentionType()) return false;
      if (hasMentionType()) {
        if (!getMentionType()
            .equals(other.getMentionType())) return false;
      }
      if (hasMentionSieve() != other.hasMentionSieve()) return false;
      if (hasMentionSieve()) {
        if (!getMentionSieve()
            .equals(other.getMentionSieve())) return false;
      }
      if (hasSpeaker() != other.hasSpeaker()) return false;
      if (hasSpeaker()) {
        if (!getSpeaker()
            .equals(other.getSpeaker())) return false;
      }
      if (hasSpeakerSieve() != other.hasSpeakerSieve()) return false;
      if (hasSpeakerSieve()) {
        if (!getSpeakerSieve()
            .equals(other.getSpeakerSieve())) return false;
      }
      if (hasCanonicalMention() != other.hasCanonicalMention()) return false;
      if (hasCanonicalMention()) {
        if (!getCanonicalMention()
            .equals(other.getCanonicalMention())) return false;
      }
      if (hasCanonicalMentionBegin() != other.hasCanonicalMentionBegin()) return false;
      if (hasCanonicalMentionBegin()) {
        if (getCanonicalMentionBegin()
            != other.getCanonicalMentionBegin()) return false;
      }
      if (hasCanonicalMentionEnd() != other.hasCanonicalMentionEnd()) return false;
      if (hasCanonicalMentionEnd()) {
        if (getCanonicalMentionEnd()
            != other.getCanonicalMentionEnd()) return false;
      }
      if (hasAttributionDependencyGraph() != other.hasAttributionDependencyGraph()) return false;
      if (hasAttributionDependencyGraph()) {
        if (!getAttributionDependencyGraph()
            .equals(other.getAttributionDependencyGraph())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasText()) {
        hash = (37 * hash) + TEXT_FIELD_NUMBER;
        hash = (53 * hash) + getText().hashCode();
      }
      if (hasBegin()) {
        hash = (37 * hash) + BEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getBegin();
      }
      if (hasEnd()) {
        hash = (37 * hash) + END_FIELD_NUMBER;
        hash = (53 * hash) + getEnd();
      }
      if (hasSentenceBegin()) {
        hash = (37 * hash) + SENTENCEBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceBegin();
      }
      if (hasSentenceEnd()) {
        hash = (37 * hash) + SENTENCEEND_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceEnd();
      }
      if (hasTokenBegin()) {
        hash = (37 * hash) + TOKENBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getTokenBegin();
      }
      if (hasTokenEnd()) {
        hash = (37 * hash) + TOKENEND_FIELD_NUMBER;
        hash = (53 * hash) + getTokenEnd();
      }
      if (hasDocid()) {
        hash = (37 * hash) + DOCID_FIELD_NUMBER;
        hash = (53 * hash) + getDocid().hashCode();
      }
      if (hasIndex()) {
        hash = (37 * hash) + INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getIndex();
      }
      if (hasAuthor()) {
        hash = (37 * hash) + AUTHOR_FIELD_NUMBER;
        hash = (53 * hash) + getAuthor().hashCode();
      }
      if (hasMention()) {
        hash = (37 * hash) + MENTION_FIELD_NUMBER;
        hash = (53 * hash) + getMention().hashCode();
      }
      if (hasMentionBegin()) {
        hash = (37 * hash) + MENTIONBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getMentionBegin();
      }
      if (hasMentionEnd()) {
        hash = (37 * hash) + MENTIONEND_FIELD_NUMBER;
        hash = (53 * hash) + getMentionEnd();
      }
      if (hasMentionType()) {
        hash = (37 * hash) + MENTIONTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getMentionType().hashCode();
      }
      if (hasMentionSieve()) {
        hash = (37 * hash) + MENTIONSIEVE_FIELD_NUMBER;
        hash = (53 * hash) + getMentionSieve().hashCode();
      }
      if (hasSpeaker()) {
        hash = (37 * hash) + SPEAKER_FIELD_NUMBER;
        hash = (53 * hash) + getSpeaker().hashCode();
      }
      if (hasSpeakerSieve()) {
        hash = (37 * hash) + SPEAKERSIEVE_FIELD_NUMBER;
        hash = (53 * hash) + getSpeakerSieve().hashCode();
      }
      if (hasCanonicalMention()) {
        hash = (37 * hash) + CANONICALMENTION_FIELD_NUMBER;
        hash = (53 * hash) + getCanonicalMention().hashCode();
      }
      if (hasCanonicalMentionBegin()) {
        hash = (37 * hash) + CANONICALMENTIONBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getCanonicalMentionBegin();
      }
      if (hasCanonicalMentionEnd()) {
        hash = (37 * hash) + CANONICALMENTIONEND_FIELD_NUMBER;
        hash = (53 * hash) + getCanonicalMentionEnd();
      }
      if (hasAttributionDependencyGraph()) {
        hash = (37 * hash) + ATTRIBUTIONDEPENDENCYGRAPH_FIELD_NUMBER;
        hash = (53 * hash) + getAttributionDependencyGraph().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Quote prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A quotation marker in text
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Quote}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Quote)
        edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Quote_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Quote_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAttributionDependencyGraphFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        text_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        begin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        end_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        sentenceBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        sentenceEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        tokenBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        tokenEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        docid_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        index_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        author_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        mention_ = "";
        bitField0_ = (bitField0_ & ~0x00000400);
        mentionBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000800);
        mentionEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00001000);
        mentionType_ = "";
        bitField0_ = (bitField0_ & ~0x00002000);
        mentionSieve_ = "";
        bitField0_ = (bitField0_ & ~0x00004000);
        speaker_ = "";
        bitField0_ = (bitField0_ & ~0x00008000);
        speakerSieve_ = "";
        bitField0_ = (bitField0_ & ~0x00010000);
        canonicalMention_ = "";
        bitField0_ = (bitField0_ & ~0x00020000);
        canonicalMentionBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00040000);
        canonicalMentionEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00080000);
        if (attributionDependencyGraphBuilder_ == null) {
          attributionDependencyGraph_ = null;
        } else {
          attributionDependencyGraphBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00100000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Quote_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Quote result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Quote result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Quote(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.text_ = text_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.begin_ = begin_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.end_ = end_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.sentenceBegin_ = sentenceBegin_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.sentenceEnd_ = sentenceEnd_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.tokenBegin_ = tokenBegin_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.tokenEnd_ = tokenEnd_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          to_bitField0_ |= 0x00000080;
        }
        result.docid_ = docid_;
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.index_ = index_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          to_bitField0_ |= 0x00000200;
        }
        result.author_ = author_;
        if (((from_bitField0_ & 0x00000400) != 0)) {
          to_bitField0_ |= 0x00000400;
        }
        result.mention_ = mention_;
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.mentionBegin_ = mentionBegin_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.mentionEnd_ = mentionEnd_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          to_bitField0_ |= 0x00002000;
        }
        result.mentionType_ = mentionType_;
        if (((from_bitField0_ & 0x00004000) != 0)) {
          to_bitField0_ |= 0x00004000;
        }
        result.mentionSieve_ = mentionSieve_;
        if (((from_bitField0_ & 0x00008000) != 0)) {
          to_bitField0_ |= 0x00008000;
        }
        result.speaker_ = speaker_;
        if (((from_bitField0_ & 0x00010000) != 0)) {
          to_bitField0_ |= 0x00010000;
        }
        result.speakerSieve_ = speakerSieve_;
        if (((from_bitField0_ & 0x00020000) != 0)) {
          to_bitField0_ |= 0x00020000;
        }
        result.canonicalMention_ = canonicalMention_;
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.canonicalMentionBegin_ = canonicalMentionBegin_;
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.canonicalMentionEnd_ = canonicalMentionEnd_;
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          if (attributionDependencyGraphBuilder_ == null) {
            result.attributionDependencyGraph_ = attributionDependencyGraph_;
          } else {
            result.attributionDependencyGraph_ = attributionDependencyGraphBuilder_.build();
          }
          to_bitField0_ |= 0x00100000;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Quote) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Quote)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Quote other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.getDefaultInstance()) return this;
        if (other.hasText()) {
          bitField0_ |= 0x00000001;
          text_ = other.text_;
          onChanged();
        }
        if (other.hasBegin()) {
          setBegin(other.getBegin());
        }
        if (other.hasEnd()) {
          setEnd(other.getEnd());
        }
        if (other.hasSentenceBegin()) {
          setSentenceBegin(other.getSentenceBegin());
        }
        if (other.hasSentenceEnd()) {
          setSentenceEnd(other.getSentenceEnd());
        }
        if (other.hasTokenBegin()) {
          setTokenBegin(other.getTokenBegin());
        }
        if (other.hasTokenEnd()) {
          setTokenEnd(other.getTokenEnd());
        }
        if (other.hasDocid()) {
          bitField0_ |= 0x00000080;
          docid_ = other.docid_;
          onChanged();
        }
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        if (other.hasAuthor()) {
          bitField0_ |= 0x00000200;
          author_ = other.author_;
          onChanged();
        }
        if (other.hasMention()) {
          bitField0_ |= 0x00000400;
          mention_ = other.mention_;
          onChanged();
        }
        if (other.hasMentionBegin()) {
          setMentionBegin(other.getMentionBegin());
        }
        if (other.hasMentionEnd()) {
          setMentionEnd(other.getMentionEnd());
        }
        if (other.hasMentionType()) {
          bitField0_ |= 0x00002000;
          mentionType_ = other.mentionType_;
          onChanged();
        }
        if (other.hasMentionSieve()) {
          bitField0_ |= 0x00004000;
          mentionSieve_ = other.mentionSieve_;
          onChanged();
        }
        if (other.hasSpeaker()) {
          bitField0_ |= 0x00008000;
          speaker_ = other.speaker_;
          onChanged();
        }
        if (other.hasSpeakerSieve()) {
          bitField0_ |= 0x00010000;
          speakerSieve_ = other.speakerSieve_;
          onChanged();
        }
        if (other.hasCanonicalMention()) {
          bitField0_ |= 0x00020000;
          canonicalMention_ = other.canonicalMention_;
          onChanged();
        }
        if (other.hasCanonicalMentionBegin()) {
          setCanonicalMentionBegin(other.getCanonicalMentionBegin());
        }
        if (other.hasCanonicalMentionEnd()) {
          setCanonicalMentionEnd(other.getCanonicalMentionEnd());
        }
        if (other.hasAttributionDependencyGraph()) {
          mergeAttributionDependencyGraph(other.getAttributionDependencyGraph());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasAttributionDependencyGraph()) {
          if (!getAttributionDependencyGraph().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                text_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                begin_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                end_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 40: {
                sentenceBegin_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 40
              case 48: {
                sentenceEnd_ = input.readUInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 48
              case 56: {
                tokenBegin_ = input.readUInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 56
              case 64: {
                tokenEnd_ = input.readUInt32();
                bitField0_ |= 0x00000040;
                break;
              } // case 64
              case 74: {
                docid_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 74
              case 80: {
                index_ = input.readUInt32();
                bitField0_ |= 0x00000100;
                break;
              } // case 80
              case 90: {
                author_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 90
              case 98: {
                mention_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 98
              case 104: {
                mentionBegin_ = input.readUInt32();
                bitField0_ |= 0x00000800;
                break;
              } // case 104
              case 112: {
                mentionEnd_ = input.readUInt32();
                bitField0_ |= 0x00001000;
                break;
              } // case 112
              case 122: {
                mentionType_ = input.readBytes();
                bitField0_ |= 0x00002000;
                break;
              } // case 122
              case 130: {
                mentionSieve_ = input.readBytes();
                bitField0_ |= 0x00004000;
                break;
              } // case 130
              case 138: {
                speaker_ = input.readBytes();
                bitField0_ |= 0x00008000;
                break;
              } // case 138
              case 146: {
                speakerSieve_ = input.readBytes();
                bitField0_ |= 0x00010000;
                break;
              } // case 146
              case 154: {
                canonicalMention_ = input.readBytes();
                bitField0_ |= 0x00020000;
                break;
              } // case 154
              case 160: {
                canonicalMentionBegin_ = input.readUInt32();
                bitField0_ |= 0x00040000;
                break;
              } // case 160
              case 168: {
                canonicalMentionEnd_ = input.readUInt32();
                bitField0_ |= 0x00080000;
                break;
              } // case 168
              case 178: {
                input.readMessage(
                    getAttributionDependencyGraphFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00100000;
                break;
              } // case 178
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object text_ = "";
      /**
       * <code>optional string text = 1;</code>
       * @return Whether the text field is set.
       */
      public boolean hasText() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string text = 1;</code>
       * @return The text.
       */
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            text_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string text = 1;</code>
       * @return The bytes for text.
       */
      public com.google.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string text = 1;</code>
       * @param value The text to set.
       * @return This builder for chaining.
       */
      public Builder setText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string text = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearText() {
        bitField0_ = (bitField0_ & ~0x00000001);
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }
      /**
       * <code>optional string text = 1;</code>
       * @param value The bytes for text to set.
       * @return This builder for chaining.
       */
      public Builder setTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        text_ = value;
        onChanged();
        return this;
      }

      private int begin_ ;
      /**
       * <code>optional uint32 begin = 2;</code>
       * @return Whether the begin field is set.
       */
      @java.lang.Override
      public boolean hasBegin() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint32 begin = 2;</code>
       * @return The begin.
       */
      @java.lang.Override
      public int getBegin() {
        return begin_;
      }
      /**
       * <code>optional uint32 begin = 2;</code>
       * @param value The begin to set.
       * @return This builder for chaining.
       */
      public Builder setBegin(int value) {
        bitField0_ |= 0x00000002;
        begin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 begin = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBegin() {
        bitField0_ = (bitField0_ & ~0x00000002);
        begin_ = 0;
        onChanged();
        return this;
      }

      private int end_ ;
      /**
       * <code>optional uint32 end = 3;</code>
       * @return Whether the end field is set.
       */
      @java.lang.Override
      public boolean hasEnd() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional uint32 end = 3;</code>
       * @return The end.
       */
      @java.lang.Override
      public int getEnd() {
        return end_;
      }
      /**
       * <code>optional uint32 end = 3;</code>
       * @param value The end to set.
       * @return This builder for chaining.
       */
      public Builder setEnd(int value) {
        bitField0_ |= 0x00000004;
        end_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 end = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnd() {
        bitField0_ = (bitField0_ & ~0x00000004);
        end_ = 0;
        onChanged();
        return this;
      }

      private int sentenceBegin_ ;
      /**
       * <code>optional uint32 sentenceBegin = 5;</code>
       * @return Whether the sentenceBegin field is set.
       */
      @java.lang.Override
      public boolean hasSentenceBegin() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional uint32 sentenceBegin = 5;</code>
       * @return The sentenceBegin.
       */
      @java.lang.Override
      public int getSentenceBegin() {
        return sentenceBegin_;
      }
      /**
       * <code>optional uint32 sentenceBegin = 5;</code>
       * @param value The sentenceBegin to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceBegin(int value) {
        bitField0_ |= 0x00000008;
        sentenceBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 sentenceBegin = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentenceBegin() {
        bitField0_ = (bitField0_ & ~0x00000008);
        sentenceBegin_ = 0;
        onChanged();
        return this;
      }

      private int sentenceEnd_ ;
      /**
       * <code>optional uint32 sentenceEnd = 6;</code>
       * @return Whether the sentenceEnd field is set.
       */
      @java.lang.Override
      public boolean hasSentenceEnd() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional uint32 sentenceEnd = 6;</code>
       * @return The sentenceEnd.
       */
      @java.lang.Override
      public int getSentenceEnd() {
        return sentenceEnd_;
      }
      /**
       * <code>optional uint32 sentenceEnd = 6;</code>
       * @param value The sentenceEnd to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceEnd(int value) {
        bitField0_ |= 0x00000010;
        sentenceEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 sentenceEnd = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentenceEnd() {
        bitField0_ = (bitField0_ & ~0x00000010);
        sentenceEnd_ = 0;
        onChanged();
        return this;
      }

      private int tokenBegin_ ;
      /**
       * <code>optional uint32 tokenBegin = 7;</code>
       * @return Whether the tokenBegin field is set.
       */
      @java.lang.Override
      public boolean hasTokenBegin() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint32 tokenBegin = 7;</code>
       * @return The tokenBegin.
       */
      @java.lang.Override
      public int getTokenBegin() {
        return tokenBegin_;
      }
      /**
       * <code>optional uint32 tokenBegin = 7;</code>
       * @param value The tokenBegin to set.
       * @return This builder for chaining.
       */
      public Builder setTokenBegin(int value) {
        bitField0_ |= 0x00000020;
        tokenBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 tokenBegin = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenBegin() {
        bitField0_ = (bitField0_ & ~0x00000020);
        tokenBegin_ = 0;
        onChanged();
        return this;
      }

      private int tokenEnd_ ;
      /**
       * <code>optional uint32 tokenEnd = 8;</code>
       * @return Whether the tokenEnd field is set.
       */
      @java.lang.Override
      public boolean hasTokenEnd() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional uint32 tokenEnd = 8;</code>
       * @return The tokenEnd.
       */
      @java.lang.Override
      public int getTokenEnd() {
        return tokenEnd_;
      }
      /**
       * <code>optional uint32 tokenEnd = 8;</code>
       * @param value The tokenEnd to set.
       * @return This builder for chaining.
       */
      public Builder setTokenEnd(int value) {
        bitField0_ |= 0x00000040;
        tokenEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 tokenEnd = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenEnd() {
        bitField0_ = (bitField0_ & ~0x00000040);
        tokenEnd_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object docid_ = "";
      /**
       * <code>optional string docid = 9;</code>
       * @return Whether the docid field is set.
       */
      public boolean hasDocid() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional string docid = 9;</code>
       * @return The docid.
       */
      public java.lang.String getDocid() {
        java.lang.Object ref = docid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            docid_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string docid = 9;</code>
       * @return The bytes for docid.
       */
      public com.google.protobuf.ByteString
          getDocidBytes() {
        java.lang.Object ref = docid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          docid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string docid = 9;</code>
       * @param value The docid to set.
       * @return This builder for chaining.
       */
      public Builder setDocid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        docid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string docid = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearDocid() {
        bitField0_ = (bitField0_ & ~0x00000080);
        docid_ = getDefaultInstance().getDocid();
        onChanged();
        return this;
      }
      /**
       * <code>optional string docid = 9;</code>
       * @param value The bytes for docid to set.
       * @return This builder for chaining.
       */
      public Builder setDocidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        docid_ = value;
        onChanged();
        return this;
      }

      private int index_ ;
      /**
       * <code>optional uint32 index = 10;</code>
       * @return Whether the index field is set.
       */
      @java.lang.Override
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional uint32 index = 10;</code>
       * @return The index.
       */
      @java.lang.Override
      public int getIndex() {
        return index_;
      }
      /**
       * <code>optional uint32 index = 10;</code>
       * @param value The index to set.
       * @return This builder for chaining.
       */
      public Builder setIndex(int value) {
        bitField0_ |= 0x00000100;
        index_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 index = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000100);
        index_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object author_ = "";
      /**
       * <code>optional string author = 11;</code>
       * @return Whether the author field is set.
       */
      public boolean hasAuthor() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string author = 11;</code>
       * @return The author.
       */
      public java.lang.String getAuthor() {
        java.lang.Object ref = author_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            author_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string author = 11;</code>
       * @return The bytes for author.
       */
      public com.google.protobuf.ByteString
          getAuthorBytes() {
        java.lang.Object ref = author_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          author_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string author = 11;</code>
       * @param value The author to set.
       * @return This builder for chaining.
       */
      public Builder setAuthor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        author_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string author = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearAuthor() {
        bitField0_ = (bitField0_ & ~0x00000200);
        author_ = getDefaultInstance().getAuthor();
        onChanged();
        return this;
      }
      /**
       * <code>optional string author = 11;</code>
       * @param value The bytes for author to set.
       * @return This builder for chaining.
       */
      public Builder setAuthorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        author_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object mention_ = "";
      /**
       * <code>optional string mention = 12;</code>
       * @return Whether the mention field is set.
       */
      public boolean hasMention() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional string mention = 12;</code>
       * @return The mention.
       */
      public java.lang.String getMention() {
        java.lang.Object ref = mention_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mention_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string mention = 12;</code>
       * @return The bytes for mention.
       */
      public com.google.protobuf.ByteString
          getMentionBytes() {
        java.lang.Object ref = mention_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mention_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string mention = 12;</code>
       * @param value The mention to set.
       * @return This builder for chaining.
       */
      public Builder setMention(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        mention_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string mention = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearMention() {
        bitField0_ = (bitField0_ & ~0x00000400);
        mention_ = getDefaultInstance().getMention();
        onChanged();
        return this;
      }
      /**
       * <code>optional string mention = 12;</code>
       * @param value The bytes for mention to set.
       * @return This builder for chaining.
       */
      public Builder setMentionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        mention_ = value;
        onChanged();
        return this;
      }

      private int mentionBegin_ ;
      /**
       * <code>optional uint32 mentionBegin = 13;</code>
       * @return Whether the mentionBegin field is set.
       */
      @java.lang.Override
      public boolean hasMentionBegin() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional uint32 mentionBegin = 13;</code>
       * @return The mentionBegin.
       */
      @java.lang.Override
      public int getMentionBegin() {
        return mentionBegin_;
      }
      /**
       * <code>optional uint32 mentionBegin = 13;</code>
       * @param value The mentionBegin to set.
       * @return This builder for chaining.
       */
      public Builder setMentionBegin(int value) {
        bitField0_ |= 0x00000800;
        mentionBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 mentionBegin = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentionBegin() {
        bitField0_ = (bitField0_ & ~0x00000800);
        mentionBegin_ = 0;
        onChanged();
        return this;
      }

      private int mentionEnd_ ;
      /**
       * <code>optional uint32 mentionEnd = 14;</code>
       * @return Whether the mentionEnd field is set.
       */
      @java.lang.Override
      public boolean hasMentionEnd() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional uint32 mentionEnd = 14;</code>
       * @return The mentionEnd.
       */
      @java.lang.Override
      public int getMentionEnd() {
        return mentionEnd_;
      }
      /**
       * <code>optional uint32 mentionEnd = 14;</code>
       * @param value The mentionEnd to set.
       * @return This builder for chaining.
       */
      public Builder setMentionEnd(int value) {
        bitField0_ |= 0x00001000;
        mentionEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 mentionEnd = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentionEnd() {
        bitField0_ = (bitField0_ & ~0x00001000);
        mentionEnd_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object mentionType_ = "";
      /**
       * <code>optional string mentionType = 15;</code>
       * @return Whether the mentionType field is set.
       */
      public boolean hasMentionType() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>optional string mentionType = 15;</code>
       * @return The mentionType.
       */
      public java.lang.String getMentionType() {
        java.lang.Object ref = mentionType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mentionType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string mentionType = 15;</code>
       * @return The bytes for mentionType.
       */
      public com.google.protobuf.ByteString
          getMentionTypeBytes() {
        java.lang.Object ref = mentionType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mentionType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string mentionType = 15;</code>
       * @param value The mentionType to set.
       * @return This builder for chaining.
       */
      public Builder setMentionType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00002000;
        mentionType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string mentionType = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentionType() {
        bitField0_ = (bitField0_ & ~0x00002000);
        mentionType_ = getDefaultInstance().getMentionType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string mentionType = 15;</code>
       * @param value The bytes for mentionType to set.
       * @return This builder for chaining.
       */
      public Builder setMentionTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00002000;
        mentionType_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object mentionSieve_ = "";
      /**
       * <code>optional string mentionSieve = 16;</code>
       * @return Whether the mentionSieve field is set.
       */
      public boolean hasMentionSieve() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <code>optional string mentionSieve = 16;</code>
       * @return The mentionSieve.
       */
      public java.lang.String getMentionSieve() {
        java.lang.Object ref = mentionSieve_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mentionSieve_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string mentionSieve = 16;</code>
       * @return The bytes for mentionSieve.
       */
      public com.google.protobuf.ByteString
          getMentionSieveBytes() {
        java.lang.Object ref = mentionSieve_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mentionSieve_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string mentionSieve = 16;</code>
       * @param value The mentionSieve to set.
       * @return This builder for chaining.
       */
      public Builder setMentionSieve(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00004000;
        mentionSieve_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string mentionSieve = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentionSieve() {
        bitField0_ = (bitField0_ & ~0x00004000);
        mentionSieve_ = getDefaultInstance().getMentionSieve();
        onChanged();
        return this;
      }
      /**
       * <code>optional string mentionSieve = 16;</code>
       * @param value The bytes for mentionSieve to set.
       * @return This builder for chaining.
       */
      public Builder setMentionSieveBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00004000;
        mentionSieve_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object speaker_ = "";
      /**
       * <code>optional string speaker = 17;</code>
       * @return Whether the speaker field is set.
       */
      public boolean hasSpeaker() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <code>optional string speaker = 17;</code>
       * @return The speaker.
       */
      public java.lang.String getSpeaker() {
        java.lang.Object ref = speaker_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            speaker_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string speaker = 17;</code>
       * @return The bytes for speaker.
       */
      public com.google.protobuf.ByteString
          getSpeakerBytes() {
        java.lang.Object ref = speaker_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          speaker_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string speaker = 17;</code>
       * @param value The speaker to set.
       * @return This builder for chaining.
       */
      public Builder setSpeaker(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00008000;
        speaker_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string speaker = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpeaker() {
        bitField0_ = (bitField0_ & ~0x00008000);
        speaker_ = getDefaultInstance().getSpeaker();
        onChanged();
        return this;
      }
      /**
       * <code>optional string speaker = 17;</code>
       * @param value The bytes for speaker to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00008000;
        speaker_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object speakerSieve_ = "";
      /**
       * <code>optional string speakerSieve = 18;</code>
       * @return Whether the speakerSieve field is set.
       */
      public boolean hasSpeakerSieve() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <code>optional string speakerSieve = 18;</code>
       * @return The speakerSieve.
       */
      public java.lang.String getSpeakerSieve() {
        java.lang.Object ref = speakerSieve_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            speakerSieve_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string speakerSieve = 18;</code>
       * @return The bytes for speakerSieve.
       */
      public com.google.protobuf.ByteString
          getSpeakerSieveBytes() {
        java.lang.Object ref = speakerSieve_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          speakerSieve_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string speakerSieve = 18;</code>
       * @param value The speakerSieve to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerSieve(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00010000;
        speakerSieve_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string speakerSieve = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpeakerSieve() {
        bitField0_ = (bitField0_ & ~0x00010000);
        speakerSieve_ = getDefaultInstance().getSpeakerSieve();
        onChanged();
        return this;
      }
      /**
       * <code>optional string speakerSieve = 18;</code>
       * @param value The bytes for speakerSieve to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerSieveBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00010000;
        speakerSieve_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object canonicalMention_ = "";
      /**
       * <code>optional string canonicalMention = 19;</code>
       * @return Whether the canonicalMention field is set.
       */
      public boolean hasCanonicalMention() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <code>optional string canonicalMention = 19;</code>
       * @return The canonicalMention.
       */
      public java.lang.String getCanonicalMention() {
        java.lang.Object ref = canonicalMention_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            canonicalMention_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string canonicalMention = 19;</code>
       * @return The bytes for canonicalMention.
       */
      public com.google.protobuf.ByteString
          getCanonicalMentionBytes() {
        java.lang.Object ref = canonicalMention_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          canonicalMention_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string canonicalMention = 19;</code>
       * @param value The canonicalMention to set.
       * @return This builder for chaining.
       */
      public Builder setCanonicalMention(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00020000;
        canonicalMention_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string canonicalMention = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanonicalMention() {
        bitField0_ = (bitField0_ & ~0x00020000);
        canonicalMention_ = getDefaultInstance().getCanonicalMention();
        onChanged();
        return this;
      }
      /**
       * <code>optional string canonicalMention = 19;</code>
       * @param value The bytes for canonicalMention to set.
       * @return This builder for chaining.
       */
      public Builder setCanonicalMentionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00020000;
        canonicalMention_ = value;
        onChanged();
        return this;
      }

      private int canonicalMentionBegin_ ;
      /**
       * <code>optional uint32 canonicalMentionBegin = 20;</code>
       * @return Whether the canonicalMentionBegin field is set.
       */
      @java.lang.Override
      public boolean hasCanonicalMentionBegin() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <code>optional uint32 canonicalMentionBegin = 20;</code>
       * @return The canonicalMentionBegin.
       */
      @java.lang.Override
      public int getCanonicalMentionBegin() {
        return canonicalMentionBegin_;
      }
      /**
       * <code>optional uint32 canonicalMentionBegin = 20;</code>
       * @param value The canonicalMentionBegin to set.
       * @return This builder for chaining.
       */
      public Builder setCanonicalMentionBegin(int value) {
        bitField0_ |= 0x00040000;
        canonicalMentionBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 canonicalMentionBegin = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanonicalMentionBegin() {
        bitField0_ = (bitField0_ & ~0x00040000);
        canonicalMentionBegin_ = 0;
        onChanged();
        return this;
      }

      private int canonicalMentionEnd_ ;
      /**
       * <code>optional uint32 canonicalMentionEnd = 21;</code>
       * @return Whether the canonicalMentionEnd field is set.
       */
      @java.lang.Override
      public boolean hasCanonicalMentionEnd() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <code>optional uint32 canonicalMentionEnd = 21;</code>
       * @return The canonicalMentionEnd.
       */
      @java.lang.Override
      public int getCanonicalMentionEnd() {
        return canonicalMentionEnd_;
      }
      /**
       * <code>optional uint32 canonicalMentionEnd = 21;</code>
       * @param value The canonicalMentionEnd to set.
       * @return This builder for chaining.
       */
      public Builder setCanonicalMentionEnd(int value) {
        bitField0_ |= 0x00080000;
        canonicalMentionEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 canonicalMentionEnd = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanonicalMentionEnd() {
        bitField0_ = (bitField0_ & ~0x00080000);
        canonicalMentionEnd_ = 0;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph attributionDependencyGraph_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> attributionDependencyGraphBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       * @return Whether the attributionDependencyGraph field is set.
       */
      public boolean hasAttributionDependencyGraph() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       * @return The attributionDependencyGraph.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getAttributionDependencyGraph() {
        if (attributionDependencyGraphBuilder_ == null) {
          return attributionDependencyGraph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : attributionDependencyGraph_;
        } else {
          return attributionDependencyGraphBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       */
      public Builder setAttributionDependencyGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (attributionDependencyGraphBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributionDependencyGraph_ = value;
          onChanged();
        } else {
          attributionDependencyGraphBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00100000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       */
      public Builder setAttributionDependencyGraph(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (attributionDependencyGraphBuilder_ == null) {
          attributionDependencyGraph_ = builderForValue.build();
          onChanged();
        } else {
          attributionDependencyGraphBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00100000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       */
      public Builder mergeAttributionDependencyGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (attributionDependencyGraphBuilder_ == null) {
          if (((bitField0_ & 0x00100000) != 0) &&
              attributionDependencyGraph_ != null &&
              attributionDependencyGraph_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
            attributionDependencyGraph_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(attributionDependencyGraph_).mergeFrom(value).buildPartial();
          } else {
            attributionDependencyGraph_ = value;
          }
          onChanged();
        } else {
          attributionDependencyGraphBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00100000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       */
      public Builder clearAttributionDependencyGraph() {
        if (attributionDependencyGraphBuilder_ == null) {
          attributionDependencyGraph_ = null;
          onChanged();
        } else {
          attributionDependencyGraphBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00100000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getAttributionDependencyGraphBuilder() {
        bitField0_ |= 0x00100000;
        onChanged();
        return getAttributionDependencyGraphFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getAttributionDependencyGraphOrBuilder() {
        if (attributionDependencyGraphBuilder_ != null) {
          return attributionDependencyGraphBuilder_.getMessageOrBuilder();
        } else {
          return attributionDependencyGraph_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : attributionDependencyGraph_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph attributionDependencyGraph = 22;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getAttributionDependencyGraphFieldBuilder() {
        if (attributionDependencyGraphBuilder_ == null) {
          attributionDependencyGraphBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  getAttributionDependencyGraph(),
                  getParentForChildren(),
                  isClean());
          attributionDependencyGraph_ = null;
        }
        return attributionDependencyGraphBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Quote)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Quote)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Quote DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Quote();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Quote>
        PARSER = new com.google.protobuf.AbstractParser<Quote>() {
      @java.lang.Override
      public Quote parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Quote> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Quote> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ParseTreeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.ParseTree)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> 
        getChildList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getChild(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    int getChildCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
        getChildOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getChildOrBuilder(
        int index);

    /**
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <code>optional uint32 yieldBeginIndex = 3;</code>
     * @return Whether the yieldBeginIndex field is set.
     */
    boolean hasYieldBeginIndex();
    /**
     * <code>optional uint32 yieldBeginIndex = 3;</code>
     * @return The yieldBeginIndex.
     */
    int getYieldBeginIndex();

    /**
     * <code>optional uint32 yieldEndIndex = 4;</code>
     * @return Whether the yieldEndIndex field is set.
     */
    boolean hasYieldEndIndex();
    /**
     * <code>optional uint32 yieldEndIndex = 4;</code>
     * @return The yieldEndIndex.
     */
    int getYieldEndIndex();

    /**
     * <code>optional double score = 5;</code>
     * @return Whether the score field is set.
     */
    boolean hasScore();
    /**
     * <code>optional double score = 5;</code>
     * @return The score.
     */
    double getScore();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.Sentiment sentiment = 6;</code>
     * @return Whether the sentiment field is set.
     */
    boolean hasSentiment();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Sentiment sentiment = 6;</code>
     * @return The sentiment.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment getSentiment();
  }
  /**
   * <pre>
   * A syntactic parse tree, with scores.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.ParseTree}
   */
  public static final class ParseTree extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.ParseTree)
      ParseTreeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ParseTree.newBuilder() to construct.
    private ParseTree(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ParseTree() {
      child_ = java.util.Collections.emptyList();
      value_ = "";
      sentiment_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ParseTree();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_ParseTree_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_ParseTree_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.class, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder.class);
    }

    private int bitField0_;
    public static final int CHILD_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> child_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> getChildList() {
      return child_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
        getChildOrBuilderList() {
      return child_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    @java.lang.Override
    public int getChildCount() {
      return child_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getChild(int index) {
      return child_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getChildOrBuilder(
        int index) {
      return child_.get(index);
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private volatile java.lang.Object value_;
    /**
     * <code>optional string value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string value = 2;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int YIELDBEGININDEX_FIELD_NUMBER = 3;
    private int yieldBeginIndex_;
    /**
     * <code>optional uint32 yieldBeginIndex = 3;</code>
     * @return Whether the yieldBeginIndex field is set.
     */
    @java.lang.Override
    public boolean hasYieldBeginIndex() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint32 yieldBeginIndex = 3;</code>
     * @return The yieldBeginIndex.
     */
    @java.lang.Override
    public int getYieldBeginIndex() {
      return yieldBeginIndex_;
    }

    public static final int YIELDENDINDEX_FIELD_NUMBER = 4;
    private int yieldEndIndex_;
    /**
     * <code>optional uint32 yieldEndIndex = 4;</code>
     * @return Whether the yieldEndIndex field is set.
     */
    @java.lang.Override
    public boolean hasYieldEndIndex() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional uint32 yieldEndIndex = 4;</code>
     * @return The yieldEndIndex.
     */
    @java.lang.Override
    public int getYieldEndIndex() {
      return yieldEndIndex_;
    }

    public static final int SCORE_FIELD_NUMBER = 5;
    private double score_;
    /**
     * <code>optional double score = 5;</code>
     * @return Whether the score field is set.
     */
    @java.lang.Override
    public boolean hasScore() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional double score = 5;</code>
     * @return The score.
     */
    @java.lang.Override
    public double getScore() {
      return score_;
    }

    public static final int SENTIMENT_FIELD_NUMBER = 6;
    private int sentiment_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Sentiment sentiment = 6;</code>
     * @return Whether the sentiment field is set.
     */
    @java.lang.Override public boolean hasSentiment() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Sentiment sentiment = 6;</code>
     * @return The sentiment.
     */
    @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment getSentiment() {
      @SuppressWarnings("deprecation")
      edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment result = edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment.valueOf(sentiment_);
      return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment.STRONG_NEGATIVE : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < child_.size(); i++) {
        output.writeMessage(1, child_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(3, yieldBeginIndex_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(4, yieldEndIndex_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeDouble(5, score_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeEnum(6, sentiment_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < child_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, child_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, yieldBeginIndex_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, yieldEndIndex_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(5, score_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, sentiment_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree other = (edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree) obj;

      if (!getChildList()
          .equals(other.getChildList())) return false;
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (hasYieldBeginIndex() != other.hasYieldBeginIndex()) return false;
      if (hasYieldBeginIndex()) {
        if (getYieldBeginIndex()
            != other.getYieldBeginIndex()) return false;
      }
      if (hasYieldEndIndex() != other.hasYieldEndIndex()) return false;
      if (hasYieldEndIndex()) {
        if (getYieldEndIndex()
            != other.getYieldEndIndex()) return false;
      }
      if (hasScore() != other.hasScore()) return false;
      if (hasScore()) {
        if (java.lang.Double.doubleToLongBits(getScore())
            != java.lang.Double.doubleToLongBits(
                other.getScore())) return false;
      }
      if (hasSentiment() != other.hasSentiment()) return false;
      if (hasSentiment()) {
        if (sentiment_ != other.sentiment_) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getChildCount() > 0) {
        hash = (37 * hash) + CHILD_FIELD_NUMBER;
        hash = (53 * hash) + getChildList().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      if (hasYieldBeginIndex()) {
        hash = (37 * hash) + YIELDBEGININDEX_FIELD_NUMBER;
        hash = (53 * hash) + getYieldBeginIndex();
      }
      if (hasYieldEndIndex()) {
        hash = (37 * hash) + YIELDENDINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getYieldEndIndex();
      }
      if (hasScore()) {
        hash = (37 * hash) + SCORE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getScore()));
      }
      if (hasSentiment()) {
        hash = (37 * hash) + SENTIMENT_FIELD_NUMBER;
        hash = (53 * hash) + sentiment_;
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A syntactic parse tree, with scores.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.ParseTree}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.ParseTree)
        edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_ParseTree_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_ParseTree_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.class, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (childBuilder_ == null) {
          child_ = java.util.Collections.emptyList();
        } else {
          child_ = null;
          childBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        yieldBeginIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        yieldEndIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        score_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000010);
        sentiment_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_ParseTree_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree result = new edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (childBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            child_ = java.util.Collections.unmodifiableList(child_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.child_ = child_;
        } else {
          result.child_ = childBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.yieldBeginIndex_ = yieldBeginIndex_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.yieldEndIndex_ = yieldEndIndex_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.score_ = score_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x00000010;
        }
        result.sentiment_ = sentiment_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance()) return this;
        if (childBuilder_ == null) {
          if (!other.child_.isEmpty()) {
            if (child_.isEmpty()) {
              child_ = other.child_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureChildIsMutable();
              child_.addAll(other.child_);
            }
            onChanged();
          }
        } else {
          if (!other.child_.isEmpty()) {
            if (childBuilder_.isEmpty()) {
              childBuilder_.dispose();
              childBuilder_ = null;
              child_ = other.child_;
              bitField0_ = (bitField0_ & ~0x00000001);
              childBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getChildFieldBuilder() : null;
            } else {
              childBuilder_.addAllMessages(other.child_);
            }
          }
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        if (other.hasYieldBeginIndex()) {
          setYieldBeginIndex(other.getYieldBeginIndex());
        }
        if (other.hasYieldEndIndex()) {
          setYieldEndIndex(other.getYieldEndIndex());
        }
        if (other.hasScore()) {
          setScore(other.getScore());
        }
        if (other.hasSentiment()) {
          setSentiment(other.getSentiment());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.PARSER,
                        extensionRegistry);
                if (childBuilder_ == null) {
                  ensureChildIsMutable();
                  child_.add(m);
                } else {
                  childBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                value_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                yieldBeginIndex_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                yieldEndIndex_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 41: {
                score_ = input.readDouble();
                bitField0_ |= 0x00000010;
                break;
              } // case 41
              case 48: {
                int tmpRaw = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment tmpValue =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(6, tmpRaw);
                } else {
                  sentiment_ = tmpRaw;
                  bitField0_ |= 0x00000020;
                }
                break;
              } // case 48
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> child_ =
        java.util.Collections.emptyList();
      private void ensureChildIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          child_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree>(child_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> childBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> getChildList() {
        if (childBuilder_ == null) {
          return java.util.Collections.unmodifiableList(child_);
        } else {
          return childBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public int getChildCount() {
        if (childBuilder_ == null) {
          return child_.size();
        } else {
          return childBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getChild(int index) {
        if (childBuilder_ == null) {
          return child_.get(index);
        } else {
          return childBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder setChild(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (childBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildIsMutable();
          child_.set(index, value);
          onChanged();
        } else {
          childBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder setChild(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (childBuilder_ == null) {
          ensureChildIsMutable();
          child_.set(index, builderForValue.build());
          onChanged();
        } else {
          childBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder addChild(edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (childBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildIsMutable();
          child_.add(value);
          onChanged();
        } else {
          childBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder addChild(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree value) {
        if (childBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildIsMutable();
          child_.add(index, value);
          onChanged();
        } else {
          childBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder addChild(
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (childBuilder_ == null) {
          ensureChildIsMutable();
          child_.add(builderForValue.build());
          onChanged();
        } else {
          childBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder addChild(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder builderForValue) {
        if (childBuilder_ == null) {
          ensureChildIsMutable();
          child_.add(index, builderForValue.build());
          onChanged();
        } else {
          childBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder addAllChild(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree> values) {
        if (childBuilder_ == null) {
          ensureChildIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, child_);
          onChanged();
        } else {
          childBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder clearChild() {
        if (childBuilder_ == null) {
          child_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          childBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public Builder removeChild(int index) {
        if (childBuilder_ == null) {
          ensureChildIsMutable();
          child_.remove(index);
          onChanged();
        } else {
          childBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder getChildBuilder(
          int index) {
        return getChildFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder getChildOrBuilder(
          int index) {
        if (childBuilder_ == null) {
          return child_.get(index);  } else {
          return childBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
           getChildOrBuilderList() {
        if (childBuilder_ != null) {
          return childBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(child_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder addChildBuilder() {
        return getChildFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder addChildBuilder(
          int index) {
        return getChildFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.ParseTree child = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder> 
           getChildBuilderList() {
        return getChildFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder> 
          getChildFieldBuilder() {
        if (childBuilder_ == null) {
          childBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTreeOrBuilder>(
                  child_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          child_ = null;
        }
        return childBuilder_;
      }

      private java.lang.Object value_ = "";
      /**
       * <code>optional string value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string value = 2;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string value = 2;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>optional string value = 2;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }

      private int yieldBeginIndex_ ;
      /**
       * <code>optional uint32 yieldBeginIndex = 3;</code>
       * @return Whether the yieldBeginIndex field is set.
       */
      @java.lang.Override
      public boolean hasYieldBeginIndex() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional uint32 yieldBeginIndex = 3;</code>
       * @return The yieldBeginIndex.
       */
      @java.lang.Override
      public int getYieldBeginIndex() {
        return yieldBeginIndex_;
      }
      /**
       * <code>optional uint32 yieldBeginIndex = 3;</code>
       * @param value The yieldBeginIndex to set.
       * @return This builder for chaining.
       */
      public Builder setYieldBeginIndex(int value) {
        bitField0_ |= 0x00000004;
        yieldBeginIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 yieldBeginIndex = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearYieldBeginIndex() {
        bitField0_ = (bitField0_ & ~0x00000004);
        yieldBeginIndex_ = 0;
        onChanged();
        return this;
      }

      private int yieldEndIndex_ ;
      /**
       * <code>optional uint32 yieldEndIndex = 4;</code>
       * @return Whether the yieldEndIndex field is set.
       */
      @java.lang.Override
      public boolean hasYieldEndIndex() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional uint32 yieldEndIndex = 4;</code>
       * @return The yieldEndIndex.
       */
      @java.lang.Override
      public int getYieldEndIndex() {
        return yieldEndIndex_;
      }
      /**
       * <code>optional uint32 yieldEndIndex = 4;</code>
       * @param value The yieldEndIndex to set.
       * @return This builder for chaining.
       */
      public Builder setYieldEndIndex(int value) {
        bitField0_ |= 0x00000008;
        yieldEndIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 yieldEndIndex = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearYieldEndIndex() {
        bitField0_ = (bitField0_ & ~0x00000008);
        yieldEndIndex_ = 0;
        onChanged();
        return this;
      }

      private double score_ ;
      /**
       * <code>optional double score = 5;</code>
       * @return Whether the score field is set.
       */
      @java.lang.Override
      public boolean hasScore() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional double score = 5;</code>
       * @return The score.
       */
      @java.lang.Override
      public double getScore() {
        return score_;
      }
      /**
       * <code>optional double score = 5;</code>
       * @param value The score to set.
       * @return This builder for chaining.
       */
      public Builder setScore(double value) {
        bitField0_ |= 0x00000010;
        score_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional double score = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearScore() {
        bitField0_ = (bitField0_ & ~0x00000010);
        score_ = 0D;
        onChanged();
        return this;
      }

      private int sentiment_ = 0;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Sentiment sentiment = 6;</code>
       * @return Whether the sentiment field is set.
       */
      @java.lang.Override public boolean hasSentiment() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Sentiment sentiment = 6;</code>
       * @return The sentiment.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment getSentiment() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment result = edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment.valueOf(sentiment_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment.STRONG_NEGATIVE : result;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Sentiment sentiment = 6;</code>
       * @param value The sentiment to set.
       * @return This builder for chaining.
       */
      public Builder setSentiment(edu.stanford.nlp.pipeline.CoreNLPProtos.Sentiment value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        sentiment_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Sentiment sentiment = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentiment() {
        bitField0_ = (bitField0_ & ~0x00000020);
        sentiment_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.ParseTree)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.ParseTree)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ParseTree>
        PARSER = new com.google.protobuf.AbstractParser<ParseTree>() {
      @java.lang.Override
      public ParseTree parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ParseTree> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ParseTree> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.ParseTree getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DependencyGraphOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.DependencyGraph)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node> 
        getNodeList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node getNode(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    int getNodeCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder> 
        getNodeOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder getNodeOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge> 
        getEdgeList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge getEdge(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    int getEdgeCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder> 
        getEdgeOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder getEdgeOrBuilder(
        int index);

    /**
     * <code>repeated uint32 root = 3 [packed = true];</code>
     * @return A list containing the root.
     */
    java.util.List<java.lang.Integer> getRootList();
    /**
     * <code>repeated uint32 root = 3 [packed = true];</code>
     * @return The count of root.
     */
    int getRootCount();
    /**
     * <code>repeated uint32 root = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The root at the given index.
     */
    int getRoot(int index);

    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> 
        getTokenList();
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index);
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    int getTokenCount();
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getTokenOrBuilderList();
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A dependency graph representation.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyGraph}
   */
  public static final class DependencyGraph extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.DependencyGraph)
      DependencyGraphOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DependencyGraph.newBuilder() to construct.
    private DependencyGraph(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DependencyGraph() {
      node_ = java.util.Collections.emptyList();
      edge_ = java.util.Collections.emptyList();
      root_ = emptyIntList();
      token_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DependencyGraph();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder.class);
    }

    public interface NodeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.DependencyGraph.Node)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required uint32 sentenceIndex = 1;</code>
       * @return Whether the sentenceIndex field is set.
       */
      boolean hasSentenceIndex();
      /**
       * <code>required uint32 sentenceIndex = 1;</code>
       * @return The sentenceIndex.
       */
      int getSentenceIndex();

      /**
       * <code>required uint32 index = 2;</code>
       * @return Whether the index field is set.
       */
      boolean hasIndex();
      /**
       * <code>required uint32 index = 2;</code>
       * @return The index.
       */
      int getIndex();

      /**
       * <code>optional uint32 copyAnnotation = 3;</code>
       * @return Whether the copyAnnotation field is set.
       */
      boolean hasCopyAnnotation();
      /**
       * <code>optional uint32 copyAnnotation = 3;</code>
       * @return The copyAnnotation.
       */
      int getCopyAnnotation();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyGraph.Node}
     */
    public static final class Node extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.DependencyGraph.Node)
        NodeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Node.newBuilder() to construct.
      private Node(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Node() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Node();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder.class);
      }

      private int bitField0_;
      public static final int SENTENCEINDEX_FIELD_NUMBER = 1;
      private int sentenceIndex_;
      /**
       * <code>required uint32 sentenceIndex = 1;</code>
       * @return Whether the sentenceIndex field is set.
       */
      @java.lang.Override
      public boolean hasSentenceIndex() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required uint32 sentenceIndex = 1;</code>
       * @return The sentenceIndex.
       */
      @java.lang.Override
      public int getSentenceIndex() {
        return sentenceIndex_;
      }

      public static final int INDEX_FIELD_NUMBER = 2;
      private int index_;
      /**
       * <code>required uint32 index = 2;</code>
       * @return Whether the index field is set.
       */
      @java.lang.Override
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint32 index = 2;</code>
       * @return The index.
       */
      @java.lang.Override
      public int getIndex() {
        return index_;
      }

      public static final int COPYANNOTATION_FIELD_NUMBER = 3;
      private int copyAnnotation_;
      /**
       * <code>optional uint32 copyAnnotation = 3;</code>
       * @return Whether the copyAnnotation field is set.
       */
      @java.lang.Override
      public boolean hasCopyAnnotation() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional uint32 copyAnnotation = 3;</code>
       * @return The copyAnnotation.
       */
      @java.lang.Override
      public int getCopyAnnotation() {
        return copyAnnotation_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasSentenceIndex()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasIndex()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeUInt32(1, sentenceIndex_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeUInt32(2, index_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeUInt32(3, copyAnnotation_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, sentenceIndex_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, index_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, copyAnnotation_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node other = (edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node) obj;

        if (hasSentenceIndex() != other.hasSentenceIndex()) return false;
        if (hasSentenceIndex()) {
          if (getSentenceIndex()
              != other.getSentenceIndex()) return false;
        }
        if (hasIndex() != other.hasIndex()) return false;
        if (hasIndex()) {
          if (getIndex()
              != other.getIndex()) return false;
        }
        if (hasCopyAnnotation() != other.hasCopyAnnotation()) return false;
        if (hasCopyAnnotation()) {
          if (getCopyAnnotation()
              != other.getCopyAnnotation()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSentenceIndex()) {
          hash = (37 * hash) + SENTENCEINDEX_FIELD_NUMBER;
          hash = (53 * hash) + getSentenceIndex();
        }
        if (hasIndex()) {
          hash = (37 * hash) + INDEX_FIELD_NUMBER;
          hash = (53 * hash) + getIndex();
        }
        if (hasCopyAnnotation()) {
          hash = (37 * hash) + COPYANNOTATION_FIELD_NUMBER;
          hash = (53 * hash) + getCopyAnnotation();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyGraph.Node}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.DependencyGraph.Node)
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          sentenceIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          index_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          copyAnnotation_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node result = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.sentenceIndex_ = sentenceIndex_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.index_ = index_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.copyAnnotation_ = copyAnnotation_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.getDefaultInstance()) return this;
          if (other.hasSentenceIndex()) {
            setSentenceIndex(other.getSentenceIndex());
          }
          if (other.hasIndex()) {
            setIndex(other.getIndex());
          }
          if (other.hasCopyAnnotation()) {
            setCopyAnnotation(other.getCopyAnnotation());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasSentenceIndex()) {
            return false;
          }
          if (!hasIndex()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  sentenceIndex_ = input.readUInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  index_ = input.readUInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 24: {
                  copyAnnotation_ = input.readUInt32();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int sentenceIndex_ ;
        /**
         * <code>required uint32 sentenceIndex = 1;</code>
         * @return Whether the sentenceIndex field is set.
         */
        @java.lang.Override
        public boolean hasSentenceIndex() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required uint32 sentenceIndex = 1;</code>
         * @return The sentenceIndex.
         */
        @java.lang.Override
        public int getSentenceIndex() {
          return sentenceIndex_;
        }
        /**
         * <code>required uint32 sentenceIndex = 1;</code>
         * @param value The sentenceIndex to set.
         * @return This builder for chaining.
         */
        public Builder setSentenceIndex(int value) {
          bitField0_ |= 0x00000001;
          sentenceIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 sentenceIndex = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSentenceIndex() {
          bitField0_ = (bitField0_ & ~0x00000001);
          sentenceIndex_ = 0;
          onChanged();
          return this;
        }

        private int index_ ;
        /**
         * <code>required uint32 index = 2;</code>
         * @return Whether the index field is set.
         */
        @java.lang.Override
        public boolean hasIndex() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required uint32 index = 2;</code>
         * @return The index.
         */
        @java.lang.Override
        public int getIndex() {
          return index_;
        }
        /**
         * <code>required uint32 index = 2;</code>
         * @param value The index to set.
         * @return This builder for chaining.
         */
        public Builder setIndex(int value) {
          bitField0_ |= 0x00000002;
          index_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 index = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearIndex() {
          bitField0_ = (bitField0_ & ~0x00000002);
          index_ = 0;
          onChanged();
          return this;
        }

        private int copyAnnotation_ ;
        /**
         * <code>optional uint32 copyAnnotation = 3;</code>
         * @return Whether the copyAnnotation field is set.
         */
        @java.lang.Override
        public boolean hasCopyAnnotation() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional uint32 copyAnnotation = 3;</code>
         * @return The copyAnnotation.
         */
        @java.lang.Override
        public int getCopyAnnotation() {
          return copyAnnotation_;
        }
        /**
         * <code>optional uint32 copyAnnotation = 3;</code>
         * @param value The copyAnnotation to set.
         * @return This builder for chaining.
         */
        public Builder setCopyAnnotation(int value) {
          bitField0_ |= 0x00000004;
          copyAnnotation_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 copyAnnotation = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearCopyAnnotation() {
          bitField0_ = (bitField0_ & ~0x00000004);
          copyAnnotation_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.DependencyGraph.Node)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.DependencyGraph.Node)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Node>
          PARSER = new com.google.protobuf.AbstractParser<Node>() {
        @java.lang.Override
        public Node parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Node> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Node> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface EdgeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.DependencyGraph.Edge)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required uint32 source = 1;</code>
       * @return Whether the source field is set.
       */
      boolean hasSource();
      /**
       * <code>required uint32 source = 1;</code>
       * @return The source.
       */
      int getSource();

      /**
       * <code>required uint32 target = 2;</code>
       * @return Whether the target field is set.
       */
      boolean hasTarget();
      /**
       * <code>required uint32 target = 2;</code>
       * @return The target.
       */
      int getTarget();

      /**
       * <code>optional string dep = 3;</code>
       * @return Whether the dep field is set.
       */
      boolean hasDep();
      /**
       * <code>optional string dep = 3;</code>
       * @return The dep.
       */
      java.lang.String getDep();
      /**
       * <code>optional string dep = 3;</code>
       * @return The bytes for dep.
       */
      com.google.protobuf.ByteString
          getDepBytes();

      /**
       * <code>optional bool isExtra = 4;</code>
       * @return Whether the isExtra field is set.
       */
      boolean hasIsExtra();
      /**
       * <code>optional bool isExtra = 4;</code>
       * @return The isExtra.
       */
      boolean getIsExtra();

      /**
       * <code>optional uint32 sourceCopy = 5;</code>
       * @return Whether the sourceCopy field is set.
       */
      boolean hasSourceCopy();
      /**
       * <code>optional uint32 sourceCopy = 5;</code>
       * @return The sourceCopy.
       */
      int getSourceCopy();

      /**
       * <code>optional uint32 targetCopy = 6;</code>
       * @return Whether the targetCopy field is set.
       */
      boolean hasTargetCopy();
      /**
       * <code>optional uint32 targetCopy = 6;</code>
       * @return The targetCopy.
       */
      int getTargetCopy();

      /**
       * <code>optional .edu.stanford.nlp.pipeline.Language language = 7 [default = Unknown];</code>
       * @return Whether the language field is set.
       */
      boolean hasLanguage();
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Language language = 7 [default = Unknown];</code>
       * @return The language.
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.Language getLanguage();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyGraph.Edge}
     */
    public static final class Edge extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.DependencyGraph.Edge)
        EdgeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Edge.newBuilder() to construct.
      private Edge(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Edge() {
        dep_ = "";
        language_ = 0;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Edge();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder.class);
      }

      private int bitField0_;
      public static final int SOURCE_FIELD_NUMBER = 1;
      private int source_;
      /**
       * <code>required uint32 source = 1;</code>
       * @return Whether the source field is set.
       */
      @java.lang.Override
      public boolean hasSource() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required uint32 source = 1;</code>
       * @return The source.
       */
      @java.lang.Override
      public int getSource() {
        return source_;
      }

      public static final int TARGET_FIELD_NUMBER = 2;
      private int target_;
      /**
       * <code>required uint32 target = 2;</code>
       * @return Whether the target field is set.
       */
      @java.lang.Override
      public boolean hasTarget() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint32 target = 2;</code>
       * @return The target.
       */
      @java.lang.Override
      public int getTarget() {
        return target_;
      }

      public static final int DEP_FIELD_NUMBER = 3;
      private volatile java.lang.Object dep_;
      /**
       * <code>optional string dep = 3;</code>
       * @return Whether the dep field is set.
       */
      @java.lang.Override
      public boolean hasDep() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string dep = 3;</code>
       * @return The dep.
       */
      @java.lang.Override
      public java.lang.String getDep() {
        java.lang.Object ref = dep_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            dep_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string dep = 3;</code>
       * @return The bytes for dep.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getDepBytes() {
        java.lang.Object ref = dep_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dep_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int ISEXTRA_FIELD_NUMBER = 4;
      private boolean isExtra_;
      /**
       * <code>optional bool isExtra = 4;</code>
       * @return Whether the isExtra field is set.
       */
      @java.lang.Override
      public boolean hasIsExtra() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional bool isExtra = 4;</code>
       * @return The isExtra.
       */
      @java.lang.Override
      public boolean getIsExtra() {
        return isExtra_;
      }

      public static final int SOURCECOPY_FIELD_NUMBER = 5;
      private int sourceCopy_;
      /**
       * <code>optional uint32 sourceCopy = 5;</code>
       * @return Whether the sourceCopy field is set.
       */
      @java.lang.Override
      public boolean hasSourceCopy() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional uint32 sourceCopy = 5;</code>
       * @return The sourceCopy.
       */
      @java.lang.Override
      public int getSourceCopy() {
        return sourceCopy_;
      }

      public static final int TARGETCOPY_FIELD_NUMBER = 6;
      private int targetCopy_;
      /**
       * <code>optional uint32 targetCopy = 6;</code>
       * @return Whether the targetCopy field is set.
       */
      @java.lang.Override
      public boolean hasTargetCopy() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint32 targetCopy = 6;</code>
       * @return The targetCopy.
       */
      @java.lang.Override
      public int getTargetCopy() {
        return targetCopy_;
      }

      public static final int LANGUAGE_FIELD_NUMBER = 7;
      private int language_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Language language = 7 [default = Unknown];</code>
       * @return Whether the language field is set.
       */
      @java.lang.Override public boolean hasLanguage() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Language language = 7 [default = Unknown];</code>
       * @return The language.
       */
      @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.Language getLanguage() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.Language result = edu.stanford.nlp.pipeline.CoreNLPProtos.Language.valueOf(language_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Language.Unknown : result;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasSource()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTarget()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeUInt32(1, source_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeUInt32(2, target_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dep_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeBool(4, isExtra_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeUInt32(5, sourceCopy_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          output.writeUInt32(6, targetCopy_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          output.writeEnum(7, language_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, source_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, target_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, dep_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, isExtra_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(5, sourceCopy_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, targetCopy_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(7, language_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge other = (edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge) obj;

        if (hasSource() != other.hasSource()) return false;
        if (hasSource()) {
          if (getSource()
              != other.getSource()) return false;
        }
        if (hasTarget() != other.hasTarget()) return false;
        if (hasTarget()) {
          if (getTarget()
              != other.getTarget()) return false;
        }
        if (hasDep() != other.hasDep()) return false;
        if (hasDep()) {
          if (!getDep()
              .equals(other.getDep())) return false;
        }
        if (hasIsExtra() != other.hasIsExtra()) return false;
        if (hasIsExtra()) {
          if (getIsExtra()
              != other.getIsExtra()) return false;
        }
        if (hasSourceCopy() != other.hasSourceCopy()) return false;
        if (hasSourceCopy()) {
          if (getSourceCopy()
              != other.getSourceCopy()) return false;
        }
        if (hasTargetCopy() != other.hasTargetCopy()) return false;
        if (hasTargetCopy()) {
          if (getTargetCopy()
              != other.getTargetCopy()) return false;
        }
        if (hasLanguage() != other.hasLanguage()) return false;
        if (hasLanguage()) {
          if (language_ != other.language_) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSource()) {
          hash = (37 * hash) + SOURCE_FIELD_NUMBER;
          hash = (53 * hash) + getSource();
        }
        if (hasTarget()) {
          hash = (37 * hash) + TARGET_FIELD_NUMBER;
          hash = (53 * hash) + getTarget();
        }
        if (hasDep()) {
          hash = (37 * hash) + DEP_FIELD_NUMBER;
          hash = (53 * hash) + getDep().hashCode();
        }
        if (hasIsExtra()) {
          hash = (37 * hash) + ISEXTRA_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getIsExtra());
        }
        if (hasSourceCopy()) {
          hash = (37 * hash) + SOURCECOPY_FIELD_NUMBER;
          hash = (53 * hash) + getSourceCopy();
        }
        if (hasTargetCopy()) {
          hash = (37 * hash) + TARGETCOPY_FIELD_NUMBER;
          hash = (53 * hash) + getTargetCopy();
        }
        if (hasLanguage()) {
          hash = (37 * hash) + LANGUAGE_FIELD_NUMBER;
          hash = (53 * hash) + language_;
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyGraph.Edge}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.DependencyGraph.Edge)
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          source_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          target_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          dep_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          isExtra_ = false;
          bitField0_ = (bitField0_ & ~0x00000008);
          sourceCopy_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          targetCopy_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          language_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge result = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.source_ = source_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.target_ = target_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.dep_ = dep_;
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.isExtra_ = isExtra_;
            to_bitField0_ |= 0x00000008;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.sourceCopy_ = sourceCopy_;
            to_bitField0_ |= 0x00000010;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.targetCopy_ = targetCopy_;
            to_bitField0_ |= 0x00000020;
          }
          if (((from_bitField0_ & 0x00000040) != 0)) {
            to_bitField0_ |= 0x00000040;
          }
          result.language_ = language_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.getDefaultInstance()) return this;
          if (other.hasSource()) {
            setSource(other.getSource());
          }
          if (other.hasTarget()) {
            setTarget(other.getTarget());
          }
          if (other.hasDep()) {
            bitField0_ |= 0x00000004;
            dep_ = other.dep_;
            onChanged();
          }
          if (other.hasIsExtra()) {
            setIsExtra(other.getIsExtra());
          }
          if (other.hasSourceCopy()) {
            setSourceCopy(other.getSourceCopy());
          }
          if (other.hasTargetCopy()) {
            setTargetCopy(other.getTargetCopy());
          }
          if (other.hasLanguage()) {
            setLanguage(other.getLanguage());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasSource()) {
            return false;
          }
          if (!hasTarget()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  source_ = input.readUInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  target_ = input.readUInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 26: {
                  dep_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                case 32: {
                  isExtra_ = input.readBool();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 32
                case 40: {
                  sourceCopy_ = input.readUInt32();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 40
                case 48: {
                  targetCopy_ = input.readUInt32();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 48
                case 56: {
                  int tmpRaw = input.readEnum();
                  edu.stanford.nlp.pipeline.CoreNLPProtos.Language tmpValue =
                      edu.stanford.nlp.pipeline.CoreNLPProtos.Language.forNumber(tmpRaw);
                  if (tmpValue == null) {
                    mergeUnknownVarintField(7, tmpRaw);
                  } else {
                    language_ = tmpRaw;
                    bitField0_ |= 0x00000040;
                  }
                  break;
                } // case 56
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int source_ ;
        /**
         * <code>required uint32 source = 1;</code>
         * @return Whether the source field is set.
         */
        @java.lang.Override
        public boolean hasSource() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required uint32 source = 1;</code>
         * @return The source.
         */
        @java.lang.Override
        public int getSource() {
          return source_;
        }
        /**
         * <code>required uint32 source = 1;</code>
         * @param value The source to set.
         * @return This builder for chaining.
         */
        public Builder setSource(int value) {
          bitField0_ |= 0x00000001;
          source_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 source = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSource() {
          bitField0_ = (bitField0_ & ~0x00000001);
          source_ = 0;
          onChanged();
          return this;
        }

        private int target_ ;
        /**
         * <code>required uint32 target = 2;</code>
         * @return Whether the target field is set.
         */
        @java.lang.Override
        public boolean hasTarget() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required uint32 target = 2;</code>
         * @return The target.
         */
        @java.lang.Override
        public int getTarget() {
          return target_;
        }
        /**
         * <code>required uint32 target = 2;</code>
         * @param value The target to set.
         * @return This builder for chaining.
         */
        public Builder setTarget(int value) {
          bitField0_ |= 0x00000002;
          target_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 target = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearTarget() {
          bitField0_ = (bitField0_ & ~0x00000002);
          target_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object dep_ = "";
        /**
         * <code>optional string dep = 3;</code>
         * @return Whether the dep field is set.
         */
        public boolean hasDep() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional string dep = 3;</code>
         * @return The dep.
         */
        public java.lang.String getDep() {
          java.lang.Object ref = dep_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              dep_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string dep = 3;</code>
         * @return The bytes for dep.
         */
        public com.google.protobuf.ByteString
            getDepBytes() {
          java.lang.Object ref = dep_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            dep_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string dep = 3;</code>
         * @param value The dep to set.
         * @return This builder for chaining.
         */
        public Builder setDep(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          dep_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string dep = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearDep() {
          bitField0_ = (bitField0_ & ~0x00000004);
          dep_ = getDefaultInstance().getDep();
          onChanged();
          return this;
        }
        /**
         * <code>optional string dep = 3;</code>
         * @param value The bytes for dep to set.
         * @return This builder for chaining.
         */
        public Builder setDepBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          dep_ = value;
          onChanged();
          return this;
        }

        private boolean isExtra_ ;
        /**
         * <code>optional bool isExtra = 4;</code>
         * @return Whether the isExtra field is set.
         */
        @java.lang.Override
        public boolean hasIsExtra() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional bool isExtra = 4;</code>
         * @return The isExtra.
         */
        @java.lang.Override
        public boolean getIsExtra() {
          return isExtra_;
        }
        /**
         * <code>optional bool isExtra = 4;</code>
         * @param value The isExtra to set.
         * @return This builder for chaining.
         */
        public Builder setIsExtra(boolean value) {
          bitField0_ |= 0x00000008;
          isExtra_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool isExtra = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsExtra() {
          bitField0_ = (bitField0_ & ~0x00000008);
          isExtra_ = false;
          onChanged();
          return this;
        }

        private int sourceCopy_ ;
        /**
         * <code>optional uint32 sourceCopy = 5;</code>
         * @return Whether the sourceCopy field is set.
         */
        @java.lang.Override
        public boolean hasSourceCopy() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <code>optional uint32 sourceCopy = 5;</code>
         * @return The sourceCopy.
         */
        @java.lang.Override
        public int getSourceCopy() {
          return sourceCopy_;
        }
        /**
         * <code>optional uint32 sourceCopy = 5;</code>
         * @param value The sourceCopy to set.
         * @return This builder for chaining.
         */
        public Builder setSourceCopy(int value) {
          bitField0_ |= 0x00000010;
          sourceCopy_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 sourceCopy = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearSourceCopy() {
          bitField0_ = (bitField0_ & ~0x00000010);
          sourceCopy_ = 0;
          onChanged();
          return this;
        }

        private int targetCopy_ ;
        /**
         * <code>optional uint32 targetCopy = 6;</code>
         * @return Whether the targetCopy field is set.
         */
        @java.lang.Override
        public boolean hasTargetCopy() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <code>optional uint32 targetCopy = 6;</code>
         * @return The targetCopy.
         */
        @java.lang.Override
        public int getTargetCopy() {
          return targetCopy_;
        }
        /**
         * <code>optional uint32 targetCopy = 6;</code>
         * @param value The targetCopy to set.
         * @return This builder for chaining.
         */
        public Builder setTargetCopy(int value) {
          bitField0_ |= 0x00000020;
          targetCopy_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 targetCopy = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearTargetCopy() {
          bitField0_ = (bitField0_ & ~0x00000020);
          targetCopy_ = 0;
          onChanged();
          return this;
        }

        private int language_ = 0;
        /**
         * <code>optional .edu.stanford.nlp.pipeline.Language language = 7 [default = Unknown];</code>
         * @return Whether the language field is set.
         */
        @java.lang.Override public boolean hasLanguage() {
          return ((bitField0_ & 0x00000040) != 0);
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.Language language = 7 [default = Unknown];</code>
         * @return The language.
         */
        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.Language getLanguage() {
          @SuppressWarnings("deprecation")
          edu.stanford.nlp.pipeline.CoreNLPProtos.Language result = edu.stanford.nlp.pipeline.CoreNLPProtos.Language.valueOf(language_);
          return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Language.Unknown : result;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.Language language = 7 [default = Unknown];</code>
         * @param value The language to set.
         * @return This builder for chaining.
         */
        public Builder setLanguage(edu.stanford.nlp.pipeline.CoreNLPProtos.Language value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000040;
          language_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.Language language = 7 [default = Unknown];</code>
         * @return This builder for chaining.
         */
        public Builder clearLanguage() {
          bitField0_ = (bitField0_ & ~0x00000040);
          language_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.DependencyGraph.Edge)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.DependencyGraph.Edge)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Edge>
          PARSER = new com.google.protobuf.AbstractParser<Edge>() {
        @java.lang.Override
        public Edge parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Edge> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Edge> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int NODE_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node> node_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node> getNodeList() {
      return node_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder> 
        getNodeOrBuilderList() {
      return node_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    @java.lang.Override
    public int getNodeCount() {
      return node_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node getNode(int index) {
      return node_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder getNodeOrBuilder(
        int index) {
      return node_.get(index);
    }

    public static final int EDGE_FIELD_NUMBER = 2;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge> edge_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge> getEdgeList() {
      return edge_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder> 
        getEdgeOrBuilderList() {
      return edge_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    @java.lang.Override
    public int getEdgeCount() {
      return edge_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge getEdge(int index) {
      return edge_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder getEdgeOrBuilder(
        int index) {
      return edge_.get(index);
    }

    public static final int ROOT_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.IntList root_;
    /**
     * <code>repeated uint32 root = 3 [packed = true];</code>
     * @return A list containing the root.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getRootList() {
      return root_;
    }
    /**
     * <code>repeated uint32 root = 3 [packed = true];</code>
     * @return The count of root.
     */
    public int getRootCount() {
      return root_.size();
    }
    /**
     * <code>repeated uint32 root = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The root at the given index.
     */
    public int getRoot(int index) {
      return root_.getInt(index);
    }
    private int rootMemoizedSerializedSize = -1;

    public static final int TOKEN_FIELD_NUMBER = 4;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> token_;
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getTokenList() {
      return token_;
    }
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
        getTokenOrBuilderList() {
      return token_;
    }
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    @java.lang.Override
    public int getTokenCount() {
      return token_.size();
    }
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index) {
      return token_.get(index);
    }
    /**
     * <pre>
     * optional: if this graph message is not part of a larger context,
     * the tokens will help reconstruct the actual sentence
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
        int index) {
      return token_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getNodeCount(); i++) {
        if (!getNode(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getEdgeCount(); i++) {
        if (!getEdge(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getTokenCount(); i++) {
        if (!getToken(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < node_.size(); i++) {
        output.writeMessage(1, node_.get(i));
      }
      for (int i = 0; i < edge_.size(); i++) {
        output.writeMessage(2, edge_.get(i));
      }
      if (getRootList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(rootMemoizedSerializedSize);
      }
      for (int i = 0; i < root_.size(); i++) {
        output.writeUInt32NoTag(root_.getInt(i));
      }
      for (int i = 0; i < token_.size(); i++) {
        output.writeMessage(4, token_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < node_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, node_.get(i));
      }
      for (int i = 0; i < edge_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, edge_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < root_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(root_.getInt(i));
        }
        size += dataSize;
        if (!getRootList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        rootMemoizedSerializedSize = dataSize;
      }
      for (int i = 0; i < token_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, token_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph other = (edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph) obj;

      if (!getNodeList()
          .equals(other.getNodeList())) return false;
      if (!getEdgeList()
          .equals(other.getEdgeList())) return false;
      if (!getRootList()
          .equals(other.getRootList())) return false;
      if (!getTokenList()
          .equals(other.getTokenList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getNodeCount() > 0) {
        hash = (37 * hash) + NODE_FIELD_NUMBER;
        hash = (53 * hash) + getNodeList().hashCode();
      }
      if (getEdgeCount() > 0) {
        hash = (37 * hash) + EDGE_FIELD_NUMBER;
        hash = (53 * hash) + getEdgeList().hashCode();
      }
      if (getRootCount() > 0) {
        hash = (37 * hash) + ROOT_FIELD_NUMBER;
        hash = (53 * hash) + getRootList().hashCode();
      }
      if (getTokenCount() > 0) {
        hash = (37 * hash) + TOKEN_FIELD_NUMBER;
        hash = (53 * hash) + getTokenList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A dependency graph representation.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyGraph}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.DependencyGraph)
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (nodeBuilder_ == null) {
          node_ = java.util.Collections.emptyList();
        } else {
          node_ = null;
          nodeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (edgeBuilder_ == null) {
          edge_ = java.util.Collections.emptyList();
        } else {
          edge_ = null;
          edgeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        root_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000004);
        if (tokenBuilder_ == null) {
          token_ = java.util.Collections.emptyList();
        } else {
          token_ = null;
          tokenBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyGraph_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph result = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph(this);
        int from_bitField0_ = bitField0_;
        if (nodeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            node_ = java.util.Collections.unmodifiableList(node_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.node_ = node_;
        } else {
          result.node_ = nodeBuilder_.build();
        }
        if (edgeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            edge_ = java.util.Collections.unmodifiableList(edge_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.edge_ = edge_;
        } else {
          result.edge_ = edgeBuilder_.build();
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          root_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.root_ = root_;
        if (tokenBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            token_ = java.util.Collections.unmodifiableList(token_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.token_ = token_;
        } else {
          result.token_ = tokenBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) return this;
        if (nodeBuilder_ == null) {
          if (!other.node_.isEmpty()) {
            if (node_.isEmpty()) {
              node_ = other.node_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureNodeIsMutable();
              node_.addAll(other.node_);
            }
            onChanged();
          }
        } else {
          if (!other.node_.isEmpty()) {
            if (nodeBuilder_.isEmpty()) {
              nodeBuilder_.dispose();
              nodeBuilder_ = null;
              node_ = other.node_;
              bitField0_ = (bitField0_ & ~0x00000001);
              nodeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNodeFieldBuilder() : null;
            } else {
              nodeBuilder_.addAllMessages(other.node_);
            }
          }
        }
        if (edgeBuilder_ == null) {
          if (!other.edge_.isEmpty()) {
            if (edge_.isEmpty()) {
              edge_ = other.edge_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureEdgeIsMutable();
              edge_.addAll(other.edge_);
            }
            onChanged();
          }
        } else {
          if (!other.edge_.isEmpty()) {
            if (edgeBuilder_.isEmpty()) {
              edgeBuilder_.dispose();
              edgeBuilder_ = null;
              edge_ = other.edge_;
              bitField0_ = (bitField0_ & ~0x00000002);
              edgeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEdgeFieldBuilder() : null;
            } else {
              edgeBuilder_.addAllMessages(other.edge_);
            }
          }
        }
        if (!other.root_.isEmpty()) {
          if (root_.isEmpty()) {
            root_ = other.root_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureRootIsMutable();
            root_.addAll(other.root_);
          }
          onChanged();
        }
        if (tokenBuilder_ == null) {
          if (!other.token_.isEmpty()) {
            if (token_.isEmpty()) {
              token_ = other.token_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureTokenIsMutable();
              token_.addAll(other.token_);
            }
            onChanged();
          }
        } else {
          if (!other.token_.isEmpty()) {
            if (tokenBuilder_.isEmpty()) {
              tokenBuilder_.dispose();
              tokenBuilder_ = null;
              token_ = other.token_;
              bitField0_ = (bitField0_ & ~0x00000008);
              tokenBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTokenFieldBuilder() : null;
            } else {
              tokenBuilder_.addAllMessages(other.token_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getNodeCount(); i++) {
          if (!getNode(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getEdgeCount(); i++) {
          if (!getEdge(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getTokenCount(); i++) {
          if (!getToken(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.PARSER,
                        extensionRegistry);
                if (nodeBuilder_ == null) {
                  ensureNodeIsMutable();
                  node_.add(m);
                } else {
                  nodeBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.PARSER,
                        extensionRegistry);
                if (edgeBuilder_ == null) {
                  ensureEdgeIsMutable();
                  edge_.add(m);
                } else {
                  edgeBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                int v = input.readUInt32();
                ensureRootIsMutable();
                root_.addInt(v);
                break;
              } // case 24
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureRootIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  root_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 34: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Token m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Token.PARSER,
                        extensionRegistry);
                if (tokenBuilder_ == null) {
                  ensureTokenIsMutable();
                  token_.add(m);
                } else {
                  tokenBuilder_.addMessage(m);
                }
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node> node_ =
        java.util.Collections.emptyList();
      private void ensureNodeIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          node_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node>(node_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder> nodeBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node> getNodeList() {
        if (nodeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(node_);
        } else {
          return nodeBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public int getNodeCount() {
        if (nodeBuilder_ == null) {
          return node_.size();
        } else {
          return nodeBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node getNode(int index) {
        if (nodeBuilder_ == null) {
          return node_.get(index);
        } else {
          return nodeBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder setNode(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node value) {
        if (nodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeIsMutable();
          node_.set(index, value);
          onChanged();
        } else {
          nodeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder setNode(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder builderForValue) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          node_.set(index, builderForValue.build());
          onChanged();
        } else {
          nodeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder addNode(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node value) {
        if (nodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeIsMutable();
          node_.add(value);
          onChanged();
        } else {
          nodeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder addNode(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node value) {
        if (nodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeIsMutable();
          node_.add(index, value);
          onChanged();
        } else {
          nodeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder addNode(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder builderForValue) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          node_.add(builderForValue.build());
          onChanged();
        } else {
          nodeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder addNode(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder builderForValue) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          node_.add(index, builderForValue.build());
          onChanged();
        } else {
          nodeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder addAllNode(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node> values) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, node_);
          onChanged();
        } else {
          nodeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder clearNode() {
        if (nodeBuilder_ == null) {
          node_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          nodeBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public Builder removeNode(int index) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          node_.remove(index);
          onChanged();
        } else {
          nodeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder getNodeBuilder(
          int index) {
        return getNodeFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder getNodeOrBuilder(
          int index) {
        if (nodeBuilder_ == null) {
          return node_.get(index);  } else {
          return nodeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder> 
           getNodeOrBuilderList() {
        if (nodeBuilder_ != null) {
          return nodeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(node_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder addNodeBuilder() {
        return getNodeFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder addNodeBuilder(
          int index) {
        return getNodeFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Node node = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder> 
           getNodeBuilderList() {
        return getNodeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder> 
          getNodeFieldBuilder() {
        if (nodeBuilder_ == null) {
          nodeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Node.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.NodeOrBuilder>(
                  node_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          node_ = null;
        }
        return nodeBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge> edge_ =
        java.util.Collections.emptyList();
      private void ensureEdgeIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          edge_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge>(edge_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder> edgeBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge> getEdgeList() {
        if (edgeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(edge_);
        } else {
          return edgeBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public int getEdgeCount() {
        if (edgeBuilder_ == null) {
          return edge_.size();
        } else {
          return edgeBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge getEdge(int index) {
        if (edgeBuilder_ == null) {
          return edge_.get(index);
        } else {
          return edgeBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder setEdge(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge value) {
        if (edgeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEdgeIsMutable();
          edge_.set(index, value);
          onChanged();
        } else {
          edgeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder setEdge(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder builderForValue) {
        if (edgeBuilder_ == null) {
          ensureEdgeIsMutable();
          edge_.set(index, builderForValue.build());
          onChanged();
        } else {
          edgeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder addEdge(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge value) {
        if (edgeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEdgeIsMutable();
          edge_.add(value);
          onChanged();
        } else {
          edgeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder addEdge(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge value) {
        if (edgeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEdgeIsMutable();
          edge_.add(index, value);
          onChanged();
        } else {
          edgeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder addEdge(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder builderForValue) {
        if (edgeBuilder_ == null) {
          ensureEdgeIsMutable();
          edge_.add(builderForValue.build());
          onChanged();
        } else {
          edgeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder addEdge(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder builderForValue) {
        if (edgeBuilder_ == null) {
          ensureEdgeIsMutable();
          edge_.add(index, builderForValue.build());
          onChanged();
        } else {
          edgeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder addAllEdge(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge> values) {
        if (edgeBuilder_ == null) {
          ensureEdgeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, edge_);
          onChanged();
        } else {
          edgeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder clearEdge() {
        if (edgeBuilder_ == null) {
          edge_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          edgeBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public Builder removeEdge(int index) {
        if (edgeBuilder_ == null) {
          ensureEdgeIsMutable();
          edge_.remove(index);
          onChanged();
        } else {
          edgeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder getEdgeBuilder(
          int index) {
        return getEdgeFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder getEdgeOrBuilder(
          int index) {
        if (edgeBuilder_ == null) {
          return edge_.get(index);  } else {
          return edgeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder> 
           getEdgeOrBuilderList() {
        if (edgeBuilder_ != null) {
          return edgeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(edge_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder addEdgeBuilder() {
        return getEdgeFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder addEdgeBuilder(
          int index) {
        return getEdgeFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph.Edge edge = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder> 
           getEdgeBuilderList() {
        return getEdgeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder> 
          getEdgeFieldBuilder() {
        if (edgeBuilder_ == null) {
          edgeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Edge.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.EdgeOrBuilder>(
                  edge_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          edge_ = null;
        }
        return edgeBuilder_;
      }

      private com.google.protobuf.Internal.IntList root_ = emptyIntList();
      private void ensureRootIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          root_ = mutableCopy(root_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated uint32 root = 3 [packed = true];</code>
       * @return A list containing the root.
       */
      public java.util.List<java.lang.Integer>
          getRootList() {
        return ((bitField0_ & 0x00000004) != 0) ?
                 java.util.Collections.unmodifiableList(root_) : root_;
      }
      /**
       * <code>repeated uint32 root = 3 [packed = true];</code>
       * @return The count of root.
       */
      public int getRootCount() {
        return root_.size();
      }
      /**
       * <code>repeated uint32 root = 3 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The root at the given index.
       */
      public int getRoot(int index) {
        return root_.getInt(index);
      }
      /**
       * <code>repeated uint32 root = 3 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The root to set.
       * @return This builder for chaining.
       */
      public Builder setRoot(
          int index, int value) {
        ensureRootIsMutable();
        root_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 root = 3 [packed = true];</code>
       * @param value The root to add.
       * @return This builder for chaining.
       */
      public Builder addRoot(int value) {
        ensureRootIsMutable();
        root_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 root = 3 [packed = true];</code>
       * @param values The root to add.
       * @return This builder for chaining.
       */
      public Builder addAllRoot(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRootIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, root_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 root = 3 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearRoot() {
        root_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> token_ =
        java.util.Collections.emptyList();
      private void ensureTokenIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          token_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Token>(token_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> tokenBuilder_;

      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getTokenList() {
        if (tokenBuilder_ == null) {
          return java.util.Collections.unmodifiableList(token_);
        } else {
          return tokenBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public int getTokenCount() {
        if (tokenBuilder_ == null) {
          return token_.size();
        } else {
          return tokenBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index) {
        if (tokenBuilder_ == null) {
          return token_.get(index);
        } else {
          return tokenBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder setToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (tokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTokenIsMutable();
          token_.set(index, value);
          onChanged();
        } else {
          tokenBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder setToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          token_.set(index, builderForValue.build());
          onChanged();
        } else {
          tokenBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder addToken(edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (tokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTokenIsMutable();
          token_.add(value);
          onChanged();
        } else {
          tokenBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder addToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (tokenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTokenIsMutable();
          token_.add(index, value);
          onChanged();
        } else {
          tokenBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder addToken(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          token_.add(builderForValue.build());
          onChanged();
        } else {
          tokenBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder addToken(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          token_.add(index, builderForValue.build());
          onChanged();
        } else {
          tokenBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder addAllToken(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Token> values) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, token_);
          onChanged();
        } else {
          tokenBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder clearToken() {
        if (tokenBuilder_ == null) {
          token_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          tokenBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public Builder removeToken(int index) {
        if (tokenBuilder_ == null) {
          ensureTokenIsMutable();
          token_.remove(index);
          onChanged();
        } else {
          tokenBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder getTokenBuilder(
          int index) {
        return getTokenFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
          int index) {
        if (tokenBuilder_ == null) {
          return token_.get(index);  } else {
          return tokenBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
           getTokenOrBuilderList() {
        if (tokenBuilder_ != null) {
          return tokenBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(token_);
        }
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addTokenBuilder() {
        return getTokenFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addTokenBuilder(
          int index) {
        return getTokenFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
      }
      /**
       * <pre>
       * optional: if this graph message is not part of a larger context,
       * the tokens will help reconstruct the actual sentence
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 4;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder> 
           getTokenBuilderList() {
        return getTokenFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
          getTokenFieldBuilder() {
        if (tokenBuilder_ == null) {
          tokenBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder>(
                  token_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          token_ = null;
        }
        return tokenBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.DependencyGraph)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.DependencyGraph)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<DependencyGraph>
        PARSER = new com.google.protobuf.AbstractParser<DependencyGraph>() {
      @java.lang.Override
      public DependencyGraph parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DependencyGraph> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DependencyGraph> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CorefChainOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.CorefChain)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int32 chainID = 1;</code>
     * @return Whether the chainID field is set.
     */
    boolean hasChainID();
    /**
     * <code>required int32 chainID = 1;</code>
     * @return The chainID.
     */
    int getChainID();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention> 
        getMentionList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention getMention(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    int getMentionCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder> 
        getMentionOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder getMentionOrBuilder(
        int index);

    /**
     * <code>required uint32 representative = 3;</code>
     * @return Whether the representative field is set.
     */
    boolean hasRepresentative();
    /**
     * <code>required uint32 representative = 3;</code>
     * @return The representative.
     */
    int getRepresentative();
  }
  /**
   * <pre>
   * A coreference chain.
   * These fields are not *really* optional. CoreNLP will crash without them.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.CorefChain}
   */
  public static final class CorefChain extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.CorefChain)
      CorefChainOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CorefChain.newBuilder() to construct.
    private CorefChain(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CorefChain() {
      mention_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CorefChain();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.class, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder.class);
    }

    public interface CorefMentionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.CorefChain.CorefMention)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>optional int32 mentionID = 1;</code>
       * @return Whether the mentionID field is set.
       */
      boolean hasMentionID();
      /**
       * <code>optional int32 mentionID = 1;</code>
       * @return The mentionID.
       */
      int getMentionID();

      /**
       * <code>optional string mentionType = 2;</code>
       * @return Whether the mentionType field is set.
       */
      boolean hasMentionType();
      /**
       * <code>optional string mentionType = 2;</code>
       * @return The mentionType.
       */
      java.lang.String getMentionType();
      /**
       * <code>optional string mentionType = 2;</code>
       * @return The bytes for mentionType.
       */
      com.google.protobuf.ByteString
          getMentionTypeBytes();

      /**
       * <code>optional string number = 3;</code>
       * @return Whether the number field is set.
       */
      boolean hasNumber();
      /**
       * <code>optional string number = 3;</code>
       * @return The number.
       */
      java.lang.String getNumber();
      /**
       * <code>optional string number = 3;</code>
       * @return The bytes for number.
       */
      com.google.protobuf.ByteString
          getNumberBytes();

      /**
       * <code>optional string gender = 4;</code>
       * @return Whether the gender field is set.
       */
      boolean hasGender();
      /**
       * <code>optional string gender = 4;</code>
       * @return The gender.
       */
      java.lang.String getGender();
      /**
       * <code>optional string gender = 4;</code>
       * @return The bytes for gender.
       */
      com.google.protobuf.ByteString
          getGenderBytes();

      /**
       * <code>optional string animacy = 5;</code>
       * @return Whether the animacy field is set.
       */
      boolean hasAnimacy();
      /**
       * <code>optional string animacy = 5;</code>
       * @return The animacy.
       */
      java.lang.String getAnimacy();
      /**
       * <code>optional string animacy = 5;</code>
       * @return The bytes for animacy.
       */
      com.google.protobuf.ByteString
          getAnimacyBytes();

      /**
       * <code>optional uint32 beginIndex = 6;</code>
       * @return Whether the beginIndex field is set.
       */
      boolean hasBeginIndex();
      /**
       * <code>optional uint32 beginIndex = 6;</code>
       * @return The beginIndex.
       */
      int getBeginIndex();

      /**
       * <code>optional uint32 endIndex = 7;</code>
       * @return Whether the endIndex field is set.
       */
      boolean hasEndIndex();
      /**
       * <code>optional uint32 endIndex = 7;</code>
       * @return The endIndex.
       */
      int getEndIndex();

      /**
       * <code>optional uint32 headIndex = 9;</code>
       * @return Whether the headIndex field is set.
       */
      boolean hasHeadIndex();
      /**
       * <code>optional uint32 headIndex = 9;</code>
       * @return The headIndex.
       */
      int getHeadIndex();

      /**
       * <code>optional uint32 sentenceIndex = 10;</code>
       * @return Whether the sentenceIndex field is set.
       */
      boolean hasSentenceIndex();
      /**
       * <code>optional uint32 sentenceIndex = 10;</code>
       * @return The sentenceIndex.
       */
      int getSentenceIndex();

      /**
       * <pre>
       * the second element of position
       * </pre>
       *
       * <code>optional uint32 position = 11;</code>
       * @return Whether the position field is set.
       */
      boolean hasPosition();
      /**
       * <pre>
       * the second element of position
       * </pre>
       *
       * <code>optional uint32 position = 11;</code>
       * @return The position.
       */
      int getPosition();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.CorefChain.CorefMention}
     */
    public static final class CorefMention extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.CorefChain.CorefMention)
        CorefMentionOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use CorefMention.newBuilder() to construct.
      private CorefMention(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private CorefMention() {
        mentionType_ = "";
        number_ = "";
        gender_ = "";
        animacy_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new CorefMention();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.class, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder.class);
      }

      private int bitField0_;
      public static final int MENTIONID_FIELD_NUMBER = 1;
      private int mentionID_;
      /**
       * <code>optional int32 mentionID = 1;</code>
       * @return Whether the mentionID field is set.
       */
      @java.lang.Override
      public boolean hasMentionID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 mentionID = 1;</code>
       * @return The mentionID.
       */
      @java.lang.Override
      public int getMentionID() {
        return mentionID_;
      }

      public static final int MENTIONTYPE_FIELD_NUMBER = 2;
      private volatile java.lang.Object mentionType_;
      /**
       * <code>optional string mentionType = 2;</code>
       * @return Whether the mentionType field is set.
       */
      @java.lang.Override
      public boolean hasMentionType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string mentionType = 2;</code>
       * @return The mentionType.
       */
      @java.lang.Override
      public java.lang.String getMentionType() {
        java.lang.Object ref = mentionType_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mentionType_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string mentionType = 2;</code>
       * @return The bytes for mentionType.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getMentionTypeBytes() {
        java.lang.Object ref = mentionType_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mentionType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int NUMBER_FIELD_NUMBER = 3;
      private volatile java.lang.Object number_;
      /**
       * <code>optional string number = 3;</code>
       * @return Whether the number field is set.
       */
      @java.lang.Override
      public boolean hasNumber() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string number = 3;</code>
       * @return The number.
       */
      @java.lang.Override
      public java.lang.String getNumber() {
        java.lang.Object ref = number_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            number_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string number = 3;</code>
       * @return The bytes for number.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getNumberBytes() {
        java.lang.Object ref = number_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          number_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int GENDER_FIELD_NUMBER = 4;
      private volatile java.lang.Object gender_;
      /**
       * <code>optional string gender = 4;</code>
       * @return Whether the gender field is set.
       */
      @java.lang.Override
      public boolean hasGender() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string gender = 4;</code>
       * @return The gender.
       */
      @java.lang.Override
      public java.lang.String getGender() {
        java.lang.Object ref = gender_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            gender_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string gender = 4;</code>
       * @return The bytes for gender.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGenderBytes() {
        java.lang.Object ref = gender_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gender_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int ANIMACY_FIELD_NUMBER = 5;
      private volatile java.lang.Object animacy_;
      /**
       * <code>optional string animacy = 5;</code>
       * @return Whether the animacy field is set.
       */
      @java.lang.Override
      public boolean hasAnimacy() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string animacy = 5;</code>
       * @return The animacy.
       */
      @java.lang.Override
      public java.lang.String getAnimacy() {
        java.lang.Object ref = animacy_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            animacy_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string animacy = 5;</code>
       * @return The bytes for animacy.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getAnimacyBytes() {
        java.lang.Object ref = animacy_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          animacy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int BEGININDEX_FIELD_NUMBER = 6;
      private int beginIndex_;
      /**
       * <code>optional uint32 beginIndex = 6;</code>
       * @return Whether the beginIndex field is set.
       */
      @java.lang.Override
      public boolean hasBeginIndex() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint32 beginIndex = 6;</code>
       * @return The beginIndex.
       */
      @java.lang.Override
      public int getBeginIndex() {
        return beginIndex_;
      }

      public static final int ENDINDEX_FIELD_NUMBER = 7;
      private int endIndex_;
      /**
       * <code>optional uint32 endIndex = 7;</code>
       * @return Whether the endIndex field is set.
       */
      @java.lang.Override
      public boolean hasEndIndex() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional uint32 endIndex = 7;</code>
       * @return The endIndex.
       */
      @java.lang.Override
      public int getEndIndex() {
        return endIndex_;
      }

      public static final int HEADINDEX_FIELD_NUMBER = 9;
      private int headIndex_;
      /**
       * <code>optional uint32 headIndex = 9;</code>
       * @return Whether the headIndex field is set.
       */
      @java.lang.Override
      public boolean hasHeadIndex() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional uint32 headIndex = 9;</code>
       * @return The headIndex.
       */
      @java.lang.Override
      public int getHeadIndex() {
        return headIndex_;
      }

      public static final int SENTENCEINDEX_FIELD_NUMBER = 10;
      private int sentenceIndex_;
      /**
       * <code>optional uint32 sentenceIndex = 10;</code>
       * @return Whether the sentenceIndex field is set.
       */
      @java.lang.Override
      public boolean hasSentenceIndex() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional uint32 sentenceIndex = 10;</code>
       * @return The sentenceIndex.
       */
      @java.lang.Override
      public int getSentenceIndex() {
        return sentenceIndex_;
      }

      public static final int POSITION_FIELD_NUMBER = 11;
      private int position_;
      /**
       * <pre>
       * the second element of position
       * </pre>
       *
       * <code>optional uint32 position = 11;</code>
       * @return Whether the position field is set.
       */
      @java.lang.Override
      public boolean hasPosition() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * the second element of position
       * </pre>
       *
       * <code>optional uint32 position = 11;</code>
       * @return The position.
       */
      @java.lang.Override
      public int getPosition() {
        return position_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, mentionID_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, mentionType_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, number_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 4, gender_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 5, animacy_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          output.writeUInt32(6, beginIndex_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          output.writeUInt32(7, endIndex_);
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          output.writeUInt32(9, headIndex_);
        }
        if (((bitField0_ & 0x00000100) != 0)) {
          output.writeUInt32(10, sentenceIndex_);
        }
        if (((bitField0_ & 0x00000200) != 0)) {
          output.writeUInt32(11, position_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, mentionID_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, mentionType_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, number_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, gender_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, animacy_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, beginIndex_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, endIndex_);
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(9, headIndex_);
        }
        if (((bitField0_ & 0x00000100) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(10, sentenceIndex_);
        }
        if (((bitField0_ & 0x00000200) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(11, position_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention other = (edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention) obj;

        if (hasMentionID() != other.hasMentionID()) return false;
        if (hasMentionID()) {
          if (getMentionID()
              != other.getMentionID()) return false;
        }
        if (hasMentionType() != other.hasMentionType()) return false;
        if (hasMentionType()) {
          if (!getMentionType()
              .equals(other.getMentionType())) return false;
        }
        if (hasNumber() != other.hasNumber()) return false;
        if (hasNumber()) {
          if (!getNumber()
              .equals(other.getNumber())) return false;
        }
        if (hasGender() != other.hasGender()) return false;
        if (hasGender()) {
          if (!getGender()
              .equals(other.getGender())) return false;
        }
        if (hasAnimacy() != other.hasAnimacy()) return false;
        if (hasAnimacy()) {
          if (!getAnimacy()
              .equals(other.getAnimacy())) return false;
        }
        if (hasBeginIndex() != other.hasBeginIndex()) return false;
        if (hasBeginIndex()) {
          if (getBeginIndex()
              != other.getBeginIndex()) return false;
        }
        if (hasEndIndex() != other.hasEndIndex()) return false;
        if (hasEndIndex()) {
          if (getEndIndex()
              != other.getEndIndex()) return false;
        }
        if (hasHeadIndex() != other.hasHeadIndex()) return false;
        if (hasHeadIndex()) {
          if (getHeadIndex()
              != other.getHeadIndex()) return false;
        }
        if (hasSentenceIndex() != other.hasSentenceIndex()) return false;
        if (hasSentenceIndex()) {
          if (getSentenceIndex()
              != other.getSentenceIndex()) return false;
        }
        if (hasPosition() != other.hasPosition()) return false;
        if (hasPosition()) {
          if (getPosition()
              != other.getPosition()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasMentionID()) {
          hash = (37 * hash) + MENTIONID_FIELD_NUMBER;
          hash = (53 * hash) + getMentionID();
        }
        if (hasMentionType()) {
          hash = (37 * hash) + MENTIONTYPE_FIELD_NUMBER;
          hash = (53 * hash) + getMentionType().hashCode();
        }
        if (hasNumber()) {
          hash = (37 * hash) + NUMBER_FIELD_NUMBER;
          hash = (53 * hash) + getNumber().hashCode();
        }
        if (hasGender()) {
          hash = (37 * hash) + GENDER_FIELD_NUMBER;
          hash = (53 * hash) + getGender().hashCode();
        }
        if (hasAnimacy()) {
          hash = (37 * hash) + ANIMACY_FIELD_NUMBER;
          hash = (53 * hash) + getAnimacy().hashCode();
        }
        if (hasBeginIndex()) {
          hash = (37 * hash) + BEGININDEX_FIELD_NUMBER;
          hash = (53 * hash) + getBeginIndex();
        }
        if (hasEndIndex()) {
          hash = (37 * hash) + ENDINDEX_FIELD_NUMBER;
          hash = (53 * hash) + getEndIndex();
        }
        if (hasHeadIndex()) {
          hash = (37 * hash) + HEADINDEX_FIELD_NUMBER;
          hash = (53 * hash) + getHeadIndex();
        }
        if (hasSentenceIndex()) {
          hash = (37 * hash) + SENTENCEINDEX_FIELD_NUMBER;
          hash = (53 * hash) + getSentenceIndex();
        }
        if (hasPosition()) {
          hash = (37 * hash) + POSITION_FIELD_NUMBER;
          hash = (53 * hash) + getPosition();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.CorefChain.CorefMention}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.CorefChain.CorefMention)
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.class, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          mentionID_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          mentionType_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          number_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          gender_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          animacy_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          beginIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          endIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          headIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000080);
          sentenceIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000100);
          position_ = 0;
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention result = new edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.mentionID_ = mentionID_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.mentionType_ = mentionType_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.number_ = number_;
          if (((from_bitField0_ & 0x00000008) != 0)) {
            to_bitField0_ |= 0x00000008;
          }
          result.gender_ = gender_;
          if (((from_bitField0_ & 0x00000010) != 0)) {
            to_bitField0_ |= 0x00000010;
          }
          result.animacy_ = animacy_;
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.beginIndex_ = beginIndex_;
            to_bitField0_ |= 0x00000020;
          }
          if (((from_bitField0_ & 0x00000040) != 0)) {
            result.endIndex_ = endIndex_;
            to_bitField0_ |= 0x00000040;
          }
          if (((from_bitField0_ & 0x00000080) != 0)) {
            result.headIndex_ = headIndex_;
            to_bitField0_ |= 0x00000080;
          }
          if (((from_bitField0_ & 0x00000100) != 0)) {
            result.sentenceIndex_ = sentenceIndex_;
            to_bitField0_ |= 0x00000100;
          }
          if (((from_bitField0_ & 0x00000200) != 0)) {
            result.position_ = position_;
            to_bitField0_ |= 0x00000200;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.getDefaultInstance()) return this;
          if (other.hasMentionID()) {
            setMentionID(other.getMentionID());
          }
          if (other.hasMentionType()) {
            bitField0_ |= 0x00000002;
            mentionType_ = other.mentionType_;
            onChanged();
          }
          if (other.hasNumber()) {
            bitField0_ |= 0x00000004;
            number_ = other.number_;
            onChanged();
          }
          if (other.hasGender()) {
            bitField0_ |= 0x00000008;
            gender_ = other.gender_;
            onChanged();
          }
          if (other.hasAnimacy()) {
            bitField0_ |= 0x00000010;
            animacy_ = other.animacy_;
            onChanged();
          }
          if (other.hasBeginIndex()) {
            setBeginIndex(other.getBeginIndex());
          }
          if (other.hasEndIndex()) {
            setEndIndex(other.getEndIndex());
          }
          if (other.hasHeadIndex()) {
            setHeadIndex(other.getHeadIndex());
          }
          if (other.hasSentenceIndex()) {
            setSentenceIndex(other.getSentenceIndex());
          }
          if (other.hasPosition()) {
            setPosition(other.getPosition());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  mentionID_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 18: {
                  mentionType_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  number_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                case 34: {
                  gender_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
                case 42: {
                  animacy_ = input.readBytes();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 42
                case 48: {
                  beginIndex_ = input.readUInt32();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 48
                case 56: {
                  endIndex_ = input.readUInt32();
                  bitField0_ |= 0x00000040;
                  break;
                } // case 56
                case 72: {
                  headIndex_ = input.readUInt32();
                  bitField0_ |= 0x00000080;
                  break;
                } // case 72
                case 80: {
                  sentenceIndex_ = input.readUInt32();
                  bitField0_ |= 0x00000100;
                  break;
                } // case 80
                case 88: {
                  position_ = input.readUInt32();
                  bitField0_ |= 0x00000200;
                  break;
                } // case 88
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int mentionID_ ;
        /**
         * <code>optional int32 mentionID = 1;</code>
         * @return Whether the mentionID field is set.
         */
        @java.lang.Override
        public boolean hasMentionID() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional int32 mentionID = 1;</code>
         * @return The mentionID.
         */
        @java.lang.Override
        public int getMentionID() {
          return mentionID_;
        }
        /**
         * <code>optional int32 mentionID = 1;</code>
         * @param value The mentionID to set.
         * @return This builder for chaining.
         */
        public Builder setMentionID(int value) {
          bitField0_ |= 0x00000001;
          mentionID_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int32 mentionID = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearMentionID() {
          bitField0_ = (bitField0_ & ~0x00000001);
          mentionID_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object mentionType_ = "";
        /**
         * <code>optional string mentionType = 2;</code>
         * @return Whether the mentionType field is set.
         */
        public boolean hasMentionType() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string mentionType = 2;</code>
         * @return The mentionType.
         */
        public java.lang.String getMentionType() {
          java.lang.Object ref = mentionType_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              mentionType_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string mentionType = 2;</code>
         * @return The bytes for mentionType.
         */
        public com.google.protobuf.ByteString
            getMentionTypeBytes() {
          java.lang.Object ref = mentionType_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            mentionType_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string mentionType = 2;</code>
         * @param value The mentionType to set.
         * @return This builder for chaining.
         */
        public Builder setMentionType(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          mentionType_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string mentionType = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearMentionType() {
          bitField0_ = (bitField0_ & ~0x00000002);
          mentionType_ = getDefaultInstance().getMentionType();
          onChanged();
          return this;
        }
        /**
         * <code>optional string mentionType = 2;</code>
         * @param value The bytes for mentionType to set.
         * @return This builder for chaining.
         */
        public Builder setMentionTypeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          mentionType_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object number_ = "";
        /**
         * <code>optional string number = 3;</code>
         * @return Whether the number field is set.
         */
        public boolean hasNumber() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional string number = 3;</code>
         * @return The number.
         */
        public java.lang.String getNumber() {
          java.lang.Object ref = number_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              number_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string number = 3;</code>
         * @return The bytes for number.
         */
        public com.google.protobuf.ByteString
            getNumberBytes() {
          java.lang.Object ref = number_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            number_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string number = 3;</code>
         * @param value The number to set.
         * @return This builder for chaining.
         */
        public Builder setNumber(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          number_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string number = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearNumber() {
          bitField0_ = (bitField0_ & ~0x00000004);
          number_ = getDefaultInstance().getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>optional string number = 3;</code>
         * @param value The bytes for number to set.
         * @return This builder for chaining.
         */
        public Builder setNumberBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          number_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object gender_ = "";
        /**
         * <code>optional string gender = 4;</code>
         * @return Whether the gender field is set.
         */
        public boolean hasGender() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional string gender = 4;</code>
         * @return The gender.
         */
        public java.lang.String getGender() {
          java.lang.Object ref = gender_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              gender_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string gender = 4;</code>
         * @return The bytes for gender.
         */
        public com.google.protobuf.ByteString
            getGenderBytes() {
          java.lang.Object ref = gender_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            gender_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string gender = 4;</code>
         * @param value The gender to set.
         * @return This builder for chaining.
         */
        public Builder setGender(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          gender_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string gender = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearGender() {
          bitField0_ = (bitField0_ & ~0x00000008);
          gender_ = getDefaultInstance().getGender();
          onChanged();
          return this;
        }
        /**
         * <code>optional string gender = 4;</code>
         * @param value The bytes for gender to set.
         * @return This builder for chaining.
         */
        public Builder setGenderBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          gender_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object animacy_ = "";
        /**
         * <code>optional string animacy = 5;</code>
         * @return Whether the animacy field is set.
         */
        public boolean hasAnimacy() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <code>optional string animacy = 5;</code>
         * @return The animacy.
         */
        public java.lang.String getAnimacy() {
          java.lang.Object ref = animacy_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              animacy_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string animacy = 5;</code>
         * @return The bytes for animacy.
         */
        public com.google.protobuf.ByteString
            getAnimacyBytes() {
          java.lang.Object ref = animacy_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            animacy_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string animacy = 5;</code>
         * @param value The animacy to set.
         * @return This builder for chaining.
         */
        public Builder setAnimacy(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
          animacy_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string animacy = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearAnimacy() {
          bitField0_ = (bitField0_ & ~0x00000010);
          animacy_ = getDefaultInstance().getAnimacy();
          onChanged();
          return this;
        }
        /**
         * <code>optional string animacy = 5;</code>
         * @param value The bytes for animacy to set.
         * @return This builder for chaining.
         */
        public Builder setAnimacyBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
          animacy_ = value;
          onChanged();
          return this;
        }

        private int beginIndex_ ;
        /**
         * <code>optional uint32 beginIndex = 6;</code>
         * @return Whether the beginIndex field is set.
         */
        @java.lang.Override
        public boolean hasBeginIndex() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <code>optional uint32 beginIndex = 6;</code>
         * @return The beginIndex.
         */
        @java.lang.Override
        public int getBeginIndex() {
          return beginIndex_;
        }
        /**
         * <code>optional uint32 beginIndex = 6;</code>
         * @param value The beginIndex to set.
         * @return This builder for chaining.
         */
        public Builder setBeginIndex(int value) {
          bitField0_ |= 0x00000020;
          beginIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 beginIndex = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearBeginIndex() {
          bitField0_ = (bitField0_ & ~0x00000020);
          beginIndex_ = 0;
          onChanged();
          return this;
        }

        private int endIndex_ ;
        /**
         * <code>optional uint32 endIndex = 7;</code>
         * @return Whether the endIndex field is set.
         */
        @java.lang.Override
        public boolean hasEndIndex() {
          return ((bitField0_ & 0x00000040) != 0);
        }
        /**
         * <code>optional uint32 endIndex = 7;</code>
         * @return The endIndex.
         */
        @java.lang.Override
        public int getEndIndex() {
          return endIndex_;
        }
        /**
         * <code>optional uint32 endIndex = 7;</code>
         * @param value The endIndex to set.
         * @return This builder for chaining.
         */
        public Builder setEndIndex(int value) {
          bitField0_ |= 0x00000040;
          endIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 endIndex = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearEndIndex() {
          bitField0_ = (bitField0_ & ~0x00000040);
          endIndex_ = 0;
          onChanged();
          return this;
        }

        private int headIndex_ ;
        /**
         * <code>optional uint32 headIndex = 9;</code>
         * @return Whether the headIndex field is set.
         */
        @java.lang.Override
        public boolean hasHeadIndex() {
          return ((bitField0_ & 0x00000080) != 0);
        }
        /**
         * <code>optional uint32 headIndex = 9;</code>
         * @return The headIndex.
         */
        @java.lang.Override
        public int getHeadIndex() {
          return headIndex_;
        }
        /**
         * <code>optional uint32 headIndex = 9;</code>
         * @param value The headIndex to set.
         * @return This builder for chaining.
         */
        public Builder setHeadIndex(int value) {
          bitField0_ |= 0x00000080;
          headIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 headIndex = 9;</code>
         * @return This builder for chaining.
         */
        public Builder clearHeadIndex() {
          bitField0_ = (bitField0_ & ~0x00000080);
          headIndex_ = 0;
          onChanged();
          return this;
        }

        private int sentenceIndex_ ;
        /**
         * <code>optional uint32 sentenceIndex = 10;</code>
         * @return Whether the sentenceIndex field is set.
         */
        @java.lang.Override
        public boolean hasSentenceIndex() {
          return ((bitField0_ & 0x00000100) != 0);
        }
        /**
         * <code>optional uint32 sentenceIndex = 10;</code>
         * @return The sentenceIndex.
         */
        @java.lang.Override
        public int getSentenceIndex() {
          return sentenceIndex_;
        }
        /**
         * <code>optional uint32 sentenceIndex = 10;</code>
         * @param value The sentenceIndex to set.
         * @return This builder for chaining.
         */
        public Builder setSentenceIndex(int value) {
          bitField0_ |= 0x00000100;
          sentenceIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 sentenceIndex = 10;</code>
         * @return This builder for chaining.
         */
        public Builder clearSentenceIndex() {
          bitField0_ = (bitField0_ & ~0x00000100);
          sentenceIndex_ = 0;
          onChanged();
          return this;
        }

        private int position_ ;
        /**
         * <pre>
         * the second element of position
         * </pre>
         *
         * <code>optional uint32 position = 11;</code>
         * @return Whether the position field is set.
         */
        @java.lang.Override
        public boolean hasPosition() {
          return ((bitField0_ & 0x00000200) != 0);
        }
        /**
         * <pre>
         * the second element of position
         * </pre>
         *
         * <code>optional uint32 position = 11;</code>
         * @return The position.
         */
        @java.lang.Override
        public int getPosition() {
          return position_;
        }
        /**
         * <pre>
         * the second element of position
         * </pre>
         *
         * <code>optional uint32 position = 11;</code>
         * @param value The position to set.
         * @return This builder for chaining.
         */
        public Builder setPosition(int value) {
          bitField0_ |= 0x00000200;
          position_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * the second element of position
         * </pre>
         *
         * <code>optional uint32 position = 11;</code>
         * @return This builder for chaining.
         */
        public Builder clearPosition() {
          bitField0_ = (bitField0_ & ~0x00000200);
          position_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.CorefChain.CorefMention)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.CorefChain.CorefMention)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<CorefMention>
          PARSER = new com.google.protobuf.AbstractParser<CorefMention>() {
        @java.lang.Override
        public CorefMention parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<CorefMention> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<CorefMention> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int CHAINID_FIELD_NUMBER = 1;
    private int chainID_;
    /**
     * <code>required int32 chainID = 1;</code>
     * @return Whether the chainID field is set.
     */
    @java.lang.Override
    public boolean hasChainID() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int32 chainID = 1;</code>
     * @return The chainID.
     */
    @java.lang.Override
    public int getChainID() {
      return chainID_;
    }

    public static final int MENTION_FIELD_NUMBER = 2;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention> mention_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention> getMentionList() {
      return mention_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder> 
        getMentionOrBuilderList() {
      return mention_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    @java.lang.Override
    public int getMentionCount() {
      return mention_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention getMention(int index) {
      return mention_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder getMentionOrBuilder(
        int index) {
      return mention_.get(index);
    }

    public static final int REPRESENTATIVE_FIELD_NUMBER = 3;
    private int representative_;
    /**
     * <code>required uint32 representative = 3;</code>
     * @return Whether the representative field is set.
     */
    @java.lang.Override
    public boolean hasRepresentative() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 representative = 3;</code>
     * @return The representative.
     */
    @java.lang.Override
    public int getRepresentative() {
      return representative_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasChainID()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRepresentative()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, chainID_);
      }
      for (int i = 0; i < mention_.size(); i++) {
        output.writeMessage(2, mention_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(3, representative_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, chainID_);
      }
      for (int i = 0; i < mention_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, mention_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, representative_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain other = (edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain) obj;

      if (hasChainID() != other.hasChainID()) return false;
      if (hasChainID()) {
        if (getChainID()
            != other.getChainID()) return false;
      }
      if (!getMentionList()
          .equals(other.getMentionList())) return false;
      if (hasRepresentative() != other.hasRepresentative()) return false;
      if (hasRepresentative()) {
        if (getRepresentative()
            != other.getRepresentative()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasChainID()) {
        hash = (37 * hash) + CHAINID_FIELD_NUMBER;
        hash = (53 * hash) + getChainID();
      }
      if (getMentionCount() > 0) {
        hash = (37 * hash) + MENTION_FIELD_NUMBER;
        hash = (53 * hash) + getMentionList().hashCode();
      }
      if (hasRepresentative()) {
        hash = (37 * hash) + REPRESENTATIVE_FIELD_NUMBER;
        hash = (53 * hash) + getRepresentative();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A coreference chain.
     * These fields are not *really* optional. CoreNLP will crash without them.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.CorefChain}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.CorefChain)
        edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChainOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.class, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        chainID_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (mentionBuilder_ == null) {
          mention_ = java.util.Collections.emptyList();
        } else {
          mention_ = null;
          mentionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        representative_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_CorefChain_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain result = new edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.chainID_ = chainID_;
          to_bitField0_ |= 0x00000001;
        }
        if (mentionBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            mention_ = java.util.Collections.unmodifiableList(mention_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.mention_ = mention_;
        } else {
          result.mention_ = mentionBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.representative_ = representative_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.getDefaultInstance()) return this;
        if (other.hasChainID()) {
          setChainID(other.getChainID());
        }
        if (mentionBuilder_ == null) {
          if (!other.mention_.isEmpty()) {
            if (mention_.isEmpty()) {
              mention_ = other.mention_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureMentionIsMutable();
              mention_.addAll(other.mention_);
            }
            onChanged();
          }
        } else {
          if (!other.mention_.isEmpty()) {
            if (mentionBuilder_.isEmpty()) {
              mentionBuilder_.dispose();
              mentionBuilder_ = null;
              mention_ = other.mention_;
              bitField0_ = (bitField0_ & ~0x00000002);
              mentionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMentionFieldBuilder() : null;
            } else {
              mentionBuilder_.addAllMessages(other.mention_);
            }
          }
        }
        if (other.hasRepresentative()) {
          setRepresentative(other.getRepresentative());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasChainID()) {
          return false;
        }
        if (!hasRepresentative()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                chainID_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.PARSER,
                        extensionRegistry);
                if (mentionBuilder_ == null) {
                  ensureMentionIsMutable();
                  mention_.add(m);
                } else {
                  mentionBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                representative_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int chainID_ ;
      /**
       * <code>required int32 chainID = 1;</code>
       * @return Whether the chainID field is set.
       */
      @java.lang.Override
      public boolean hasChainID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 chainID = 1;</code>
       * @return The chainID.
       */
      @java.lang.Override
      public int getChainID() {
        return chainID_;
      }
      /**
       * <code>required int32 chainID = 1;</code>
       * @param value The chainID to set.
       * @return This builder for chaining.
       */
      public Builder setChainID(int value) {
        bitField0_ |= 0x00000001;
        chainID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 chainID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearChainID() {
        bitField0_ = (bitField0_ & ~0x00000001);
        chainID_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention> mention_ =
        java.util.Collections.emptyList();
      private void ensureMentionIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          mention_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention>(mention_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder> mentionBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention> getMentionList() {
        if (mentionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mention_);
        } else {
          return mentionBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public int getMentionCount() {
        if (mentionBuilder_ == null) {
          return mention_.size();
        } else {
          return mentionBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention getMention(int index) {
        if (mentionBuilder_ == null) {
          return mention_.get(index);
        } else {
          return mentionBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder setMention(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention value) {
        if (mentionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionIsMutable();
          mention_.set(index, value);
          onChanged();
        } else {
          mentionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder setMention(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder builderForValue) {
        if (mentionBuilder_ == null) {
          ensureMentionIsMutable();
          mention_.set(index, builderForValue.build());
          onChanged();
        } else {
          mentionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder addMention(edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention value) {
        if (mentionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionIsMutable();
          mention_.add(value);
          onChanged();
        } else {
          mentionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder addMention(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention value) {
        if (mentionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMentionIsMutable();
          mention_.add(index, value);
          onChanged();
        } else {
          mentionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder addMention(
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder builderForValue) {
        if (mentionBuilder_ == null) {
          ensureMentionIsMutable();
          mention_.add(builderForValue.build());
          onChanged();
        } else {
          mentionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder addMention(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder builderForValue) {
        if (mentionBuilder_ == null) {
          ensureMentionIsMutable();
          mention_.add(index, builderForValue.build());
          onChanged();
        } else {
          mentionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder addAllMention(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention> values) {
        if (mentionBuilder_ == null) {
          ensureMentionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, mention_);
          onChanged();
        } else {
          mentionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder clearMention() {
        if (mentionBuilder_ == null) {
          mention_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          mentionBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public Builder removeMention(int index) {
        if (mentionBuilder_ == null) {
          ensureMentionIsMutable();
          mention_.remove(index);
          onChanged();
        } else {
          mentionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder getMentionBuilder(
          int index) {
        return getMentionFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder getMentionOrBuilder(
          int index) {
        if (mentionBuilder_ == null) {
          return mention_.get(index);  } else {
          return mentionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder> 
           getMentionOrBuilderList() {
        if (mentionBuilder_ != null) {
          return mentionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mention_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder addMentionBuilder() {
        return getMentionFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder addMentionBuilder(
          int index) {
        return getMentionFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.CorefChain.CorefMention mention = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder> 
           getMentionBuilderList() {
        return getMentionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder> 
          getMentionFieldBuilder() {
        if (mentionBuilder_ == null) {
          mentionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMention.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain.CorefMentionOrBuilder>(
                  mention_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          mention_ = null;
        }
        return mentionBuilder_;
      }

      private int representative_ ;
      /**
       * <code>required uint32 representative = 3;</code>
       * @return Whether the representative field is set.
       */
      @java.lang.Override
      public boolean hasRepresentative() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required uint32 representative = 3;</code>
       * @return The representative.
       */
      @java.lang.Override
      public int getRepresentative() {
        return representative_;
      }
      /**
       * <code>required uint32 representative = 3;</code>
       * @param value The representative to set.
       * @return This builder for chaining.
       */
      public Builder setRepresentative(int value) {
        bitField0_ |= 0x00000004;
        representative_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 representative = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRepresentative() {
        bitField0_ = (bitField0_ & ~0x00000004);
        representative_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.CorefChain)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.CorefChain)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<CorefChain>
        PARSER = new com.google.protobuf.AbstractParser<CorefChain>() {
      @java.lang.Override
      public CorefChain parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CorefChain> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CorefChain> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.CorefChain getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MentionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Mention)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional int32 mentionID = 1;</code>
     * @return Whether the mentionID field is set.
     */
    boolean hasMentionID();
    /**
     * <code>optional int32 mentionID = 1;</code>
     * @return The mentionID.
     */
    int getMentionID();

    /**
     * <code>optional string mentionType = 2;</code>
     * @return Whether the mentionType field is set.
     */
    boolean hasMentionType();
    /**
     * <code>optional string mentionType = 2;</code>
     * @return The mentionType.
     */
    java.lang.String getMentionType();
    /**
     * <code>optional string mentionType = 2;</code>
     * @return The bytes for mentionType.
     */
    com.google.protobuf.ByteString
        getMentionTypeBytes();

    /**
     * <code>optional string number = 3;</code>
     * @return Whether the number field is set.
     */
    boolean hasNumber();
    /**
     * <code>optional string number = 3;</code>
     * @return The number.
     */
    java.lang.String getNumber();
    /**
     * <code>optional string number = 3;</code>
     * @return The bytes for number.
     */
    com.google.protobuf.ByteString
        getNumberBytes();

    /**
     * <code>optional string gender = 4;</code>
     * @return Whether the gender field is set.
     */
    boolean hasGender();
    /**
     * <code>optional string gender = 4;</code>
     * @return The gender.
     */
    java.lang.String getGender();
    /**
     * <code>optional string gender = 4;</code>
     * @return The bytes for gender.
     */
    com.google.protobuf.ByteString
        getGenderBytes();

    /**
     * <code>optional string animacy = 5;</code>
     * @return Whether the animacy field is set.
     */
    boolean hasAnimacy();
    /**
     * <code>optional string animacy = 5;</code>
     * @return The animacy.
     */
    java.lang.String getAnimacy();
    /**
     * <code>optional string animacy = 5;</code>
     * @return The bytes for animacy.
     */
    com.google.protobuf.ByteString
        getAnimacyBytes();

    /**
     * <code>optional string person = 6;</code>
     * @return Whether the person field is set.
     */
    boolean hasPerson();
    /**
     * <code>optional string person = 6;</code>
     * @return The person.
     */
    java.lang.String getPerson();
    /**
     * <code>optional string person = 6;</code>
     * @return The bytes for person.
     */
    com.google.protobuf.ByteString
        getPersonBytes();

    /**
     * <code>optional uint32 startIndex = 7;</code>
     * @return Whether the startIndex field is set.
     */
    boolean hasStartIndex();
    /**
     * <code>optional uint32 startIndex = 7;</code>
     * @return The startIndex.
     */
    int getStartIndex();

    /**
     * <code>optional uint32 endIndex = 9;</code>
     * @return Whether the endIndex field is set.
     */
    boolean hasEndIndex();
    /**
     * <code>optional uint32 endIndex = 9;</code>
     * @return The endIndex.
     */
    int getEndIndex();

    /**
     * <code>optional int32 headIndex = 10;</code>
     * @return Whether the headIndex field is set.
     */
    boolean hasHeadIndex();
    /**
     * <code>optional int32 headIndex = 10;</code>
     * @return The headIndex.
     */
    int getHeadIndex();

    /**
     * <code>optional string headString = 11;</code>
     * @return Whether the headString field is set.
     */
    boolean hasHeadString();
    /**
     * <code>optional string headString = 11;</code>
     * @return The headString.
     */
    java.lang.String getHeadString();
    /**
     * <code>optional string headString = 11;</code>
     * @return The bytes for headString.
     */
    com.google.protobuf.ByteString
        getHeadStringBytes();

    /**
     * <code>optional string nerString = 12;</code>
     * @return Whether the nerString field is set.
     */
    boolean hasNerString();
    /**
     * <code>optional string nerString = 12;</code>
     * @return The nerString.
     */
    java.lang.String getNerString();
    /**
     * <code>optional string nerString = 12;</code>
     * @return The bytes for nerString.
     */
    com.google.protobuf.ByteString
        getNerStringBytes();

    /**
     * <code>optional int32 originalRef = 13;</code>
     * @return Whether the originalRef field is set.
     */
    boolean hasOriginalRef();
    /**
     * <code>optional int32 originalRef = 13;</code>
     * @return The originalRef.
     */
    int getOriginalRef();

    /**
     * <code>optional int32 goldCorefClusterID = 14;</code>
     * @return Whether the goldCorefClusterID field is set.
     */
    boolean hasGoldCorefClusterID();
    /**
     * <code>optional int32 goldCorefClusterID = 14;</code>
     * @return The goldCorefClusterID.
     */
    int getGoldCorefClusterID();

    /**
     * <code>optional int32 corefClusterID = 15;</code>
     * @return Whether the corefClusterID field is set.
     */
    boolean hasCorefClusterID();
    /**
     * <code>optional int32 corefClusterID = 15;</code>
     * @return The corefClusterID.
     */
    int getCorefClusterID();

    /**
     * <code>optional int32 mentionNum = 16;</code>
     * @return Whether the mentionNum field is set.
     */
    boolean hasMentionNum();
    /**
     * <code>optional int32 mentionNum = 16;</code>
     * @return The mentionNum.
     */
    int getMentionNum();

    /**
     * <code>optional int32 sentNum = 17;</code>
     * @return Whether the sentNum field is set.
     */
    boolean hasSentNum();
    /**
     * <code>optional int32 sentNum = 17;</code>
     * @return The sentNum.
     */
    int getSentNum();

    /**
     * <code>optional int32 utter = 18;</code>
     * @return Whether the utter field is set.
     */
    boolean hasUtter();
    /**
     * <code>optional int32 utter = 18;</code>
     * @return The utter.
     */
    int getUtter();

    /**
     * <code>optional int32 paragraph = 19;</code>
     * @return Whether the paragraph field is set.
     */
    boolean hasParagraph();
    /**
     * <code>optional int32 paragraph = 19;</code>
     * @return The paragraph.
     */
    int getParagraph();

    /**
     * <code>optional bool isSubject = 20;</code>
     * @return Whether the isSubject field is set.
     */
    boolean hasIsSubject();
    /**
     * <code>optional bool isSubject = 20;</code>
     * @return The isSubject.
     */
    boolean getIsSubject();

    /**
     * <code>optional bool isDirectObject = 21;</code>
     * @return Whether the isDirectObject field is set.
     */
    boolean hasIsDirectObject();
    /**
     * <code>optional bool isDirectObject = 21;</code>
     * @return The isDirectObject.
     */
    boolean getIsDirectObject();

    /**
     * <code>optional bool isIndirectObject = 22;</code>
     * @return Whether the isIndirectObject field is set.
     */
    boolean hasIsIndirectObject();
    /**
     * <code>optional bool isIndirectObject = 22;</code>
     * @return The isIndirectObject.
     */
    boolean getIsIndirectObject();

    /**
     * <code>optional bool isPrepositionObject = 23;</code>
     * @return Whether the isPrepositionObject field is set.
     */
    boolean hasIsPrepositionObject();
    /**
     * <code>optional bool isPrepositionObject = 23;</code>
     * @return The isPrepositionObject.
     */
    boolean getIsPrepositionObject();

    /**
     * <code>optional bool hasTwin = 24;</code>
     * @return Whether the hasTwin field is set.
     */
    boolean hasHasTwin();
    /**
     * <code>optional bool hasTwin = 24;</code>
     * @return The hasTwin.
     */
    boolean getHasTwin();

    /**
     * <code>optional bool generic = 25;</code>
     * @return Whether the generic field is set.
     */
    boolean hasGeneric();
    /**
     * <code>optional bool generic = 25;</code>
     * @return The generic.
     */
    boolean getGeneric();

    /**
     * <code>optional bool isSingleton = 26;</code>
     * @return Whether the isSingleton field is set.
     */
    boolean hasIsSingleton();
    /**
     * <code>optional bool isSingleton = 26;</code>
     * @return The isSingleton.
     */
    boolean getIsSingleton();

    /**
     * <code>optional bool hasBasicDependency = 27;</code>
     * @return Whether the hasBasicDependency field is set.
     */
    boolean hasHasBasicDependency();
    /**
     * <code>optional bool hasBasicDependency = 27;</code>
     * @return The hasBasicDependency.
     */
    boolean getHasBasicDependency();

    /**
     * <code>optional bool hasEnhancedDependency = 28;</code>
     * @return Whether the hasEnhancedDependency field is set.
     */
    boolean hasHasEnhancedDependency();
    /**
     * <code>optional bool hasEnhancedDependency = 28;</code>
     * @return The hasEnhancedDependency.
     */
    boolean getHasEnhancedDependency();

    /**
     * <code>optional bool hasContextParseTree = 29;</code>
     * @return Whether the hasContextParseTree field is set.
     */
    boolean hasHasContextParseTree();
    /**
     * <code>optional bool hasContextParseTree = 29;</code>
     * @return The hasContextParseTree.
     */
    boolean getHasContextParseTree();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
     * @return Whether the headIndexedWord field is set.
     */
    boolean hasHeadIndexedWord();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
     * @return The headIndexedWord.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getHeadIndexedWord();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getHeadIndexedWordOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
     * @return Whether the dependingVerb field is set.
     */
    boolean hasDependingVerb();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
     * @return The dependingVerb.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getDependingVerb();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getDependingVerbOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
     * @return Whether the headWord field is set.
     */
    boolean hasHeadWord();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
     * @return The headWord.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getHeadWord();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getHeadWordOrBuilder();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
     * @return Whether the speakerInfo field is set.
     */
    boolean hasSpeakerInfo();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
     * @return The speakerInfo.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo getSpeakerInfo();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfoOrBuilder getSpeakerInfoOrBuilder();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> 
        getSentenceWordsList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getSentenceWords(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    int getSentenceWordsCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
        getSentenceWordsOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getSentenceWordsOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> 
        getOriginalSpanList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getOriginalSpan(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    int getOriginalSpanCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
        getOriginalSpanOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getOriginalSpanOrBuilder(
        int index);

    /**
     * <code>repeated string dependents = 52;</code>
     * @return A list containing the dependents.
     */
    java.util.List<java.lang.String>
        getDependentsList();
    /**
     * <code>repeated string dependents = 52;</code>
     * @return The count of dependents.
     */
    int getDependentsCount();
    /**
     * <code>repeated string dependents = 52;</code>
     * @param index The index of the element to return.
     * @return The dependents at the given index.
     */
    java.lang.String getDependents(int index);
    /**
     * <code>repeated string dependents = 52;</code>
     * @param index The index of the value to return.
     * @return The bytes of the dependents at the given index.
     */
    com.google.protobuf.ByteString
        getDependentsBytes(int index);

    /**
     * <code>repeated string preprocessedTerms = 53;</code>
     * @return A list containing the preprocessedTerms.
     */
    java.util.List<java.lang.String>
        getPreprocessedTermsList();
    /**
     * <code>repeated string preprocessedTerms = 53;</code>
     * @return The count of preprocessedTerms.
     */
    int getPreprocessedTermsCount();
    /**
     * <code>repeated string preprocessedTerms = 53;</code>
     * @param index The index of the element to return.
     * @return The preprocessedTerms at the given index.
     */
    java.lang.String getPreprocessedTerms(int index);
    /**
     * <code>repeated string preprocessedTerms = 53;</code>
     * @param index The index of the value to return.
     * @return The bytes of the preprocessedTerms at the given index.
     */
    com.google.protobuf.ByteString
        getPreprocessedTermsBytes(int index);

    /**
     * <code>repeated int32 appositions = 54;</code>
     * @return A list containing the appositions.
     */
    java.util.List<java.lang.Integer> getAppositionsList();
    /**
     * <code>repeated int32 appositions = 54;</code>
     * @return The count of appositions.
     */
    int getAppositionsCount();
    /**
     * <code>repeated int32 appositions = 54;</code>
     * @param index The index of the element to return.
     * @return The appositions at the given index.
     */
    int getAppositions(int index);

    /**
     * <code>repeated int32 predicateNominatives = 55;</code>
     * @return A list containing the predicateNominatives.
     */
    java.util.List<java.lang.Integer> getPredicateNominativesList();
    /**
     * <code>repeated int32 predicateNominatives = 55;</code>
     * @return The count of predicateNominatives.
     */
    int getPredicateNominativesCount();
    /**
     * <code>repeated int32 predicateNominatives = 55;</code>
     * @param index The index of the element to return.
     * @return The predicateNominatives at the given index.
     */
    int getPredicateNominatives(int index);

    /**
     * <code>repeated int32 relativePronouns = 56;</code>
     * @return A list containing the relativePronouns.
     */
    java.util.List<java.lang.Integer> getRelativePronounsList();
    /**
     * <code>repeated int32 relativePronouns = 56;</code>
     * @return The count of relativePronouns.
     */
    int getRelativePronounsCount();
    /**
     * <code>repeated int32 relativePronouns = 56;</code>
     * @param index The index of the element to return.
     * @return The relativePronouns at the given index.
     */
    int getRelativePronouns(int index);

    /**
     * <code>repeated int32 listMembers = 57;</code>
     * @return A list containing the listMembers.
     */
    java.util.List<java.lang.Integer> getListMembersList();
    /**
     * <code>repeated int32 listMembers = 57;</code>
     * @return The count of listMembers.
     */
    int getListMembersCount();
    /**
     * <code>repeated int32 listMembers = 57;</code>
     * @param index The index of the element to return.
     * @return The listMembers at the given index.
     */
    int getListMembers(int index);

    /**
     * <code>repeated int32 belongToLists = 58;</code>
     * @return A list containing the belongToLists.
     */
    java.util.List<java.lang.Integer> getBelongToListsList();
    /**
     * <code>repeated int32 belongToLists = 58;</code>
     * @return The count of belongToLists.
     */
    int getBelongToListsCount();
    /**
     * <code>repeated int32 belongToLists = 58;</code>
     * @param index The index of the element to return.
     * @return The belongToLists at the given index.
     */
    int getBelongToLists(int index);
  }
  /**
   * Protobuf type {@code edu.stanford.nlp.pipeline.Mention}
   */
  public static final class Mention extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Mention)
      MentionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Mention.newBuilder() to construct.
    private Mention(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Mention() {
      mentionType_ = "";
      number_ = "";
      gender_ = "";
      animacy_ = "";
      person_ = "";
      headString_ = "";
      nerString_ = "";
      sentenceWords_ = java.util.Collections.emptyList();
      originalSpan_ = java.util.Collections.emptyList();
      dependents_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      preprocessedTerms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      appositions_ = emptyIntList();
      predicateNominatives_ = emptyIntList();
      relativePronouns_ = emptyIntList();
      listMembers_ = emptyIntList();
      belongToLists_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Mention();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Mention_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Mention_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder.class);
    }

    private int bitField0_;
    public static final int MENTIONID_FIELD_NUMBER = 1;
    private int mentionID_;
    /**
     * <code>optional int32 mentionID = 1;</code>
     * @return Whether the mentionID field is set.
     */
    @java.lang.Override
    public boolean hasMentionID() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional int32 mentionID = 1;</code>
     * @return The mentionID.
     */
    @java.lang.Override
    public int getMentionID() {
      return mentionID_;
    }

    public static final int MENTIONTYPE_FIELD_NUMBER = 2;
    private volatile java.lang.Object mentionType_;
    /**
     * <code>optional string mentionType = 2;</code>
     * @return Whether the mentionType field is set.
     */
    @java.lang.Override
    public boolean hasMentionType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string mentionType = 2;</code>
     * @return The mentionType.
     */
    @java.lang.Override
    public java.lang.String getMentionType() {
      java.lang.Object ref = mentionType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          mentionType_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string mentionType = 2;</code>
     * @return The bytes for mentionType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMentionTypeBytes() {
      java.lang.Object ref = mentionType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mentionType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NUMBER_FIELD_NUMBER = 3;
    private volatile java.lang.Object number_;
    /**
     * <code>optional string number = 3;</code>
     * @return Whether the number field is set.
     */
    @java.lang.Override
    public boolean hasNumber() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string number = 3;</code>
     * @return The number.
     */
    @java.lang.Override
    public java.lang.String getNumber() {
      java.lang.Object ref = number_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          number_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string number = 3;</code>
     * @return The bytes for number.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNumberBytes() {
      java.lang.Object ref = number_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        number_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GENDER_FIELD_NUMBER = 4;
    private volatile java.lang.Object gender_;
    /**
     * <code>optional string gender = 4;</code>
     * @return Whether the gender field is set.
     */
    @java.lang.Override
    public boolean hasGender() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string gender = 4;</code>
     * @return The gender.
     */
    @java.lang.Override
    public java.lang.String getGender() {
      java.lang.Object ref = gender_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          gender_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string gender = 4;</code>
     * @return The bytes for gender.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGenderBytes() {
      java.lang.Object ref = gender_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gender_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ANIMACY_FIELD_NUMBER = 5;
    private volatile java.lang.Object animacy_;
    /**
     * <code>optional string animacy = 5;</code>
     * @return Whether the animacy field is set.
     */
    @java.lang.Override
    public boolean hasAnimacy() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string animacy = 5;</code>
     * @return The animacy.
     */
    @java.lang.Override
    public java.lang.String getAnimacy() {
      java.lang.Object ref = animacy_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          animacy_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string animacy = 5;</code>
     * @return The bytes for animacy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAnimacyBytes() {
      java.lang.Object ref = animacy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        animacy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PERSON_FIELD_NUMBER = 6;
    private volatile java.lang.Object person_;
    /**
     * <code>optional string person = 6;</code>
     * @return Whether the person field is set.
     */
    @java.lang.Override
    public boolean hasPerson() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional string person = 6;</code>
     * @return The person.
     */
    @java.lang.Override
    public java.lang.String getPerson() {
      java.lang.Object ref = person_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          person_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string person = 6;</code>
     * @return The bytes for person.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPersonBytes() {
      java.lang.Object ref = person_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        person_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STARTINDEX_FIELD_NUMBER = 7;
    private int startIndex_;
    /**
     * <code>optional uint32 startIndex = 7;</code>
     * @return Whether the startIndex field is set.
     */
    @java.lang.Override
    public boolean hasStartIndex() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional uint32 startIndex = 7;</code>
     * @return The startIndex.
     */
    @java.lang.Override
    public int getStartIndex() {
      return startIndex_;
    }

    public static final int ENDINDEX_FIELD_NUMBER = 9;
    private int endIndex_;
    /**
     * <code>optional uint32 endIndex = 9;</code>
     * @return Whether the endIndex field is set.
     */
    @java.lang.Override
    public boolean hasEndIndex() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional uint32 endIndex = 9;</code>
     * @return The endIndex.
     */
    @java.lang.Override
    public int getEndIndex() {
      return endIndex_;
    }

    public static final int HEADINDEX_FIELD_NUMBER = 10;
    private int headIndex_;
    /**
     * <code>optional int32 headIndex = 10;</code>
     * @return Whether the headIndex field is set.
     */
    @java.lang.Override
    public boolean hasHeadIndex() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional int32 headIndex = 10;</code>
     * @return The headIndex.
     */
    @java.lang.Override
    public int getHeadIndex() {
      return headIndex_;
    }

    public static final int HEADSTRING_FIELD_NUMBER = 11;
    private volatile java.lang.Object headString_;
    /**
     * <code>optional string headString = 11;</code>
     * @return Whether the headString field is set.
     */
    @java.lang.Override
    public boolean hasHeadString() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional string headString = 11;</code>
     * @return The headString.
     */
    @java.lang.Override
    public java.lang.String getHeadString() {
      java.lang.Object ref = headString_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          headString_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string headString = 11;</code>
     * @return The bytes for headString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHeadStringBytes() {
      java.lang.Object ref = headString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        headString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NERSTRING_FIELD_NUMBER = 12;
    private volatile java.lang.Object nerString_;
    /**
     * <code>optional string nerString = 12;</code>
     * @return Whether the nerString field is set.
     */
    @java.lang.Override
    public boolean hasNerString() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional string nerString = 12;</code>
     * @return The nerString.
     */
    @java.lang.Override
    public java.lang.String getNerString() {
      java.lang.Object ref = nerString_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          nerString_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string nerString = 12;</code>
     * @return The bytes for nerString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNerStringBytes() {
      java.lang.Object ref = nerString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nerString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ORIGINALREF_FIELD_NUMBER = 13;
    private int originalRef_;
    /**
     * <code>optional int32 originalRef = 13;</code>
     * @return Whether the originalRef field is set.
     */
    @java.lang.Override
    public boolean hasOriginalRef() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional int32 originalRef = 13;</code>
     * @return The originalRef.
     */
    @java.lang.Override
    public int getOriginalRef() {
      return originalRef_;
    }

    public static final int GOLDCOREFCLUSTERID_FIELD_NUMBER = 14;
    private int goldCorefClusterID_;
    /**
     * <code>optional int32 goldCorefClusterID = 14;</code>
     * @return Whether the goldCorefClusterID field is set.
     */
    @java.lang.Override
    public boolean hasGoldCorefClusterID() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional int32 goldCorefClusterID = 14;</code>
     * @return The goldCorefClusterID.
     */
    @java.lang.Override
    public int getGoldCorefClusterID() {
      return goldCorefClusterID_;
    }

    public static final int COREFCLUSTERID_FIELD_NUMBER = 15;
    private int corefClusterID_;
    /**
     * <code>optional int32 corefClusterID = 15;</code>
     * @return Whether the corefClusterID field is set.
     */
    @java.lang.Override
    public boolean hasCorefClusterID() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional int32 corefClusterID = 15;</code>
     * @return The corefClusterID.
     */
    @java.lang.Override
    public int getCorefClusterID() {
      return corefClusterID_;
    }

    public static final int MENTIONNUM_FIELD_NUMBER = 16;
    private int mentionNum_;
    /**
     * <code>optional int32 mentionNum = 16;</code>
     * @return Whether the mentionNum field is set.
     */
    @java.lang.Override
    public boolean hasMentionNum() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>optional int32 mentionNum = 16;</code>
     * @return The mentionNum.
     */
    @java.lang.Override
    public int getMentionNum() {
      return mentionNum_;
    }

    public static final int SENTNUM_FIELD_NUMBER = 17;
    private int sentNum_;
    /**
     * <code>optional int32 sentNum = 17;</code>
     * @return Whether the sentNum field is set.
     */
    @java.lang.Override
    public boolean hasSentNum() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>optional int32 sentNum = 17;</code>
     * @return The sentNum.
     */
    @java.lang.Override
    public int getSentNum() {
      return sentNum_;
    }

    public static final int UTTER_FIELD_NUMBER = 18;
    private int utter_;
    /**
     * <code>optional int32 utter = 18;</code>
     * @return Whether the utter field is set.
     */
    @java.lang.Override
    public boolean hasUtter() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <code>optional int32 utter = 18;</code>
     * @return The utter.
     */
    @java.lang.Override
    public int getUtter() {
      return utter_;
    }

    public static final int PARAGRAPH_FIELD_NUMBER = 19;
    private int paragraph_;
    /**
     * <code>optional int32 paragraph = 19;</code>
     * @return Whether the paragraph field is set.
     */
    @java.lang.Override
    public boolean hasParagraph() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>optional int32 paragraph = 19;</code>
     * @return The paragraph.
     */
    @java.lang.Override
    public int getParagraph() {
      return paragraph_;
    }

    public static final int ISSUBJECT_FIELD_NUMBER = 20;
    private boolean isSubject_;
    /**
     * <code>optional bool isSubject = 20;</code>
     * @return Whether the isSubject field is set.
     */
    @java.lang.Override
    public boolean hasIsSubject() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <code>optional bool isSubject = 20;</code>
     * @return The isSubject.
     */
    @java.lang.Override
    public boolean getIsSubject() {
      return isSubject_;
    }

    public static final int ISDIRECTOBJECT_FIELD_NUMBER = 21;
    private boolean isDirectObject_;
    /**
     * <code>optional bool isDirectObject = 21;</code>
     * @return Whether the isDirectObject field is set.
     */
    @java.lang.Override
    public boolean hasIsDirectObject() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <code>optional bool isDirectObject = 21;</code>
     * @return The isDirectObject.
     */
    @java.lang.Override
    public boolean getIsDirectObject() {
      return isDirectObject_;
    }

    public static final int ISINDIRECTOBJECT_FIELD_NUMBER = 22;
    private boolean isIndirectObject_;
    /**
     * <code>optional bool isIndirectObject = 22;</code>
     * @return Whether the isIndirectObject field is set.
     */
    @java.lang.Override
    public boolean hasIsIndirectObject() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <code>optional bool isIndirectObject = 22;</code>
     * @return The isIndirectObject.
     */
    @java.lang.Override
    public boolean getIsIndirectObject() {
      return isIndirectObject_;
    }

    public static final int ISPREPOSITIONOBJECT_FIELD_NUMBER = 23;
    private boolean isPrepositionObject_;
    /**
     * <code>optional bool isPrepositionObject = 23;</code>
     * @return Whether the isPrepositionObject field is set.
     */
    @java.lang.Override
    public boolean hasIsPrepositionObject() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * <code>optional bool isPrepositionObject = 23;</code>
     * @return The isPrepositionObject.
     */
    @java.lang.Override
    public boolean getIsPrepositionObject() {
      return isPrepositionObject_;
    }

    public static final int HASTWIN_FIELD_NUMBER = 24;
    private boolean hasTwin_;
    /**
     * <code>optional bool hasTwin = 24;</code>
     * @return Whether the hasTwin field is set.
     */
    @java.lang.Override
    public boolean hasHasTwin() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * <code>optional bool hasTwin = 24;</code>
     * @return The hasTwin.
     */
    @java.lang.Override
    public boolean getHasTwin() {
      return hasTwin_;
    }

    public static final int GENERIC_FIELD_NUMBER = 25;
    private boolean generic_;
    /**
     * <code>optional bool generic = 25;</code>
     * @return Whether the generic field is set.
     */
    @java.lang.Override
    public boolean hasGeneric() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * <code>optional bool generic = 25;</code>
     * @return The generic.
     */
    @java.lang.Override
    public boolean getGeneric() {
      return generic_;
    }

    public static final int ISSINGLETON_FIELD_NUMBER = 26;
    private boolean isSingleton_;
    /**
     * <code>optional bool isSingleton = 26;</code>
     * @return Whether the isSingleton field is set.
     */
    @java.lang.Override
    public boolean hasIsSingleton() {
      return ((bitField0_ & 0x01000000) != 0);
    }
    /**
     * <code>optional bool isSingleton = 26;</code>
     * @return The isSingleton.
     */
    @java.lang.Override
    public boolean getIsSingleton() {
      return isSingleton_;
    }

    public static final int HASBASICDEPENDENCY_FIELD_NUMBER = 27;
    private boolean hasBasicDependency_;
    /**
     * <code>optional bool hasBasicDependency = 27;</code>
     * @return Whether the hasBasicDependency field is set.
     */
    @java.lang.Override
    public boolean hasHasBasicDependency() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * <code>optional bool hasBasicDependency = 27;</code>
     * @return The hasBasicDependency.
     */
    @java.lang.Override
    public boolean getHasBasicDependency() {
      return hasBasicDependency_;
    }

    public static final int HASENHANCEDDEPENDENCY_FIELD_NUMBER = 28;
    private boolean hasEnhancedDependency_;
    /**
     * <code>optional bool hasEnhancedDependency = 28;</code>
     * @return Whether the hasEnhancedDependency field is set.
     */
    @java.lang.Override
    public boolean hasHasEnhancedDependency() {
      return ((bitField0_ & 0x04000000) != 0);
    }
    /**
     * <code>optional bool hasEnhancedDependency = 28;</code>
     * @return The hasEnhancedDependency.
     */
    @java.lang.Override
    public boolean getHasEnhancedDependency() {
      return hasEnhancedDependency_;
    }

    public static final int HASCONTEXTPARSETREE_FIELD_NUMBER = 29;
    private boolean hasContextParseTree_;
    /**
     * <code>optional bool hasContextParseTree = 29;</code>
     * @return Whether the hasContextParseTree field is set.
     */
    @java.lang.Override
    public boolean hasHasContextParseTree() {
      return ((bitField0_ & 0x08000000) != 0);
    }
    /**
     * <code>optional bool hasContextParseTree = 29;</code>
     * @return The hasContextParseTree.
     */
    @java.lang.Override
    public boolean getHasContextParseTree() {
      return hasContextParseTree_;
    }

    public static final int HEADINDEXEDWORD_FIELD_NUMBER = 30;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord headIndexedWord_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
     * @return Whether the headIndexedWord field is set.
     */
    @java.lang.Override
    public boolean hasHeadIndexedWord() {
      return ((bitField0_ & 0x10000000) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
     * @return The headIndexedWord.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getHeadIndexedWord() {
      return headIndexedWord_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : headIndexedWord_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getHeadIndexedWordOrBuilder() {
      return headIndexedWord_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : headIndexedWord_;
    }

    public static final int DEPENDINGVERB_FIELD_NUMBER = 31;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord dependingVerb_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
     * @return Whether the dependingVerb field is set.
     */
    @java.lang.Override
    public boolean hasDependingVerb() {
      return ((bitField0_ & 0x20000000) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
     * @return The dependingVerb.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getDependingVerb() {
      return dependingVerb_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : dependingVerb_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getDependingVerbOrBuilder() {
      return dependingVerb_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : dependingVerb_;
    }

    public static final int HEADWORD_FIELD_NUMBER = 32;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord headWord_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
     * @return Whether the headWord field is set.
     */
    @java.lang.Override
    public boolean hasHeadWord() {
      return ((bitField0_ & 0x40000000) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
     * @return The headWord.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getHeadWord() {
      return headWord_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : headWord_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getHeadWordOrBuilder() {
      return headWord_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : headWord_;
    }

    public static final int SPEAKERINFO_FIELD_NUMBER = 33;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo speakerInfo_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
     * @return Whether the speakerInfo field is set.
     */
    @java.lang.Override
    public boolean hasSpeakerInfo() {
      return ((bitField0_ & 0x80000000) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
     * @return The speakerInfo.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo getSpeakerInfo() {
      return speakerInfo_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.getDefaultInstance() : speakerInfo_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfoOrBuilder getSpeakerInfoOrBuilder() {
      return speakerInfo_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.getDefaultInstance() : speakerInfo_;
    }

    public static final int SENTENCEWORDS_FIELD_NUMBER = 50;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> sentenceWords_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> getSentenceWordsList() {
      return sentenceWords_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
        getSentenceWordsOrBuilderList() {
      return sentenceWords_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    @java.lang.Override
    public int getSentenceWordsCount() {
      return sentenceWords_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getSentenceWords(int index) {
      return sentenceWords_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getSentenceWordsOrBuilder(
        int index) {
      return sentenceWords_.get(index);
    }

    public static final int ORIGINALSPAN_FIELD_NUMBER = 51;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> originalSpan_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> getOriginalSpanList() {
      return originalSpan_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
        getOriginalSpanOrBuilderList() {
      return originalSpan_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    @java.lang.Override
    public int getOriginalSpanCount() {
      return originalSpan_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getOriginalSpan(int index) {
      return originalSpan_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getOriginalSpanOrBuilder(
        int index) {
      return originalSpan_.get(index);
    }

    public static final int DEPENDENTS_FIELD_NUMBER = 52;
    private com.google.protobuf.LazyStringList dependents_;
    /**
     * <code>repeated string dependents = 52;</code>
     * @return A list containing the dependents.
     */
    public com.google.protobuf.ProtocolStringList
        getDependentsList() {
      return dependents_;
    }
    /**
     * <code>repeated string dependents = 52;</code>
     * @return The count of dependents.
     */
    public int getDependentsCount() {
      return dependents_.size();
    }
    /**
     * <code>repeated string dependents = 52;</code>
     * @param index The index of the element to return.
     * @return The dependents at the given index.
     */
    public java.lang.String getDependents(int index) {
      return dependents_.get(index);
    }
    /**
     * <code>repeated string dependents = 52;</code>
     * @param index The index of the value to return.
     * @return The bytes of the dependents at the given index.
     */
    public com.google.protobuf.ByteString
        getDependentsBytes(int index) {
      return dependents_.getByteString(index);
    }

    public static final int PREPROCESSEDTERMS_FIELD_NUMBER = 53;
    private com.google.protobuf.LazyStringList preprocessedTerms_;
    /**
     * <code>repeated string preprocessedTerms = 53;</code>
     * @return A list containing the preprocessedTerms.
     */
    public com.google.protobuf.ProtocolStringList
        getPreprocessedTermsList() {
      return preprocessedTerms_;
    }
    /**
     * <code>repeated string preprocessedTerms = 53;</code>
     * @return The count of preprocessedTerms.
     */
    public int getPreprocessedTermsCount() {
      return preprocessedTerms_.size();
    }
    /**
     * <code>repeated string preprocessedTerms = 53;</code>
     * @param index The index of the element to return.
     * @return The preprocessedTerms at the given index.
     */
    public java.lang.String getPreprocessedTerms(int index) {
      return preprocessedTerms_.get(index);
    }
    /**
     * <code>repeated string preprocessedTerms = 53;</code>
     * @param index The index of the value to return.
     * @return The bytes of the preprocessedTerms at the given index.
     */
    public com.google.protobuf.ByteString
        getPreprocessedTermsBytes(int index) {
      return preprocessedTerms_.getByteString(index);
    }

    public static final int APPOSITIONS_FIELD_NUMBER = 54;
    private com.google.protobuf.Internal.IntList appositions_;
    /**
     * <code>repeated int32 appositions = 54;</code>
     * @return A list containing the appositions.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getAppositionsList() {
      return appositions_;
    }
    /**
     * <code>repeated int32 appositions = 54;</code>
     * @return The count of appositions.
     */
    public int getAppositionsCount() {
      return appositions_.size();
    }
    /**
     * <code>repeated int32 appositions = 54;</code>
     * @param index The index of the element to return.
     * @return The appositions at the given index.
     */
    public int getAppositions(int index) {
      return appositions_.getInt(index);
    }

    public static final int PREDICATENOMINATIVES_FIELD_NUMBER = 55;
    private com.google.protobuf.Internal.IntList predicateNominatives_;
    /**
     * <code>repeated int32 predicateNominatives = 55;</code>
     * @return A list containing the predicateNominatives.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getPredicateNominativesList() {
      return predicateNominatives_;
    }
    /**
     * <code>repeated int32 predicateNominatives = 55;</code>
     * @return The count of predicateNominatives.
     */
    public int getPredicateNominativesCount() {
      return predicateNominatives_.size();
    }
    /**
     * <code>repeated int32 predicateNominatives = 55;</code>
     * @param index The index of the element to return.
     * @return The predicateNominatives at the given index.
     */
    public int getPredicateNominatives(int index) {
      return predicateNominatives_.getInt(index);
    }

    public static final int RELATIVEPRONOUNS_FIELD_NUMBER = 56;
    private com.google.protobuf.Internal.IntList relativePronouns_;
    /**
     * <code>repeated int32 relativePronouns = 56;</code>
     * @return A list containing the relativePronouns.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getRelativePronounsList() {
      return relativePronouns_;
    }
    /**
     * <code>repeated int32 relativePronouns = 56;</code>
     * @return The count of relativePronouns.
     */
    public int getRelativePronounsCount() {
      return relativePronouns_.size();
    }
    /**
     * <code>repeated int32 relativePronouns = 56;</code>
     * @param index The index of the element to return.
     * @return The relativePronouns at the given index.
     */
    public int getRelativePronouns(int index) {
      return relativePronouns_.getInt(index);
    }

    public static final int LISTMEMBERS_FIELD_NUMBER = 57;
    private com.google.protobuf.Internal.IntList listMembers_;
    /**
     * <code>repeated int32 listMembers = 57;</code>
     * @return A list containing the listMembers.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getListMembersList() {
      return listMembers_;
    }
    /**
     * <code>repeated int32 listMembers = 57;</code>
     * @return The count of listMembers.
     */
    public int getListMembersCount() {
      return listMembers_.size();
    }
    /**
     * <code>repeated int32 listMembers = 57;</code>
     * @param index The index of the element to return.
     * @return The listMembers at the given index.
     */
    public int getListMembers(int index) {
      return listMembers_.getInt(index);
    }

    public static final int BELONGTOLISTS_FIELD_NUMBER = 58;
    private com.google.protobuf.Internal.IntList belongToLists_;
    /**
     * <code>repeated int32 belongToLists = 58;</code>
     * @return A list containing the belongToLists.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getBelongToListsList() {
      return belongToLists_;
    }
    /**
     * <code>repeated int32 belongToLists = 58;</code>
     * @return The count of belongToLists.
     */
    public int getBelongToListsCount() {
      return belongToLists_.size();
    }
    /**
     * <code>repeated int32 belongToLists = 58;</code>
     * @param index The index of the element to return.
     * @return The belongToLists at the given index.
     */
    public int getBelongToLists(int index) {
      return belongToLists_.getInt(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, mentionID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, mentionType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, number_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, gender_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, animacy_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, person_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeUInt32(7, startIndex_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeUInt32(9, endIndex_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeInt32(10, headIndex_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, headString_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, nerString_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeInt32(13, originalRef_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeInt32(14, goldCorefClusterID_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeInt32(15, corefClusterID_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeInt32(16, mentionNum_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeInt32(17, sentNum_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        output.writeInt32(18, utter_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        output.writeInt32(19, paragraph_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeBool(20, isSubject_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeBool(21, isDirectObject_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeBool(22, isIndirectObject_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        output.writeBool(23, isPrepositionObject_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        output.writeBool(24, hasTwin_);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        output.writeBool(25, generic_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        output.writeBool(26, isSingleton_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        output.writeBool(27, hasBasicDependency_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        output.writeBool(28, hasEnhancedDependency_);
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        output.writeBool(29, hasContextParseTree_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        output.writeMessage(30, getHeadIndexedWord());
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        output.writeMessage(31, getDependingVerb());
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        output.writeMessage(32, getHeadWord());
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        output.writeMessage(33, getSpeakerInfo());
      }
      for (int i = 0; i < sentenceWords_.size(); i++) {
        output.writeMessage(50, sentenceWords_.get(i));
      }
      for (int i = 0; i < originalSpan_.size(); i++) {
        output.writeMessage(51, originalSpan_.get(i));
      }
      for (int i = 0; i < dependents_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 52, dependents_.getRaw(i));
      }
      for (int i = 0; i < preprocessedTerms_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 53, preprocessedTerms_.getRaw(i));
      }
      for (int i = 0; i < appositions_.size(); i++) {
        output.writeInt32(54, appositions_.getInt(i));
      }
      for (int i = 0; i < predicateNominatives_.size(); i++) {
        output.writeInt32(55, predicateNominatives_.getInt(i));
      }
      for (int i = 0; i < relativePronouns_.size(); i++) {
        output.writeInt32(56, relativePronouns_.getInt(i));
      }
      for (int i = 0; i < listMembers_.size(); i++) {
        output.writeInt32(57, listMembers_.getInt(i));
      }
      for (int i = 0; i < belongToLists_.size(); i++) {
        output.writeInt32(58, belongToLists_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, mentionID_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, mentionType_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, number_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, gender_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, animacy_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, person_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, startIndex_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(9, endIndex_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, headIndex_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, headString_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, nerString_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(13, originalRef_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(14, goldCorefClusterID_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(15, corefClusterID_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(16, mentionNum_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(17, sentNum_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(18, utter_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(19, paragraph_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(20, isSubject_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(21, isDirectObject_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(22, isIndirectObject_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(23, isPrepositionObject_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(24, hasTwin_);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(25, generic_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(26, isSingleton_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(27, hasBasicDependency_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(28, hasEnhancedDependency_);
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(29, hasContextParseTree_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(30, getHeadIndexedWord());
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(31, getDependingVerb());
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(32, getHeadWord());
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(33, getSpeakerInfo());
      }
      for (int i = 0; i < sentenceWords_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(50, sentenceWords_.get(i));
      }
      for (int i = 0; i < originalSpan_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(51, originalSpan_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < dependents_.size(); i++) {
          dataSize += computeStringSizeNoTag(dependents_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getDependentsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < preprocessedTerms_.size(); i++) {
          dataSize += computeStringSizeNoTag(preprocessedTerms_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getPreprocessedTermsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < appositions_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(appositions_.getInt(i));
        }
        size += dataSize;
        size += 2 * getAppositionsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < predicateNominatives_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(predicateNominatives_.getInt(i));
        }
        size += dataSize;
        size += 2 * getPredicateNominativesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < relativePronouns_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(relativePronouns_.getInt(i));
        }
        size += dataSize;
        size += 2 * getRelativePronounsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < listMembers_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(listMembers_.getInt(i));
        }
        size += dataSize;
        size += 2 * getListMembersList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < belongToLists_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(belongToLists_.getInt(i));
        }
        size += dataSize;
        size += 2 * getBelongToListsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Mention)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Mention other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Mention) obj;

      if (hasMentionID() != other.hasMentionID()) return false;
      if (hasMentionID()) {
        if (getMentionID()
            != other.getMentionID()) return false;
      }
      if (hasMentionType() != other.hasMentionType()) return false;
      if (hasMentionType()) {
        if (!getMentionType()
            .equals(other.getMentionType())) return false;
      }
      if (hasNumber() != other.hasNumber()) return false;
      if (hasNumber()) {
        if (!getNumber()
            .equals(other.getNumber())) return false;
      }
      if (hasGender() != other.hasGender()) return false;
      if (hasGender()) {
        if (!getGender()
            .equals(other.getGender())) return false;
      }
      if (hasAnimacy() != other.hasAnimacy()) return false;
      if (hasAnimacy()) {
        if (!getAnimacy()
            .equals(other.getAnimacy())) return false;
      }
      if (hasPerson() != other.hasPerson()) return false;
      if (hasPerson()) {
        if (!getPerson()
            .equals(other.getPerson())) return false;
      }
      if (hasStartIndex() != other.hasStartIndex()) return false;
      if (hasStartIndex()) {
        if (getStartIndex()
            != other.getStartIndex()) return false;
      }
      if (hasEndIndex() != other.hasEndIndex()) return false;
      if (hasEndIndex()) {
        if (getEndIndex()
            != other.getEndIndex()) return false;
      }
      if (hasHeadIndex() != other.hasHeadIndex()) return false;
      if (hasHeadIndex()) {
        if (getHeadIndex()
            != other.getHeadIndex()) return false;
      }
      if (hasHeadString() != other.hasHeadString()) return false;
      if (hasHeadString()) {
        if (!getHeadString()
            .equals(other.getHeadString())) return false;
      }
      if (hasNerString() != other.hasNerString()) return false;
      if (hasNerString()) {
        if (!getNerString()
            .equals(other.getNerString())) return false;
      }
      if (hasOriginalRef() != other.hasOriginalRef()) return false;
      if (hasOriginalRef()) {
        if (getOriginalRef()
            != other.getOriginalRef()) return false;
      }
      if (hasGoldCorefClusterID() != other.hasGoldCorefClusterID()) return false;
      if (hasGoldCorefClusterID()) {
        if (getGoldCorefClusterID()
            != other.getGoldCorefClusterID()) return false;
      }
      if (hasCorefClusterID() != other.hasCorefClusterID()) return false;
      if (hasCorefClusterID()) {
        if (getCorefClusterID()
            != other.getCorefClusterID()) return false;
      }
      if (hasMentionNum() != other.hasMentionNum()) return false;
      if (hasMentionNum()) {
        if (getMentionNum()
            != other.getMentionNum()) return false;
      }
      if (hasSentNum() != other.hasSentNum()) return false;
      if (hasSentNum()) {
        if (getSentNum()
            != other.getSentNum()) return false;
      }
      if (hasUtter() != other.hasUtter()) return false;
      if (hasUtter()) {
        if (getUtter()
            != other.getUtter()) return false;
      }
      if (hasParagraph() != other.hasParagraph()) return false;
      if (hasParagraph()) {
        if (getParagraph()
            != other.getParagraph()) return false;
      }
      if (hasIsSubject() != other.hasIsSubject()) return false;
      if (hasIsSubject()) {
        if (getIsSubject()
            != other.getIsSubject()) return false;
      }
      if (hasIsDirectObject() != other.hasIsDirectObject()) return false;
      if (hasIsDirectObject()) {
        if (getIsDirectObject()
            != other.getIsDirectObject()) return false;
      }
      if (hasIsIndirectObject() != other.hasIsIndirectObject()) return false;
      if (hasIsIndirectObject()) {
        if (getIsIndirectObject()
            != other.getIsIndirectObject()) return false;
      }
      if (hasIsPrepositionObject() != other.hasIsPrepositionObject()) return false;
      if (hasIsPrepositionObject()) {
        if (getIsPrepositionObject()
            != other.getIsPrepositionObject()) return false;
      }
      if (hasHasTwin() != other.hasHasTwin()) return false;
      if (hasHasTwin()) {
        if (getHasTwin()
            != other.getHasTwin()) return false;
      }
      if (hasGeneric() != other.hasGeneric()) return false;
      if (hasGeneric()) {
        if (getGeneric()
            != other.getGeneric()) return false;
      }
      if (hasIsSingleton() != other.hasIsSingleton()) return false;
      if (hasIsSingleton()) {
        if (getIsSingleton()
            != other.getIsSingleton()) return false;
      }
      if (hasHasBasicDependency() != other.hasHasBasicDependency()) return false;
      if (hasHasBasicDependency()) {
        if (getHasBasicDependency()
            != other.getHasBasicDependency()) return false;
      }
      if (hasHasEnhancedDependency() != other.hasHasEnhancedDependency()) return false;
      if (hasHasEnhancedDependency()) {
        if (getHasEnhancedDependency()
            != other.getHasEnhancedDependency()) return false;
      }
      if (hasHasContextParseTree() != other.hasHasContextParseTree()) return false;
      if (hasHasContextParseTree()) {
        if (getHasContextParseTree()
            != other.getHasContextParseTree()) return false;
      }
      if (hasHeadIndexedWord() != other.hasHeadIndexedWord()) return false;
      if (hasHeadIndexedWord()) {
        if (!getHeadIndexedWord()
            .equals(other.getHeadIndexedWord())) return false;
      }
      if (hasDependingVerb() != other.hasDependingVerb()) return false;
      if (hasDependingVerb()) {
        if (!getDependingVerb()
            .equals(other.getDependingVerb())) return false;
      }
      if (hasHeadWord() != other.hasHeadWord()) return false;
      if (hasHeadWord()) {
        if (!getHeadWord()
            .equals(other.getHeadWord())) return false;
      }
      if (hasSpeakerInfo() != other.hasSpeakerInfo()) return false;
      if (hasSpeakerInfo()) {
        if (!getSpeakerInfo()
            .equals(other.getSpeakerInfo())) return false;
      }
      if (!getSentenceWordsList()
          .equals(other.getSentenceWordsList())) return false;
      if (!getOriginalSpanList()
          .equals(other.getOriginalSpanList())) return false;
      if (!getDependentsList()
          .equals(other.getDependentsList())) return false;
      if (!getPreprocessedTermsList()
          .equals(other.getPreprocessedTermsList())) return false;
      if (!getAppositionsList()
          .equals(other.getAppositionsList())) return false;
      if (!getPredicateNominativesList()
          .equals(other.getPredicateNominativesList())) return false;
      if (!getRelativePronounsList()
          .equals(other.getRelativePronounsList())) return false;
      if (!getListMembersList()
          .equals(other.getListMembersList())) return false;
      if (!getBelongToListsList()
          .equals(other.getBelongToListsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMentionID()) {
        hash = (37 * hash) + MENTIONID_FIELD_NUMBER;
        hash = (53 * hash) + getMentionID();
      }
      if (hasMentionType()) {
        hash = (37 * hash) + MENTIONTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getMentionType().hashCode();
      }
      if (hasNumber()) {
        hash = (37 * hash) + NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getNumber().hashCode();
      }
      if (hasGender()) {
        hash = (37 * hash) + GENDER_FIELD_NUMBER;
        hash = (53 * hash) + getGender().hashCode();
      }
      if (hasAnimacy()) {
        hash = (37 * hash) + ANIMACY_FIELD_NUMBER;
        hash = (53 * hash) + getAnimacy().hashCode();
      }
      if (hasPerson()) {
        hash = (37 * hash) + PERSON_FIELD_NUMBER;
        hash = (53 * hash) + getPerson().hashCode();
      }
      if (hasStartIndex()) {
        hash = (37 * hash) + STARTINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getStartIndex();
      }
      if (hasEndIndex()) {
        hash = (37 * hash) + ENDINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getEndIndex();
      }
      if (hasHeadIndex()) {
        hash = (37 * hash) + HEADINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getHeadIndex();
      }
      if (hasHeadString()) {
        hash = (37 * hash) + HEADSTRING_FIELD_NUMBER;
        hash = (53 * hash) + getHeadString().hashCode();
      }
      if (hasNerString()) {
        hash = (37 * hash) + NERSTRING_FIELD_NUMBER;
        hash = (53 * hash) + getNerString().hashCode();
      }
      if (hasOriginalRef()) {
        hash = (37 * hash) + ORIGINALREF_FIELD_NUMBER;
        hash = (53 * hash) + getOriginalRef();
      }
      if (hasGoldCorefClusterID()) {
        hash = (37 * hash) + GOLDCOREFCLUSTERID_FIELD_NUMBER;
        hash = (53 * hash) + getGoldCorefClusterID();
      }
      if (hasCorefClusterID()) {
        hash = (37 * hash) + COREFCLUSTERID_FIELD_NUMBER;
        hash = (53 * hash) + getCorefClusterID();
      }
      if (hasMentionNum()) {
        hash = (37 * hash) + MENTIONNUM_FIELD_NUMBER;
        hash = (53 * hash) + getMentionNum();
      }
      if (hasSentNum()) {
        hash = (37 * hash) + SENTNUM_FIELD_NUMBER;
        hash = (53 * hash) + getSentNum();
      }
      if (hasUtter()) {
        hash = (37 * hash) + UTTER_FIELD_NUMBER;
        hash = (53 * hash) + getUtter();
      }
      if (hasParagraph()) {
        hash = (37 * hash) + PARAGRAPH_FIELD_NUMBER;
        hash = (53 * hash) + getParagraph();
      }
      if (hasIsSubject()) {
        hash = (37 * hash) + ISSUBJECT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsSubject());
      }
      if (hasIsDirectObject()) {
        hash = (37 * hash) + ISDIRECTOBJECT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsDirectObject());
      }
      if (hasIsIndirectObject()) {
        hash = (37 * hash) + ISINDIRECTOBJECT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsIndirectObject());
      }
      if (hasIsPrepositionObject()) {
        hash = (37 * hash) + ISPREPOSITIONOBJECT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsPrepositionObject());
      }
      if (hasHasTwin()) {
        hash = (37 * hash) + HASTWIN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasTwin());
      }
      if (hasGeneric()) {
        hash = (37 * hash) + GENERIC_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getGeneric());
      }
      if (hasIsSingleton()) {
        hash = (37 * hash) + ISSINGLETON_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsSingleton());
      }
      if (hasHasBasicDependency()) {
        hash = (37 * hash) + HASBASICDEPENDENCY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasBasicDependency());
      }
      if (hasHasEnhancedDependency()) {
        hash = (37 * hash) + HASENHANCEDDEPENDENCY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasEnhancedDependency());
      }
      if (hasHasContextParseTree()) {
        hash = (37 * hash) + HASCONTEXTPARSETREE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasContextParseTree());
      }
      if (hasHeadIndexedWord()) {
        hash = (37 * hash) + HEADINDEXEDWORD_FIELD_NUMBER;
        hash = (53 * hash) + getHeadIndexedWord().hashCode();
      }
      if (hasDependingVerb()) {
        hash = (37 * hash) + DEPENDINGVERB_FIELD_NUMBER;
        hash = (53 * hash) + getDependingVerb().hashCode();
      }
      if (hasHeadWord()) {
        hash = (37 * hash) + HEADWORD_FIELD_NUMBER;
        hash = (53 * hash) + getHeadWord().hashCode();
      }
      if (hasSpeakerInfo()) {
        hash = (37 * hash) + SPEAKERINFO_FIELD_NUMBER;
        hash = (53 * hash) + getSpeakerInfo().hashCode();
      }
      if (getSentenceWordsCount() > 0) {
        hash = (37 * hash) + SENTENCEWORDS_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceWordsList().hashCode();
      }
      if (getOriginalSpanCount() > 0) {
        hash = (37 * hash) + ORIGINALSPAN_FIELD_NUMBER;
        hash = (53 * hash) + getOriginalSpanList().hashCode();
      }
      if (getDependentsCount() > 0) {
        hash = (37 * hash) + DEPENDENTS_FIELD_NUMBER;
        hash = (53 * hash) + getDependentsList().hashCode();
      }
      if (getPreprocessedTermsCount() > 0) {
        hash = (37 * hash) + PREPROCESSEDTERMS_FIELD_NUMBER;
        hash = (53 * hash) + getPreprocessedTermsList().hashCode();
      }
      if (getAppositionsCount() > 0) {
        hash = (37 * hash) + APPOSITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getAppositionsList().hashCode();
      }
      if (getPredicateNominativesCount() > 0) {
        hash = (37 * hash) + PREDICATENOMINATIVES_FIELD_NUMBER;
        hash = (53 * hash) + getPredicateNominativesList().hashCode();
      }
      if (getRelativePronounsCount() > 0) {
        hash = (37 * hash) + RELATIVEPRONOUNS_FIELD_NUMBER;
        hash = (53 * hash) + getRelativePronounsList().hashCode();
      }
      if (getListMembersCount() > 0) {
        hash = (37 * hash) + LISTMEMBERS_FIELD_NUMBER;
        hash = (53 * hash) + getListMembersList().hashCode();
      }
      if (getBelongToListsCount() > 0) {
        hash = (37 * hash) + BELONGTOLISTS_FIELD_NUMBER;
        hash = (53 * hash) + getBelongToListsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Mention prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.Mention}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Mention)
        edu.stanford.nlp.pipeline.CoreNLPProtos.MentionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Mention_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Mention_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getHeadIndexedWordFieldBuilder();
          getDependingVerbFieldBuilder();
          getHeadWordFieldBuilder();
          getSpeakerInfoFieldBuilder();
          getSentenceWordsFieldBuilder();
          getOriginalSpanFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        mentionID_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        mentionType_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        number_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        gender_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        animacy_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        person_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        startIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        endIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        headIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        headString_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        nerString_ = "";
        bitField0_ = (bitField0_ & ~0x00000400);
        originalRef_ = 0;
        bitField0_ = (bitField0_ & ~0x00000800);
        goldCorefClusterID_ = 0;
        bitField0_ = (bitField0_ & ~0x00001000);
        corefClusterID_ = 0;
        bitField0_ = (bitField0_ & ~0x00002000);
        mentionNum_ = 0;
        bitField0_ = (bitField0_ & ~0x00004000);
        sentNum_ = 0;
        bitField0_ = (bitField0_ & ~0x00008000);
        utter_ = 0;
        bitField0_ = (bitField0_ & ~0x00010000);
        paragraph_ = 0;
        bitField0_ = (bitField0_ & ~0x00020000);
        isSubject_ = false;
        bitField0_ = (bitField0_ & ~0x00040000);
        isDirectObject_ = false;
        bitField0_ = (bitField0_ & ~0x00080000);
        isIndirectObject_ = false;
        bitField0_ = (bitField0_ & ~0x00100000);
        isPrepositionObject_ = false;
        bitField0_ = (bitField0_ & ~0x00200000);
        hasTwin_ = false;
        bitField0_ = (bitField0_ & ~0x00400000);
        generic_ = false;
        bitField0_ = (bitField0_ & ~0x00800000);
        isSingleton_ = false;
        bitField0_ = (bitField0_ & ~0x01000000);
        hasBasicDependency_ = false;
        bitField0_ = (bitField0_ & ~0x02000000);
        hasEnhancedDependency_ = false;
        bitField0_ = (bitField0_ & ~0x04000000);
        hasContextParseTree_ = false;
        bitField0_ = (bitField0_ & ~0x08000000);
        if (headIndexedWordBuilder_ == null) {
          headIndexedWord_ = null;
        } else {
          headIndexedWordBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x10000000);
        if (dependingVerbBuilder_ == null) {
          dependingVerb_ = null;
        } else {
          dependingVerbBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x20000000);
        if (headWordBuilder_ == null) {
          headWord_ = null;
        } else {
          headWordBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x40000000);
        if (speakerInfoBuilder_ == null) {
          speakerInfo_ = null;
        } else {
          speakerInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x80000000);
        if (sentenceWordsBuilder_ == null) {
          sentenceWords_ = java.util.Collections.emptyList();
        } else {
          sentenceWords_ = null;
          sentenceWordsBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000001);
        if (originalSpanBuilder_ == null) {
          originalSpan_ = java.util.Collections.emptyList();
        } else {
          originalSpan_ = null;
          originalSpanBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000002);
        dependents_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField1_ = (bitField1_ & ~0x00000004);
        preprocessedTerms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField1_ = (bitField1_ & ~0x00000008);
        appositions_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000010);
        predicateNominatives_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000020);
        relativePronouns_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000040);
        listMembers_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000080);
        belongToLists_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000100);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Mention_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Mention result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Mention result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Mention(this);
        int from_bitField0_ = bitField0_;
        int from_bitField1_ = bitField1_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.mentionID_ = mentionID_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.mentionType_ = mentionType_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.number_ = number_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.gender_ = gender_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x00000010;
        }
        result.animacy_ = animacy_;
        if (((from_bitField0_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x00000020;
        }
        result.person_ = person_;
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.startIndex_ = startIndex_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.endIndex_ = endIndex_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.headIndex_ = headIndex_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          to_bitField0_ |= 0x00000200;
        }
        result.headString_ = headString_;
        if (((from_bitField0_ & 0x00000400) != 0)) {
          to_bitField0_ |= 0x00000400;
        }
        result.nerString_ = nerString_;
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.originalRef_ = originalRef_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.goldCorefClusterID_ = goldCorefClusterID_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.corefClusterID_ = corefClusterID_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.mentionNum_ = mentionNum_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.sentNum_ = sentNum_;
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.utter_ = utter_;
          to_bitField0_ |= 0x00010000;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.paragraph_ = paragraph_;
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.isSubject_ = isSubject_;
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.isDirectObject_ = isDirectObject_;
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.isIndirectObject_ = isIndirectObject_;
          to_bitField0_ |= 0x00100000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.isPrepositionObject_ = isPrepositionObject_;
          to_bitField0_ |= 0x00200000;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          result.hasTwin_ = hasTwin_;
          to_bitField0_ |= 0x00400000;
        }
        if (((from_bitField0_ & 0x00800000) != 0)) {
          result.generic_ = generic_;
          to_bitField0_ |= 0x00800000;
        }
        if (((from_bitField0_ & 0x01000000) != 0)) {
          result.isSingleton_ = isSingleton_;
          to_bitField0_ |= 0x01000000;
        }
        if (((from_bitField0_ & 0x02000000) != 0)) {
          result.hasBasicDependency_ = hasBasicDependency_;
          to_bitField0_ |= 0x02000000;
        }
        if (((from_bitField0_ & 0x04000000) != 0)) {
          result.hasEnhancedDependency_ = hasEnhancedDependency_;
          to_bitField0_ |= 0x04000000;
        }
        if (((from_bitField0_ & 0x08000000) != 0)) {
          result.hasContextParseTree_ = hasContextParseTree_;
          to_bitField0_ |= 0x08000000;
        }
        if (((from_bitField0_ & 0x10000000) != 0)) {
          if (headIndexedWordBuilder_ == null) {
            result.headIndexedWord_ = headIndexedWord_;
          } else {
            result.headIndexedWord_ = headIndexedWordBuilder_.build();
          }
          to_bitField0_ |= 0x10000000;
        }
        if (((from_bitField0_ & 0x20000000) != 0)) {
          if (dependingVerbBuilder_ == null) {
            result.dependingVerb_ = dependingVerb_;
          } else {
            result.dependingVerb_ = dependingVerbBuilder_.build();
          }
          to_bitField0_ |= 0x20000000;
        }
        if (((from_bitField0_ & 0x40000000) != 0)) {
          if (headWordBuilder_ == null) {
            result.headWord_ = headWord_;
          } else {
            result.headWord_ = headWordBuilder_.build();
          }
          to_bitField0_ |= 0x40000000;
        }
        if (((from_bitField0_ & 0x80000000) != 0)) {
          if (speakerInfoBuilder_ == null) {
            result.speakerInfo_ = speakerInfo_;
          } else {
            result.speakerInfo_ = speakerInfoBuilder_.build();
          }
          to_bitField0_ |= 0x80000000;
        }
        if (sentenceWordsBuilder_ == null) {
          if (((bitField1_ & 0x00000001) != 0)) {
            sentenceWords_ = java.util.Collections.unmodifiableList(sentenceWords_);
            bitField1_ = (bitField1_ & ~0x00000001);
          }
          result.sentenceWords_ = sentenceWords_;
        } else {
          result.sentenceWords_ = sentenceWordsBuilder_.build();
        }
        if (originalSpanBuilder_ == null) {
          if (((bitField1_ & 0x00000002) != 0)) {
            originalSpan_ = java.util.Collections.unmodifiableList(originalSpan_);
            bitField1_ = (bitField1_ & ~0x00000002);
          }
          result.originalSpan_ = originalSpan_;
        } else {
          result.originalSpan_ = originalSpanBuilder_.build();
        }
        if (((bitField1_ & 0x00000004) != 0)) {
          dependents_ = dependents_.getUnmodifiableView();
          bitField1_ = (bitField1_ & ~0x00000004);
        }
        result.dependents_ = dependents_;
        if (((bitField1_ & 0x00000008) != 0)) {
          preprocessedTerms_ = preprocessedTerms_.getUnmodifiableView();
          bitField1_ = (bitField1_ & ~0x00000008);
        }
        result.preprocessedTerms_ = preprocessedTerms_;
        if (((bitField1_ & 0x00000010) != 0)) {
          appositions_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000010);
        }
        result.appositions_ = appositions_;
        if (((bitField1_ & 0x00000020) != 0)) {
          predicateNominatives_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000020);
        }
        result.predicateNominatives_ = predicateNominatives_;
        if (((bitField1_ & 0x00000040) != 0)) {
          relativePronouns_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000040);
        }
        result.relativePronouns_ = relativePronouns_;
        if (((bitField1_ & 0x00000080) != 0)) {
          listMembers_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000080);
        }
        result.listMembers_ = listMembers_;
        if (((bitField1_ & 0x00000100) != 0)) {
          belongToLists_.makeImmutable();
          bitField1_ = (bitField1_ & ~0x00000100);
        }
        result.belongToLists_ = belongToLists_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Mention) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Mention)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Mention other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Mention.getDefaultInstance()) return this;
        if (other.hasMentionID()) {
          setMentionID(other.getMentionID());
        }
        if (other.hasMentionType()) {
          bitField0_ |= 0x00000002;
          mentionType_ = other.mentionType_;
          onChanged();
        }
        if (other.hasNumber()) {
          bitField0_ |= 0x00000004;
          number_ = other.number_;
          onChanged();
        }
        if (other.hasGender()) {
          bitField0_ |= 0x00000008;
          gender_ = other.gender_;
          onChanged();
        }
        if (other.hasAnimacy()) {
          bitField0_ |= 0x00000010;
          animacy_ = other.animacy_;
          onChanged();
        }
        if (other.hasPerson()) {
          bitField0_ |= 0x00000020;
          person_ = other.person_;
          onChanged();
        }
        if (other.hasStartIndex()) {
          setStartIndex(other.getStartIndex());
        }
        if (other.hasEndIndex()) {
          setEndIndex(other.getEndIndex());
        }
        if (other.hasHeadIndex()) {
          setHeadIndex(other.getHeadIndex());
        }
        if (other.hasHeadString()) {
          bitField0_ |= 0x00000200;
          headString_ = other.headString_;
          onChanged();
        }
        if (other.hasNerString()) {
          bitField0_ |= 0x00000400;
          nerString_ = other.nerString_;
          onChanged();
        }
        if (other.hasOriginalRef()) {
          setOriginalRef(other.getOriginalRef());
        }
        if (other.hasGoldCorefClusterID()) {
          setGoldCorefClusterID(other.getGoldCorefClusterID());
        }
        if (other.hasCorefClusterID()) {
          setCorefClusterID(other.getCorefClusterID());
        }
        if (other.hasMentionNum()) {
          setMentionNum(other.getMentionNum());
        }
        if (other.hasSentNum()) {
          setSentNum(other.getSentNum());
        }
        if (other.hasUtter()) {
          setUtter(other.getUtter());
        }
        if (other.hasParagraph()) {
          setParagraph(other.getParagraph());
        }
        if (other.hasIsSubject()) {
          setIsSubject(other.getIsSubject());
        }
        if (other.hasIsDirectObject()) {
          setIsDirectObject(other.getIsDirectObject());
        }
        if (other.hasIsIndirectObject()) {
          setIsIndirectObject(other.getIsIndirectObject());
        }
        if (other.hasIsPrepositionObject()) {
          setIsPrepositionObject(other.getIsPrepositionObject());
        }
        if (other.hasHasTwin()) {
          setHasTwin(other.getHasTwin());
        }
        if (other.hasGeneric()) {
          setGeneric(other.getGeneric());
        }
        if (other.hasIsSingleton()) {
          setIsSingleton(other.getIsSingleton());
        }
        if (other.hasHasBasicDependency()) {
          setHasBasicDependency(other.getHasBasicDependency());
        }
        if (other.hasHasEnhancedDependency()) {
          setHasEnhancedDependency(other.getHasEnhancedDependency());
        }
        if (other.hasHasContextParseTree()) {
          setHasContextParseTree(other.getHasContextParseTree());
        }
        if (other.hasHeadIndexedWord()) {
          mergeHeadIndexedWord(other.getHeadIndexedWord());
        }
        if (other.hasDependingVerb()) {
          mergeDependingVerb(other.getDependingVerb());
        }
        if (other.hasHeadWord()) {
          mergeHeadWord(other.getHeadWord());
        }
        if (other.hasSpeakerInfo()) {
          mergeSpeakerInfo(other.getSpeakerInfo());
        }
        if (sentenceWordsBuilder_ == null) {
          if (!other.sentenceWords_.isEmpty()) {
            if (sentenceWords_.isEmpty()) {
              sentenceWords_ = other.sentenceWords_;
              bitField1_ = (bitField1_ & ~0x00000001);
            } else {
              ensureSentenceWordsIsMutable();
              sentenceWords_.addAll(other.sentenceWords_);
            }
            onChanged();
          }
        } else {
          if (!other.sentenceWords_.isEmpty()) {
            if (sentenceWordsBuilder_.isEmpty()) {
              sentenceWordsBuilder_.dispose();
              sentenceWordsBuilder_ = null;
              sentenceWords_ = other.sentenceWords_;
              bitField1_ = (bitField1_ & ~0x00000001);
              sentenceWordsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSentenceWordsFieldBuilder() : null;
            } else {
              sentenceWordsBuilder_.addAllMessages(other.sentenceWords_);
            }
          }
        }
        if (originalSpanBuilder_ == null) {
          if (!other.originalSpan_.isEmpty()) {
            if (originalSpan_.isEmpty()) {
              originalSpan_ = other.originalSpan_;
              bitField1_ = (bitField1_ & ~0x00000002);
            } else {
              ensureOriginalSpanIsMutable();
              originalSpan_.addAll(other.originalSpan_);
            }
            onChanged();
          }
        } else {
          if (!other.originalSpan_.isEmpty()) {
            if (originalSpanBuilder_.isEmpty()) {
              originalSpanBuilder_.dispose();
              originalSpanBuilder_ = null;
              originalSpan_ = other.originalSpan_;
              bitField1_ = (bitField1_ & ~0x00000002);
              originalSpanBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getOriginalSpanFieldBuilder() : null;
            } else {
              originalSpanBuilder_.addAllMessages(other.originalSpan_);
            }
          }
        }
        if (!other.dependents_.isEmpty()) {
          if (dependents_.isEmpty()) {
            dependents_ = other.dependents_;
            bitField1_ = (bitField1_ & ~0x00000004);
          } else {
            ensureDependentsIsMutable();
            dependents_.addAll(other.dependents_);
          }
          onChanged();
        }
        if (!other.preprocessedTerms_.isEmpty()) {
          if (preprocessedTerms_.isEmpty()) {
            preprocessedTerms_ = other.preprocessedTerms_;
            bitField1_ = (bitField1_ & ~0x00000008);
          } else {
            ensurePreprocessedTermsIsMutable();
            preprocessedTerms_.addAll(other.preprocessedTerms_);
          }
          onChanged();
        }
        if (!other.appositions_.isEmpty()) {
          if (appositions_.isEmpty()) {
            appositions_ = other.appositions_;
            bitField1_ = (bitField1_ & ~0x00000010);
          } else {
            ensureAppositionsIsMutable();
            appositions_.addAll(other.appositions_);
          }
          onChanged();
        }
        if (!other.predicateNominatives_.isEmpty()) {
          if (predicateNominatives_.isEmpty()) {
            predicateNominatives_ = other.predicateNominatives_;
            bitField1_ = (bitField1_ & ~0x00000020);
          } else {
            ensurePredicateNominativesIsMutable();
            predicateNominatives_.addAll(other.predicateNominatives_);
          }
          onChanged();
        }
        if (!other.relativePronouns_.isEmpty()) {
          if (relativePronouns_.isEmpty()) {
            relativePronouns_ = other.relativePronouns_;
            bitField1_ = (bitField1_ & ~0x00000040);
          } else {
            ensureRelativePronounsIsMutable();
            relativePronouns_.addAll(other.relativePronouns_);
          }
          onChanged();
        }
        if (!other.listMembers_.isEmpty()) {
          if (listMembers_.isEmpty()) {
            listMembers_ = other.listMembers_;
            bitField1_ = (bitField1_ & ~0x00000080);
          } else {
            ensureListMembersIsMutable();
            listMembers_.addAll(other.listMembers_);
          }
          onChanged();
        }
        if (!other.belongToLists_.isEmpty()) {
          if (belongToLists_.isEmpty()) {
            belongToLists_ = other.belongToLists_;
            bitField1_ = (bitField1_ & ~0x00000100);
          } else {
            ensureBelongToListsIsMutable();
            belongToLists_.addAll(other.belongToLists_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                mentionID_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                mentionType_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                number_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                gender_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                animacy_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                person_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 56: {
                startIndex_ = input.readUInt32();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 72: {
                endIndex_ = input.readUInt32();
                bitField0_ |= 0x00000080;
                break;
              } // case 72
              case 80: {
                headIndex_ = input.readInt32();
                bitField0_ |= 0x00000100;
                break;
              } // case 80
              case 90: {
                headString_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 90
              case 98: {
                nerString_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 98
              case 104: {
                originalRef_ = input.readInt32();
                bitField0_ |= 0x00000800;
                break;
              } // case 104
              case 112: {
                goldCorefClusterID_ = input.readInt32();
                bitField0_ |= 0x00001000;
                break;
              } // case 112
              case 120: {
                corefClusterID_ = input.readInt32();
                bitField0_ |= 0x00002000;
                break;
              } // case 120
              case 128: {
                mentionNum_ = input.readInt32();
                bitField0_ |= 0x00004000;
                break;
              } // case 128
              case 136: {
                sentNum_ = input.readInt32();
                bitField0_ |= 0x00008000;
                break;
              } // case 136
              case 144: {
                utter_ = input.readInt32();
                bitField0_ |= 0x00010000;
                break;
              } // case 144
              case 152: {
                paragraph_ = input.readInt32();
                bitField0_ |= 0x00020000;
                break;
              } // case 152
              case 160: {
                isSubject_ = input.readBool();
                bitField0_ |= 0x00040000;
                break;
              } // case 160
              case 168: {
                isDirectObject_ = input.readBool();
                bitField0_ |= 0x00080000;
                break;
              } // case 168
              case 176: {
                isIndirectObject_ = input.readBool();
                bitField0_ |= 0x00100000;
                break;
              } // case 176
              case 184: {
                isPrepositionObject_ = input.readBool();
                bitField0_ |= 0x00200000;
                break;
              } // case 184
              case 192: {
                hasTwin_ = input.readBool();
                bitField0_ |= 0x00400000;
                break;
              } // case 192
              case 200: {
                generic_ = input.readBool();
                bitField0_ |= 0x00800000;
                break;
              } // case 200
              case 208: {
                isSingleton_ = input.readBool();
                bitField0_ |= 0x01000000;
                break;
              } // case 208
              case 216: {
                hasBasicDependency_ = input.readBool();
                bitField0_ |= 0x02000000;
                break;
              } // case 216
              case 224: {
                hasEnhancedDependency_ = input.readBool();
                bitField0_ |= 0x04000000;
                break;
              } // case 224
              case 232: {
                hasContextParseTree_ = input.readBool();
                bitField0_ |= 0x08000000;
                break;
              } // case 232
              case 242: {
                input.readMessage(
                    getHeadIndexedWordFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x10000000;
                break;
              } // case 242
              case 250: {
                input.readMessage(
                    getDependingVerbFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x20000000;
                break;
              } // case 250
              case 258: {
                input.readMessage(
                    getHeadWordFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x40000000;
                break;
              } // case 258
              case 266: {
                input.readMessage(
                    getSpeakerInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x80000000;
                break;
              } // case 266
              case 402: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.PARSER,
                        extensionRegistry);
                if (sentenceWordsBuilder_ == null) {
                  ensureSentenceWordsIsMutable();
                  sentenceWords_.add(m);
                } else {
                  sentenceWordsBuilder_.addMessage(m);
                }
                break;
              } // case 402
              case 410: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.PARSER,
                        extensionRegistry);
                if (originalSpanBuilder_ == null) {
                  ensureOriginalSpanIsMutable();
                  originalSpan_.add(m);
                } else {
                  originalSpanBuilder_.addMessage(m);
                }
                break;
              } // case 410
              case 418: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureDependentsIsMutable();
                dependents_.add(bs);
                break;
              } // case 418
              case 426: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensurePreprocessedTermsIsMutable();
                preprocessedTerms_.add(bs);
                break;
              } // case 426
              case 432: {
                int v = input.readInt32();
                ensureAppositionsIsMutable();
                appositions_.addInt(v);
                break;
              } // case 432
              case 434: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureAppositionsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  appositions_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 434
              case 440: {
                int v = input.readInt32();
                ensurePredicateNominativesIsMutable();
                predicateNominatives_.addInt(v);
                break;
              } // case 440
              case 442: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensurePredicateNominativesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  predicateNominatives_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 442
              case 448: {
                int v = input.readInt32();
                ensureRelativePronounsIsMutable();
                relativePronouns_.addInt(v);
                break;
              } // case 448
              case 450: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureRelativePronounsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  relativePronouns_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 450
              case 456: {
                int v = input.readInt32();
                ensureListMembersIsMutable();
                listMembers_.addInt(v);
                break;
              } // case 456
              case 458: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureListMembersIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  listMembers_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 458
              case 464: {
                int v = input.readInt32();
                ensureBelongToListsIsMutable();
                belongToLists_.addInt(v);
                break;
              } // case 464
              case 466: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureBelongToListsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  belongToLists_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 466
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private int bitField1_;

      private int mentionID_ ;
      /**
       * <code>optional int32 mentionID = 1;</code>
       * @return Whether the mentionID field is set.
       */
      @java.lang.Override
      public boolean hasMentionID() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 mentionID = 1;</code>
       * @return The mentionID.
       */
      @java.lang.Override
      public int getMentionID() {
        return mentionID_;
      }
      /**
       * <code>optional int32 mentionID = 1;</code>
       * @param value The mentionID to set.
       * @return This builder for chaining.
       */
      public Builder setMentionID(int value) {
        bitField0_ |= 0x00000001;
        mentionID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 mentionID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentionID() {
        bitField0_ = (bitField0_ & ~0x00000001);
        mentionID_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object mentionType_ = "";
      /**
       * <code>optional string mentionType = 2;</code>
       * @return Whether the mentionType field is set.
       */
      public boolean hasMentionType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string mentionType = 2;</code>
       * @return The mentionType.
       */
      public java.lang.String getMentionType() {
        java.lang.Object ref = mentionType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mentionType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string mentionType = 2;</code>
       * @return The bytes for mentionType.
       */
      public com.google.protobuf.ByteString
          getMentionTypeBytes() {
        java.lang.Object ref = mentionType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mentionType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string mentionType = 2;</code>
       * @param value The mentionType to set.
       * @return This builder for chaining.
       */
      public Builder setMentionType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        mentionType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string mentionType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentionType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        mentionType_ = getDefaultInstance().getMentionType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string mentionType = 2;</code>
       * @param value The bytes for mentionType to set.
       * @return This builder for chaining.
       */
      public Builder setMentionTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        mentionType_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object number_ = "";
      /**
       * <code>optional string number = 3;</code>
       * @return Whether the number field is set.
       */
      public boolean hasNumber() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string number = 3;</code>
       * @return The number.
       */
      public java.lang.String getNumber() {
        java.lang.Object ref = number_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            number_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string number = 3;</code>
       * @return The bytes for number.
       */
      public com.google.protobuf.ByteString
          getNumberBytes() {
        java.lang.Object ref = number_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          number_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string number = 3;</code>
       * @param value The number to set.
       * @return This builder for chaining.
       */
      public Builder setNumber(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        number_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string number = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumber() {
        bitField0_ = (bitField0_ & ~0x00000004);
        number_ = getDefaultInstance().getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional string number = 3;</code>
       * @param value The bytes for number to set.
       * @return This builder for chaining.
       */
      public Builder setNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        number_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object gender_ = "";
      /**
       * <code>optional string gender = 4;</code>
       * @return Whether the gender field is set.
       */
      public boolean hasGender() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string gender = 4;</code>
       * @return The gender.
       */
      public java.lang.String getGender() {
        java.lang.Object ref = gender_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            gender_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string gender = 4;</code>
       * @return The bytes for gender.
       */
      public com.google.protobuf.ByteString
          getGenderBytes() {
        java.lang.Object ref = gender_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gender_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string gender = 4;</code>
       * @param value The gender to set.
       * @return This builder for chaining.
       */
      public Builder setGender(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        gender_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string gender = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearGender() {
        bitField0_ = (bitField0_ & ~0x00000008);
        gender_ = getDefaultInstance().getGender();
        onChanged();
        return this;
      }
      /**
       * <code>optional string gender = 4;</code>
       * @param value The bytes for gender to set.
       * @return This builder for chaining.
       */
      public Builder setGenderBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        gender_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object animacy_ = "";
      /**
       * <code>optional string animacy = 5;</code>
       * @return Whether the animacy field is set.
       */
      public boolean hasAnimacy() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string animacy = 5;</code>
       * @return The animacy.
       */
      public java.lang.String getAnimacy() {
        java.lang.Object ref = animacy_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            animacy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string animacy = 5;</code>
       * @return The bytes for animacy.
       */
      public com.google.protobuf.ByteString
          getAnimacyBytes() {
        java.lang.Object ref = animacy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          animacy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string animacy = 5;</code>
       * @param value The animacy to set.
       * @return This builder for chaining.
       */
      public Builder setAnimacy(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        animacy_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string animacy = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearAnimacy() {
        bitField0_ = (bitField0_ & ~0x00000010);
        animacy_ = getDefaultInstance().getAnimacy();
        onChanged();
        return this;
      }
      /**
       * <code>optional string animacy = 5;</code>
       * @param value The bytes for animacy to set.
       * @return This builder for chaining.
       */
      public Builder setAnimacyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        animacy_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object person_ = "";
      /**
       * <code>optional string person = 6;</code>
       * @return Whether the person field is set.
       */
      public boolean hasPerson() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string person = 6;</code>
       * @return The person.
       */
      public java.lang.String getPerson() {
        java.lang.Object ref = person_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            person_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string person = 6;</code>
       * @return The bytes for person.
       */
      public com.google.protobuf.ByteString
          getPersonBytes() {
        java.lang.Object ref = person_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          person_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string person = 6;</code>
       * @param value The person to set.
       * @return This builder for chaining.
       */
      public Builder setPerson(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        person_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string person = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearPerson() {
        bitField0_ = (bitField0_ & ~0x00000020);
        person_ = getDefaultInstance().getPerson();
        onChanged();
        return this;
      }
      /**
       * <code>optional string person = 6;</code>
       * @param value The bytes for person to set.
       * @return This builder for chaining.
       */
      public Builder setPersonBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        person_ = value;
        onChanged();
        return this;
      }

      private int startIndex_ ;
      /**
       * <code>optional uint32 startIndex = 7;</code>
       * @return Whether the startIndex field is set.
       */
      @java.lang.Override
      public boolean hasStartIndex() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional uint32 startIndex = 7;</code>
       * @return The startIndex.
       */
      @java.lang.Override
      public int getStartIndex() {
        return startIndex_;
      }
      /**
       * <code>optional uint32 startIndex = 7;</code>
       * @param value The startIndex to set.
       * @return This builder for chaining.
       */
      public Builder setStartIndex(int value) {
        bitField0_ |= 0x00000040;
        startIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 startIndex = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearStartIndex() {
        bitField0_ = (bitField0_ & ~0x00000040);
        startIndex_ = 0;
        onChanged();
        return this;
      }

      private int endIndex_ ;
      /**
       * <code>optional uint32 endIndex = 9;</code>
       * @return Whether the endIndex field is set.
       */
      @java.lang.Override
      public boolean hasEndIndex() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional uint32 endIndex = 9;</code>
       * @return The endIndex.
       */
      @java.lang.Override
      public int getEndIndex() {
        return endIndex_;
      }
      /**
       * <code>optional uint32 endIndex = 9;</code>
       * @param value The endIndex to set.
       * @return This builder for chaining.
       */
      public Builder setEndIndex(int value) {
        bitField0_ |= 0x00000080;
        endIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 endIndex = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndIndex() {
        bitField0_ = (bitField0_ & ~0x00000080);
        endIndex_ = 0;
        onChanged();
        return this;
      }

      private int headIndex_ ;
      /**
       * <code>optional int32 headIndex = 10;</code>
       * @return Whether the headIndex field is set.
       */
      @java.lang.Override
      public boolean hasHeadIndex() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional int32 headIndex = 10;</code>
       * @return The headIndex.
       */
      @java.lang.Override
      public int getHeadIndex() {
        return headIndex_;
      }
      /**
       * <code>optional int32 headIndex = 10;</code>
       * @param value The headIndex to set.
       * @return This builder for chaining.
       */
      public Builder setHeadIndex(int value) {
        bitField0_ |= 0x00000100;
        headIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 headIndex = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeadIndex() {
        bitField0_ = (bitField0_ & ~0x00000100);
        headIndex_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object headString_ = "";
      /**
       * <code>optional string headString = 11;</code>
       * @return Whether the headString field is set.
       */
      public boolean hasHeadString() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string headString = 11;</code>
       * @return The headString.
       */
      public java.lang.String getHeadString() {
        java.lang.Object ref = headString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            headString_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string headString = 11;</code>
       * @return The bytes for headString.
       */
      public com.google.protobuf.ByteString
          getHeadStringBytes() {
        java.lang.Object ref = headString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          headString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string headString = 11;</code>
       * @param value The headString to set.
       * @return This builder for chaining.
       */
      public Builder setHeadString(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        headString_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string headString = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeadString() {
        bitField0_ = (bitField0_ & ~0x00000200);
        headString_ = getDefaultInstance().getHeadString();
        onChanged();
        return this;
      }
      /**
       * <code>optional string headString = 11;</code>
       * @param value The bytes for headString to set.
       * @return This builder for chaining.
       */
      public Builder setHeadStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        headString_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object nerString_ = "";
      /**
       * <code>optional string nerString = 12;</code>
       * @return Whether the nerString field is set.
       */
      public boolean hasNerString() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional string nerString = 12;</code>
       * @return The nerString.
       */
      public java.lang.String getNerString() {
        java.lang.Object ref = nerString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            nerString_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string nerString = 12;</code>
       * @return The bytes for nerString.
       */
      public com.google.protobuf.ByteString
          getNerStringBytes() {
        java.lang.Object ref = nerString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nerString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string nerString = 12;</code>
       * @param value The nerString to set.
       * @return This builder for chaining.
       */
      public Builder setNerString(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        nerString_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string nerString = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearNerString() {
        bitField0_ = (bitField0_ & ~0x00000400);
        nerString_ = getDefaultInstance().getNerString();
        onChanged();
        return this;
      }
      /**
       * <code>optional string nerString = 12;</code>
       * @param value The bytes for nerString to set.
       * @return This builder for chaining.
       */
      public Builder setNerStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        nerString_ = value;
        onChanged();
        return this;
      }

      private int originalRef_ ;
      /**
       * <code>optional int32 originalRef = 13;</code>
       * @return Whether the originalRef field is set.
       */
      @java.lang.Override
      public boolean hasOriginalRef() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional int32 originalRef = 13;</code>
       * @return The originalRef.
       */
      @java.lang.Override
      public int getOriginalRef() {
        return originalRef_;
      }
      /**
       * <code>optional int32 originalRef = 13;</code>
       * @param value The originalRef to set.
       * @return This builder for chaining.
       */
      public Builder setOriginalRef(int value) {
        bitField0_ |= 0x00000800;
        originalRef_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 originalRef = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearOriginalRef() {
        bitField0_ = (bitField0_ & ~0x00000800);
        originalRef_ = 0;
        onChanged();
        return this;
      }

      private int goldCorefClusterID_ ;
      /**
       * <code>optional int32 goldCorefClusterID = 14;</code>
       * @return Whether the goldCorefClusterID field is set.
       */
      @java.lang.Override
      public boolean hasGoldCorefClusterID() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional int32 goldCorefClusterID = 14;</code>
       * @return The goldCorefClusterID.
       */
      @java.lang.Override
      public int getGoldCorefClusterID() {
        return goldCorefClusterID_;
      }
      /**
       * <code>optional int32 goldCorefClusterID = 14;</code>
       * @param value The goldCorefClusterID to set.
       * @return This builder for chaining.
       */
      public Builder setGoldCorefClusterID(int value) {
        bitField0_ |= 0x00001000;
        goldCorefClusterID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 goldCorefClusterID = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearGoldCorefClusterID() {
        bitField0_ = (bitField0_ & ~0x00001000);
        goldCorefClusterID_ = 0;
        onChanged();
        return this;
      }

      private int corefClusterID_ ;
      /**
       * <code>optional int32 corefClusterID = 15;</code>
       * @return Whether the corefClusterID field is set.
       */
      @java.lang.Override
      public boolean hasCorefClusterID() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>optional int32 corefClusterID = 15;</code>
       * @return The corefClusterID.
       */
      @java.lang.Override
      public int getCorefClusterID() {
        return corefClusterID_;
      }
      /**
       * <code>optional int32 corefClusterID = 15;</code>
       * @param value The corefClusterID to set.
       * @return This builder for chaining.
       */
      public Builder setCorefClusterID(int value) {
        bitField0_ |= 0x00002000;
        corefClusterID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 corefClusterID = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearCorefClusterID() {
        bitField0_ = (bitField0_ & ~0x00002000);
        corefClusterID_ = 0;
        onChanged();
        return this;
      }

      private int mentionNum_ ;
      /**
       * <code>optional int32 mentionNum = 16;</code>
       * @return Whether the mentionNum field is set.
       */
      @java.lang.Override
      public boolean hasMentionNum() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <code>optional int32 mentionNum = 16;</code>
       * @return The mentionNum.
       */
      @java.lang.Override
      public int getMentionNum() {
        return mentionNum_;
      }
      /**
       * <code>optional int32 mentionNum = 16;</code>
       * @param value The mentionNum to set.
       * @return This builder for chaining.
       */
      public Builder setMentionNum(int value) {
        bitField0_ |= 0x00004000;
        mentionNum_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 mentionNum = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentionNum() {
        bitField0_ = (bitField0_ & ~0x00004000);
        mentionNum_ = 0;
        onChanged();
        return this;
      }

      private int sentNum_ ;
      /**
       * <code>optional int32 sentNum = 17;</code>
       * @return Whether the sentNum field is set.
       */
      @java.lang.Override
      public boolean hasSentNum() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <code>optional int32 sentNum = 17;</code>
       * @return The sentNum.
       */
      @java.lang.Override
      public int getSentNum() {
        return sentNum_;
      }
      /**
       * <code>optional int32 sentNum = 17;</code>
       * @param value The sentNum to set.
       * @return This builder for chaining.
       */
      public Builder setSentNum(int value) {
        bitField0_ |= 0x00008000;
        sentNum_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 sentNum = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentNum() {
        bitField0_ = (bitField0_ & ~0x00008000);
        sentNum_ = 0;
        onChanged();
        return this;
      }

      private int utter_ ;
      /**
       * <code>optional int32 utter = 18;</code>
       * @return Whether the utter field is set.
       */
      @java.lang.Override
      public boolean hasUtter() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <code>optional int32 utter = 18;</code>
       * @return The utter.
       */
      @java.lang.Override
      public int getUtter() {
        return utter_;
      }
      /**
       * <code>optional int32 utter = 18;</code>
       * @param value The utter to set.
       * @return This builder for chaining.
       */
      public Builder setUtter(int value) {
        bitField0_ |= 0x00010000;
        utter_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 utter = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearUtter() {
        bitField0_ = (bitField0_ & ~0x00010000);
        utter_ = 0;
        onChanged();
        return this;
      }

      private int paragraph_ ;
      /**
       * <code>optional int32 paragraph = 19;</code>
       * @return Whether the paragraph field is set.
       */
      @java.lang.Override
      public boolean hasParagraph() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <code>optional int32 paragraph = 19;</code>
       * @return The paragraph.
       */
      @java.lang.Override
      public int getParagraph() {
        return paragraph_;
      }
      /**
       * <code>optional int32 paragraph = 19;</code>
       * @param value The paragraph to set.
       * @return This builder for chaining.
       */
      public Builder setParagraph(int value) {
        bitField0_ |= 0x00020000;
        paragraph_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 paragraph = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearParagraph() {
        bitField0_ = (bitField0_ & ~0x00020000);
        paragraph_ = 0;
        onChanged();
        return this;
      }

      private boolean isSubject_ ;
      /**
       * <code>optional bool isSubject = 20;</code>
       * @return Whether the isSubject field is set.
       */
      @java.lang.Override
      public boolean hasIsSubject() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <code>optional bool isSubject = 20;</code>
       * @return The isSubject.
       */
      @java.lang.Override
      public boolean getIsSubject() {
        return isSubject_;
      }
      /**
       * <code>optional bool isSubject = 20;</code>
       * @param value The isSubject to set.
       * @return This builder for chaining.
       */
      public Builder setIsSubject(boolean value) {
        bitField0_ |= 0x00040000;
        isSubject_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isSubject = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSubject() {
        bitField0_ = (bitField0_ & ~0x00040000);
        isSubject_ = false;
        onChanged();
        return this;
      }

      private boolean isDirectObject_ ;
      /**
       * <code>optional bool isDirectObject = 21;</code>
       * @return Whether the isDirectObject field is set.
       */
      @java.lang.Override
      public boolean hasIsDirectObject() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <code>optional bool isDirectObject = 21;</code>
       * @return The isDirectObject.
       */
      @java.lang.Override
      public boolean getIsDirectObject() {
        return isDirectObject_;
      }
      /**
       * <code>optional bool isDirectObject = 21;</code>
       * @param value The isDirectObject to set.
       * @return This builder for chaining.
       */
      public Builder setIsDirectObject(boolean value) {
        bitField0_ |= 0x00080000;
        isDirectObject_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isDirectObject = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsDirectObject() {
        bitField0_ = (bitField0_ & ~0x00080000);
        isDirectObject_ = false;
        onChanged();
        return this;
      }

      private boolean isIndirectObject_ ;
      /**
       * <code>optional bool isIndirectObject = 22;</code>
       * @return Whether the isIndirectObject field is set.
       */
      @java.lang.Override
      public boolean hasIsIndirectObject() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <code>optional bool isIndirectObject = 22;</code>
       * @return The isIndirectObject.
       */
      @java.lang.Override
      public boolean getIsIndirectObject() {
        return isIndirectObject_;
      }
      /**
       * <code>optional bool isIndirectObject = 22;</code>
       * @param value The isIndirectObject to set.
       * @return This builder for chaining.
       */
      public Builder setIsIndirectObject(boolean value) {
        bitField0_ |= 0x00100000;
        isIndirectObject_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isIndirectObject = 22;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsIndirectObject() {
        bitField0_ = (bitField0_ & ~0x00100000);
        isIndirectObject_ = false;
        onChanged();
        return this;
      }

      private boolean isPrepositionObject_ ;
      /**
       * <code>optional bool isPrepositionObject = 23;</code>
       * @return Whether the isPrepositionObject field is set.
       */
      @java.lang.Override
      public boolean hasIsPrepositionObject() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <code>optional bool isPrepositionObject = 23;</code>
       * @return The isPrepositionObject.
       */
      @java.lang.Override
      public boolean getIsPrepositionObject() {
        return isPrepositionObject_;
      }
      /**
       * <code>optional bool isPrepositionObject = 23;</code>
       * @param value The isPrepositionObject to set.
       * @return This builder for chaining.
       */
      public Builder setIsPrepositionObject(boolean value) {
        bitField0_ |= 0x00200000;
        isPrepositionObject_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isPrepositionObject = 23;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsPrepositionObject() {
        bitField0_ = (bitField0_ & ~0x00200000);
        isPrepositionObject_ = false;
        onChanged();
        return this;
      }

      private boolean hasTwin_ ;
      /**
       * <code>optional bool hasTwin = 24;</code>
       * @return Whether the hasTwin field is set.
       */
      @java.lang.Override
      public boolean hasHasTwin() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * <code>optional bool hasTwin = 24;</code>
       * @return The hasTwin.
       */
      @java.lang.Override
      public boolean getHasTwin() {
        return hasTwin_;
      }
      /**
       * <code>optional bool hasTwin = 24;</code>
       * @param value The hasTwin to set.
       * @return This builder for chaining.
       */
      public Builder setHasTwin(boolean value) {
        bitField0_ |= 0x00400000;
        hasTwin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool hasTwin = 24;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasTwin() {
        bitField0_ = (bitField0_ & ~0x00400000);
        hasTwin_ = false;
        onChanged();
        return this;
      }

      private boolean generic_ ;
      /**
       * <code>optional bool generic = 25;</code>
       * @return Whether the generic field is set.
       */
      @java.lang.Override
      public boolean hasGeneric() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <code>optional bool generic = 25;</code>
       * @return The generic.
       */
      @java.lang.Override
      public boolean getGeneric() {
        return generic_;
      }
      /**
       * <code>optional bool generic = 25;</code>
       * @param value The generic to set.
       * @return This builder for chaining.
       */
      public Builder setGeneric(boolean value) {
        bitField0_ |= 0x00800000;
        generic_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool generic = 25;</code>
       * @return This builder for chaining.
       */
      public Builder clearGeneric() {
        bitField0_ = (bitField0_ & ~0x00800000);
        generic_ = false;
        onChanged();
        return this;
      }

      private boolean isSingleton_ ;
      /**
       * <code>optional bool isSingleton = 26;</code>
       * @return Whether the isSingleton field is set.
       */
      @java.lang.Override
      public boolean hasIsSingleton() {
        return ((bitField0_ & 0x01000000) != 0);
      }
      /**
       * <code>optional bool isSingleton = 26;</code>
       * @return The isSingleton.
       */
      @java.lang.Override
      public boolean getIsSingleton() {
        return isSingleton_;
      }
      /**
       * <code>optional bool isSingleton = 26;</code>
       * @param value The isSingleton to set.
       * @return This builder for chaining.
       */
      public Builder setIsSingleton(boolean value) {
        bitField0_ |= 0x01000000;
        isSingleton_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isSingleton = 26;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSingleton() {
        bitField0_ = (bitField0_ & ~0x01000000);
        isSingleton_ = false;
        onChanged();
        return this;
      }

      private boolean hasBasicDependency_ ;
      /**
       * <code>optional bool hasBasicDependency = 27;</code>
       * @return Whether the hasBasicDependency field is set.
       */
      @java.lang.Override
      public boolean hasHasBasicDependency() {
        return ((bitField0_ & 0x02000000) != 0);
      }
      /**
       * <code>optional bool hasBasicDependency = 27;</code>
       * @return The hasBasicDependency.
       */
      @java.lang.Override
      public boolean getHasBasicDependency() {
        return hasBasicDependency_;
      }
      /**
       * <code>optional bool hasBasicDependency = 27;</code>
       * @param value The hasBasicDependency to set.
       * @return This builder for chaining.
       */
      public Builder setHasBasicDependency(boolean value) {
        bitField0_ |= 0x02000000;
        hasBasicDependency_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool hasBasicDependency = 27;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasBasicDependency() {
        bitField0_ = (bitField0_ & ~0x02000000);
        hasBasicDependency_ = false;
        onChanged();
        return this;
      }

      private boolean hasEnhancedDependency_ ;
      /**
       * <code>optional bool hasEnhancedDependency = 28;</code>
       * @return Whether the hasEnhancedDependency field is set.
       */
      @java.lang.Override
      public boolean hasHasEnhancedDependency() {
        return ((bitField0_ & 0x04000000) != 0);
      }
      /**
       * <code>optional bool hasEnhancedDependency = 28;</code>
       * @return The hasEnhancedDependency.
       */
      @java.lang.Override
      public boolean getHasEnhancedDependency() {
        return hasEnhancedDependency_;
      }
      /**
       * <code>optional bool hasEnhancedDependency = 28;</code>
       * @param value The hasEnhancedDependency to set.
       * @return This builder for chaining.
       */
      public Builder setHasEnhancedDependency(boolean value) {
        bitField0_ |= 0x04000000;
        hasEnhancedDependency_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool hasEnhancedDependency = 28;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasEnhancedDependency() {
        bitField0_ = (bitField0_ & ~0x04000000);
        hasEnhancedDependency_ = false;
        onChanged();
        return this;
      }

      private boolean hasContextParseTree_ ;
      /**
       * <code>optional bool hasContextParseTree = 29;</code>
       * @return Whether the hasContextParseTree field is set.
       */
      @java.lang.Override
      public boolean hasHasContextParseTree() {
        return ((bitField0_ & 0x08000000) != 0);
      }
      /**
       * <code>optional bool hasContextParseTree = 29;</code>
       * @return The hasContextParseTree.
       */
      @java.lang.Override
      public boolean getHasContextParseTree() {
        return hasContextParseTree_;
      }
      /**
       * <code>optional bool hasContextParseTree = 29;</code>
       * @param value The hasContextParseTree to set.
       * @return This builder for chaining.
       */
      public Builder setHasContextParseTree(boolean value) {
        bitField0_ |= 0x08000000;
        hasContextParseTree_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool hasContextParseTree = 29;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasContextParseTree() {
        bitField0_ = (bitField0_ & ~0x08000000);
        hasContextParseTree_ = false;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord headIndexedWord_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> headIndexedWordBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       * @return Whether the headIndexedWord field is set.
       */
      public boolean hasHeadIndexedWord() {
        return ((bitField0_ & 0x10000000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       * @return The headIndexedWord.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getHeadIndexedWord() {
        if (headIndexedWordBuilder_ == null) {
          return headIndexedWord_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : headIndexedWord_;
        } else {
          return headIndexedWordBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       */
      public Builder setHeadIndexedWord(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (headIndexedWordBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          headIndexedWord_ = value;
          onChanged();
        } else {
          headIndexedWordBuilder_.setMessage(value);
        }
        bitField0_ |= 0x10000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       */
      public Builder setHeadIndexedWord(
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (headIndexedWordBuilder_ == null) {
          headIndexedWord_ = builderForValue.build();
          onChanged();
        } else {
          headIndexedWordBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x10000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       */
      public Builder mergeHeadIndexedWord(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (headIndexedWordBuilder_ == null) {
          if (((bitField0_ & 0x10000000) != 0) &&
              headIndexedWord_ != null &&
              headIndexedWord_ != edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance()) {
            headIndexedWord_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.newBuilder(headIndexedWord_).mergeFrom(value).buildPartial();
          } else {
            headIndexedWord_ = value;
          }
          onChanged();
        } else {
          headIndexedWordBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x10000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       */
      public Builder clearHeadIndexedWord() {
        if (headIndexedWordBuilder_ == null) {
          headIndexedWord_ = null;
          onChanged();
        } else {
          headIndexedWordBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x10000000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder getHeadIndexedWordBuilder() {
        bitField0_ |= 0x10000000;
        onChanged();
        return getHeadIndexedWordFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getHeadIndexedWordOrBuilder() {
        if (headIndexedWordBuilder_ != null) {
          return headIndexedWordBuilder_.getMessageOrBuilder();
        } else {
          return headIndexedWord_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : headIndexedWord_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headIndexedWord = 30;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
          getHeadIndexedWordFieldBuilder() {
        if (headIndexedWordBuilder_ == null) {
          headIndexedWordBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder>(
                  getHeadIndexedWord(),
                  getParentForChildren(),
                  isClean());
          headIndexedWord_ = null;
        }
        return headIndexedWordBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord dependingVerb_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> dependingVerbBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       * @return Whether the dependingVerb field is set.
       */
      public boolean hasDependingVerb() {
        return ((bitField0_ & 0x20000000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       * @return The dependingVerb.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getDependingVerb() {
        if (dependingVerbBuilder_ == null) {
          return dependingVerb_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : dependingVerb_;
        } else {
          return dependingVerbBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       */
      public Builder setDependingVerb(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (dependingVerbBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dependingVerb_ = value;
          onChanged();
        } else {
          dependingVerbBuilder_.setMessage(value);
        }
        bitField0_ |= 0x20000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       */
      public Builder setDependingVerb(
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (dependingVerbBuilder_ == null) {
          dependingVerb_ = builderForValue.build();
          onChanged();
        } else {
          dependingVerbBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x20000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       */
      public Builder mergeDependingVerb(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (dependingVerbBuilder_ == null) {
          if (((bitField0_ & 0x20000000) != 0) &&
              dependingVerb_ != null &&
              dependingVerb_ != edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance()) {
            dependingVerb_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.newBuilder(dependingVerb_).mergeFrom(value).buildPartial();
          } else {
            dependingVerb_ = value;
          }
          onChanged();
        } else {
          dependingVerbBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x20000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       */
      public Builder clearDependingVerb() {
        if (dependingVerbBuilder_ == null) {
          dependingVerb_ = null;
          onChanged();
        } else {
          dependingVerbBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x20000000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder getDependingVerbBuilder() {
        bitField0_ |= 0x20000000;
        onChanged();
        return getDependingVerbFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getDependingVerbOrBuilder() {
        if (dependingVerbBuilder_ != null) {
          return dependingVerbBuilder_.getMessageOrBuilder();
        } else {
          return dependingVerb_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : dependingVerb_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord dependingVerb = 31;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
          getDependingVerbFieldBuilder() {
        if (dependingVerbBuilder_ == null) {
          dependingVerbBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder>(
                  getDependingVerb(),
                  getParentForChildren(),
                  isClean());
          dependingVerb_ = null;
        }
        return dependingVerbBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord headWord_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> headWordBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       * @return Whether the headWord field is set.
       */
      public boolean hasHeadWord() {
        return ((bitField0_ & 0x40000000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       * @return The headWord.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getHeadWord() {
        if (headWordBuilder_ == null) {
          return headWord_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : headWord_;
        } else {
          return headWordBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       */
      public Builder setHeadWord(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (headWordBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          headWord_ = value;
          onChanged();
        } else {
          headWordBuilder_.setMessage(value);
        }
        bitField0_ |= 0x40000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       */
      public Builder setHeadWord(
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (headWordBuilder_ == null) {
          headWord_ = builderForValue.build();
          onChanged();
        } else {
          headWordBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x40000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       */
      public Builder mergeHeadWord(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (headWordBuilder_ == null) {
          if (((bitField0_ & 0x40000000) != 0) &&
              headWord_ != null &&
              headWord_ != edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance()) {
            headWord_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.newBuilder(headWord_).mergeFrom(value).buildPartial();
          } else {
            headWord_ = value;
          }
          onChanged();
        } else {
          headWordBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x40000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       */
      public Builder clearHeadWord() {
        if (headWordBuilder_ == null) {
          headWord_ = null;
          onChanged();
        } else {
          headWordBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x40000000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder getHeadWordBuilder() {
        bitField0_ |= 0x40000000;
        onChanged();
        return getHeadWordFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getHeadWordOrBuilder() {
        if (headWordBuilder_ != null) {
          return headWordBuilder_.getMessageOrBuilder();
        } else {
          return headWord_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance() : headWord_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.IndexedWord headWord = 32;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
          getHeadWordFieldBuilder() {
        if (headWordBuilder_ == null) {
          headWordBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder>(
                  getHeadWord(),
                  getParentForChildren(),
                  isClean());
          headWord_ = null;
        }
        return headWordBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo speakerInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo, edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfoOrBuilder> speakerInfoBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       * @return Whether the speakerInfo field is set.
       */
      public boolean hasSpeakerInfo() {
        return ((bitField0_ & 0x80000000) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       * @return The speakerInfo.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo getSpeakerInfo() {
        if (speakerInfoBuilder_ == null) {
          return speakerInfo_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.getDefaultInstance() : speakerInfo_;
        } else {
          return speakerInfoBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       */
      public Builder setSpeakerInfo(edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo value) {
        if (speakerInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          speakerInfo_ = value;
          onChanged();
        } else {
          speakerInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x80000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       */
      public Builder setSpeakerInfo(
          edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.Builder builderForValue) {
        if (speakerInfoBuilder_ == null) {
          speakerInfo_ = builderForValue.build();
          onChanged();
        } else {
          speakerInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x80000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       */
      public Builder mergeSpeakerInfo(edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo value) {
        if (speakerInfoBuilder_ == null) {
          if (((bitField0_ & 0x80000000) != 0) &&
              speakerInfo_ != null &&
              speakerInfo_ != edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.getDefaultInstance()) {
            speakerInfo_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.newBuilder(speakerInfo_).mergeFrom(value).buildPartial();
          } else {
            speakerInfo_ = value;
          }
          onChanged();
        } else {
          speakerInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x80000000;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       */
      public Builder clearSpeakerInfo() {
        if (speakerInfoBuilder_ == null) {
          speakerInfo_ = null;
          onChanged();
        } else {
          speakerInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x80000000);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.Builder getSpeakerInfoBuilder() {
        bitField0_ |= 0x80000000;
        onChanged();
        return getSpeakerInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfoOrBuilder getSpeakerInfoOrBuilder() {
        if (speakerInfoBuilder_ != null) {
          return speakerInfoBuilder_.getMessageOrBuilder();
        } else {
          return speakerInfo_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.getDefaultInstance() : speakerInfo_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.SpeakerInfo speakerInfo = 33;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo, edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfoOrBuilder> 
          getSpeakerInfoFieldBuilder() {
        if (speakerInfoBuilder_ == null) {
          speakerInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo, edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfoOrBuilder>(
                  getSpeakerInfo(),
                  getParentForChildren(),
                  isClean());
          speakerInfo_ = null;
        }
        return speakerInfoBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> sentenceWords_ =
        java.util.Collections.emptyList();
      private void ensureSentenceWordsIsMutable() {
        if (!((bitField1_ & 0x00000001) != 0)) {
          sentenceWords_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord>(sentenceWords_);
          bitField1_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> sentenceWordsBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> getSentenceWordsList() {
        if (sentenceWordsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sentenceWords_);
        } else {
          return sentenceWordsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public int getSentenceWordsCount() {
        if (sentenceWordsBuilder_ == null) {
          return sentenceWords_.size();
        } else {
          return sentenceWordsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getSentenceWords(int index) {
        if (sentenceWordsBuilder_ == null) {
          return sentenceWords_.get(index);
        } else {
          return sentenceWordsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder setSentenceWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (sentenceWordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentenceWordsIsMutable();
          sentenceWords_.set(index, value);
          onChanged();
        } else {
          sentenceWordsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder setSentenceWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (sentenceWordsBuilder_ == null) {
          ensureSentenceWordsIsMutable();
          sentenceWords_.set(index, builderForValue.build());
          onChanged();
        } else {
          sentenceWordsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder addSentenceWords(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (sentenceWordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentenceWordsIsMutable();
          sentenceWords_.add(value);
          onChanged();
        } else {
          sentenceWordsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder addSentenceWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (sentenceWordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSentenceWordsIsMutable();
          sentenceWords_.add(index, value);
          onChanged();
        } else {
          sentenceWordsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder addSentenceWords(
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (sentenceWordsBuilder_ == null) {
          ensureSentenceWordsIsMutable();
          sentenceWords_.add(builderForValue.build());
          onChanged();
        } else {
          sentenceWordsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder addSentenceWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (sentenceWordsBuilder_ == null) {
          ensureSentenceWordsIsMutable();
          sentenceWords_.add(index, builderForValue.build());
          onChanged();
        } else {
          sentenceWordsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder addAllSentenceWords(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> values) {
        if (sentenceWordsBuilder_ == null) {
          ensureSentenceWordsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sentenceWords_);
          onChanged();
        } else {
          sentenceWordsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder clearSentenceWords() {
        if (sentenceWordsBuilder_ == null) {
          sentenceWords_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000001);
          onChanged();
        } else {
          sentenceWordsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public Builder removeSentenceWords(int index) {
        if (sentenceWordsBuilder_ == null) {
          ensureSentenceWordsIsMutable();
          sentenceWords_.remove(index);
          onChanged();
        } else {
          sentenceWordsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder getSentenceWordsBuilder(
          int index) {
        return getSentenceWordsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getSentenceWordsOrBuilder(
          int index) {
        if (sentenceWordsBuilder_ == null) {
          return sentenceWords_.get(index);  } else {
          return sentenceWordsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
           getSentenceWordsOrBuilderList() {
        if (sentenceWordsBuilder_ != null) {
          return sentenceWordsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sentenceWords_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder addSentenceWordsBuilder() {
        return getSentenceWordsFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder addSentenceWordsBuilder(
          int index) {
        return getSentenceWordsFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord sentenceWords = 50;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder> 
           getSentenceWordsBuilderList() {
        return getSentenceWordsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
          getSentenceWordsFieldBuilder() {
        if (sentenceWordsBuilder_ == null) {
          sentenceWordsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder>(
                  sentenceWords_,
                  ((bitField1_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sentenceWords_ = null;
        }
        return sentenceWordsBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> originalSpan_ =
        java.util.Collections.emptyList();
      private void ensureOriginalSpanIsMutable() {
        if (!((bitField1_ & 0x00000002) != 0)) {
          originalSpan_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord>(originalSpan_);
          bitField1_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> originalSpanBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> getOriginalSpanList() {
        if (originalSpanBuilder_ == null) {
          return java.util.Collections.unmodifiableList(originalSpan_);
        } else {
          return originalSpanBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public int getOriginalSpanCount() {
        if (originalSpanBuilder_ == null) {
          return originalSpan_.size();
        } else {
          return originalSpanBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getOriginalSpan(int index) {
        if (originalSpanBuilder_ == null) {
          return originalSpan_.get(index);
        } else {
          return originalSpanBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder setOriginalSpan(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (originalSpanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOriginalSpanIsMutable();
          originalSpan_.set(index, value);
          onChanged();
        } else {
          originalSpanBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder setOriginalSpan(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (originalSpanBuilder_ == null) {
          ensureOriginalSpanIsMutable();
          originalSpan_.set(index, builderForValue.build());
          onChanged();
        } else {
          originalSpanBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder addOriginalSpan(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (originalSpanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOriginalSpanIsMutable();
          originalSpan_.add(value);
          onChanged();
        } else {
          originalSpanBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder addOriginalSpan(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord value) {
        if (originalSpanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOriginalSpanIsMutable();
          originalSpan_.add(index, value);
          onChanged();
        } else {
          originalSpanBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder addOriginalSpan(
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (originalSpanBuilder_ == null) {
          ensureOriginalSpanIsMutable();
          originalSpan_.add(builderForValue.build());
          onChanged();
        } else {
          originalSpanBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder addOriginalSpan(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder builderForValue) {
        if (originalSpanBuilder_ == null) {
          ensureOriginalSpanIsMutable();
          originalSpan_.add(index, builderForValue.build());
          onChanged();
        } else {
          originalSpanBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder addAllOriginalSpan(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord> values) {
        if (originalSpanBuilder_ == null) {
          ensureOriginalSpanIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, originalSpan_);
          onChanged();
        } else {
          originalSpanBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder clearOriginalSpan() {
        if (originalSpanBuilder_ == null) {
          originalSpan_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000002);
          onChanged();
        } else {
          originalSpanBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public Builder removeOriginalSpan(int index) {
        if (originalSpanBuilder_ == null) {
          ensureOriginalSpanIsMutable();
          originalSpan_.remove(index);
          onChanged();
        } else {
          originalSpanBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder getOriginalSpanBuilder(
          int index) {
        return getOriginalSpanFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder getOriginalSpanOrBuilder(
          int index) {
        if (originalSpanBuilder_ == null) {
          return originalSpan_.get(index);  } else {
          return originalSpanBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
           getOriginalSpanOrBuilderList() {
        if (originalSpanBuilder_ != null) {
          return originalSpanBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(originalSpan_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder addOriginalSpanBuilder() {
        return getOriginalSpanFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder addOriginalSpanBuilder(
          int index) {
        return getOriginalSpanFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.IndexedWord originalSpan = 51;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder> 
           getOriginalSpanBuilderList() {
        return getOriginalSpanFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder> 
          getOriginalSpanFieldBuilder() {
        if (originalSpanBuilder_ == null) {
          originalSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder>(
                  originalSpan_,
                  ((bitField1_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          originalSpan_ = null;
        }
        return originalSpanBuilder_;
      }

      private com.google.protobuf.LazyStringList dependents_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDependentsIsMutable() {
        if (!((bitField1_ & 0x00000004) != 0)) {
          dependents_ = new com.google.protobuf.LazyStringArrayList(dependents_);
          bitField1_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @return A list containing the dependents.
       */
      public com.google.protobuf.ProtocolStringList
          getDependentsList() {
        return dependents_.getUnmodifiableView();
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @return The count of dependents.
       */
      public int getDependentsCount() {
        return dependents_.size();
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @param index The index of the element to return.
       * @return The dependents at the given index.
       */
      public java.lang.String getDependents(int index) {
        return dependents_.get(index);
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @param index The index of the value to return.
       * @return The bytes of the dependents at the given index.
       */
      public com.google.protobuf.ByteString
          getDependentsBytes(int index) {
        return dependents_.getByteString(index);
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @param index The index to set the value at.
       * @param value The dependents to set.
       * @return This builder for chaining.
       */
      public Builder setDependents(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDependentsIsMutable();
        dependents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @param value The dependents to add.
       * @return This builder for chaining.
       */
      public Builder addDependents(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDependentsIsMutable();
        dependents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @param values The dependents to add.
       * @return This builder for chaining.
       */
      public Builder addAllDependents(
          java.lang.Iterable<java.lang.String> values) {
        ensureDependentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, dependents_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @return This builder for chaining.
       */
      public Builder clearDependents() {
        dependents_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField1_ = (bitField1_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string dependents = 52;</code>
       * @param value The bytes of the dependents to add.
       * @return This builder for chaining.
       */
      public Builder addDependentsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDependentsIsMutable();
        dependents_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList preprocessedTerms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensurePreprocessedTermsIsMutable() {
        if (!((bitField1_ & 0x00000008) != 0)) {
          preprocessedTerms_ = new com.google.protobuf.LazyStringArrayList(preprocessedTerms_);
          bitField1_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @return A list containing the preprocessedTerms.
       */
      public com.google.protobuf.ProtocolStringList
          getPreprocessedTermsList() {
        return preprocessedTerms_.getUnmodifiableView();
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @return The count of preprocessedTerms.
       */
      public int getPreprocessedTermsCount() {
        return preprocessedTerms_.size();
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @param index The index of the element to return.
       * @return The preprocessedTerms at the given index.
       */
      public java.lang.String getPreprocessedTerms(int index) {
        return preprocessedTerms_.get(index);
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @param index The index of the value to return.
       * @return The bytes of the preprocessedTerms at the given index.
       */
      public com.google.protobuf.ByteString
          getPreprocessedTermsBytes(int index) {
        return preprocessedTerms_.getByteString(index);
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @param index The index to set the value at.
       * @param value The preprocessedTerms to set.
       * @return This builder for chaining.
       */
      public Builder setPreprocessedTerms(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePreprocessedTermsIsMutable();
        preprocessedTerms_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @param value The preprocessedTerms to add.
       * @return This builder for chaining.
       */
      public Builder addPreprocessedTerms(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePreprocessedTermsIsMutable();
        preprocessedTerms_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @param values The preprocessedTerms to add.
       * @return This builder for chaining.
       */
      public Builder addAllPreprocessedTerms(
          java.lang.Iterable<java.lang.String> values) {
        ensurePreprocessedTermsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, preprocessedTerms_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreprocessedTerms() {
        preprocessedTerms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField1_ = (bitField1_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string preprocessedTerms = 53;</code>
       * @param value The bytes of the preprocessedTerms to add.
       * @return This builder for chaining.
       */
      public Builder addPreprocessedTermsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePreprocessedTermsIsMutable();
        preprocessedTerms_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList appositions_ = emptyIntList();
      private void ensureAppositionsIsMutable() {
        if (!((bitField1_ & 0x00000010) != 0)) {
          appositions_ = mutableCopy(appositions_);
          bitField1_ |= 0x00000010;
         }
      }
      /**
       * <code>repeated int32 appositions = 54;</code>
       * @return A list containing the appositions.
       */
      public java.util.List<java.lang.Integer>
          getAppositionsList() {
        return ((bitField1_ & 0x00000010) != 0) ?
                 java.util.Collections.unmodifiableList(appositions_) : appositions_;
      }
      /**
       * <code>repeated int32 appositions = 54;</code>
       * @return The count of appositions.
       */
      public int getAppositionsCount() {
        return appositions_.size();
      }
      /**
       * <code>repeated int32 appositions = 54;</code>
       * @param index The index of the element to return.
       * @return The appositions at the given index.
       */
      public int getAppositions(int index) {
        return appositions_.getInt(index);
      }
      /**
       * <code>repeated int32 appositions = 54;</code>
       * @param index The index to set the value at.
       * @param value The appositions to set.
       * @return This builder for chaining.
       */
      public Builder setAppositions(
          int index, int value) {
        ensureAppositionsIsMutable();
        appositions_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 appositions = 54;</code>
       * @param value The appositions to add.
       * @return This builder for chaining.
       */
      public Builder addAppositions(int value) {
        ensureAppositionsIsMutable();
        appositions_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 appositions = 54;</code>
       * @param values The appositions to add.
       * @return This builder for chaining.
       */
      public Builder addAllAppositions(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureAppositionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, appositions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 appositions = 54;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppositions() {
        appositions_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000010);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList predicateNominatives_ = emptyIntList();
      private void ensurePredicateNominativesIsMutable() {
        if (!((bitField1_ & 0x00000020) != 0)) {
          predicateNominatives_ = mutableCopy(predicateNominatives_);
          bitField1_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated int32 predicateNominatives = 55;</code>
       * @return A list containing the predicateNominatives.
       */
      public java.util.List<java.lang.Integer>
          getPredicateNominativesList() {
        return ((bitField1_ & 0x00000020) != 0) ?
                 java.util.Collections.unmodifiableList(predicateNominatives_) : predicateNominatives_;
      }
      /**
       * <code>repeated int32 predicateNominatives = 55;</code>
       * @return The count of predicateNominatives.
       */
      public int getPredicateNominativesCount() {
        return predicateNominatives_.size();
      }
      /**
       * <code>repeated int32 predicateNominatives = 55;</code>
       * @param index The index of the element to return.
       * @return The predicateNominatives at the given index.
       */
      public int getPredicateNominatives(int index) {
        return predicateNominatives_.getInt(index);
      }
      /**
       * <code>repeated int32 predicateNominatives = 55;</code>
       * @param index The index to set the value at.
       * @param value The predicateNominatives to set.
       * @return This builder for chaining.
       */
      public Builder setPredicateNominatives(
          int index, int value) {
        ensurePredicateNominativesIsMutable();
        predicateNominatives_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 predicateNominatives = 55;</code>
       * @param value The predicateNominatives to add.
       * @return This builder for chaining.
       */
      public Builder addPredicateNominatives(int value) {
        ensurePredicateNominativesIsMutable();
        predicateNominatives_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 predicateNominatives = 55;</code>
       * @param values The predicateNominatives to add.
       * @return This builder for chaining.
       */
      public Builder addAllPredicateNominatives(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePredicateNominativesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, predicateNominatives_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 predicateNominatives = 55;</code>
       * @return This builder for chaining.
       */
      public Builder clearPredicateNominatives() {
        predicateNominatives_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000020);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList relativePronouns_ = emptyIntList();
      private void ensureRelativePronounsIsMutable() {
        if (!((bitField1_ & 0x00000040) != 0)) {
          relativePronouns_ = mutableCopy(relativePronouns_);
          bitField1_ |= 0x00000040;
         }
      }
      /**
       * <code>repeated int32 relativePronouns = 56;</code>
       * @return A list containing the relativePronouns.
       */
      public java.util.List<java.lang.Integer>
          getRelativePronounsList() {
        return ((bitField1_ & 0x00000040) != 0) ?
                 java.util.Collections.unmodifiableList(relativePronouns_) : relativePronouns_;
      }
      /**
       * <code>repeated int32 relativePronouns = 56;</code>
       * @return The count of relativePronouns.
       */
      public int getRelativePronounsCount() {
        return relativePronouns_.size();
      }
      /**
       * <code>repeated int32 relativePronouns = 56;</code>
       * @param index The index of the element to return.
       * @return The relativePronouns at the given index.
       */
      public int getRelativePronouns(int index) {
        return relativePronouns_.getInt(index);
      }
      /**
       * <code>repeated int32 relativePronouns = 56;</code>
       * @param index The index to set the value at.
       * @param value The relativePronouns to set.
       * @return This builder for chaining.
       */
      public Builder setRelativePronouns(
          int index, int value) {
        ensureRelativePronounsIsMutable();
        relativePronouns_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 relativePronouns = 56;</code>
       * @param value The relativePronouns to add.
       * @return This builder for chaining.
       */
      public Builder addRelativePronouns(int value) {
        ensureRelativePronounsIsMutable();
        relativePronouns_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 relativePronouns = 56;</code>
       * @param values The relativePronouns to add.
       * @return This builder for chaining.
       */
      public Builder addAllRelativePronouns(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRelativePronounsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, relativePronouns_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 relativePronouns = 56;</code>
       * @return This builder for chaining.
       */
      public Builder clearRelativePronouns() {
        relativePronouns_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000040);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList listMembers_ = emptyIntList();
      private void ensureListMembersIsMutable() {
        if (!((bitField1_ & 0x00000080) != 0)) {
          listMembers_ = mutableCopy(listMembers_);
          bitField1_ |= 0x00000080;
         }
      }
      /**
       * <code>repeated int32 listMembers = 57;</code>
       * @return A list containing the listMembers.
       */
      public java.util.List<java.lang.Integer>
          getListMembersList() {
        return ((bitField1_ & 0x00000080) != 0) ?
                 java.util.Collections.unmodifiableList(listMembers_) : listMembers_;
      }
      /**
       * <code>repeated int32 listMembers = 57;</code>
       * @return The count of listMembers.
       */
      public int getListMembersCount() {
        return listMembers_.size();
      }
      /**
       * <code>repeated int32 listMembers = 57;</code>
       * @param index The index of the element to return.
       * @return The listMembers at the given index.
       */
      public int getListMembers(int index) {
        return listMembers_.getInt(index);
      }
      /**
       * <code>repeated int32 listMembers = 57;</code>
       * @param index The index to set the value at.
       * @param value The listMembers to set.
       * @return This builder for chaining.
       */
      public Builder setListMembers(
          int index, int value) {
        ensureListMembersIsMutable();
        listMembers_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 listMembers = 57;</code>
       * @param value The listMembers to add.
       * @return This builder for chaining.
       */
      public Builder addListMembers(int value) {
        ensureListMembersIsMutable();
        listMembers_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 listMembers = 57;</code>
       * @param values The listMembers to add.
       * @return This builder for chaining.
       */
      public Builder addAllListMembers(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureListMembersIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, listMembers_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 listMembers = 57;</code>
       * @return This builder for chaining.
       */
      public Builder clearListMembers() {
        listMembers_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000080);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList belongToLists_ = emptyIntList();
      private void ensureBelongToListsIsMutable() {
        if (!((bitField1_ & 0x00000100) != 0)) {
          belongToLists_ = mutableCopy(belongToLists_);
          bitField1_ |= 0x00000100;
         }
      }
      /**
       * <code>repeated int32 belongToLists = 58;</code>
       * @return A list containing the belongToLists.
       */
      public java.util.List<java.lang.Integer>
          getBelongToListsList() {
        return ((bitField1_ & 0x00000100) != 0) ?
                 java.util.Collections.unmodifiableList(belongToLists_) : belongToLists_;
      }
      /**
       * <code>repeated int32 belongToLists = 58;</code>
       * @return The count of belongToLists.
       */
      public int getBelongToListsCount() {
        return belongToLists_.size();
      }
      /**
       * <code>repeated int32 belongToLists = 58;</code>
       * @param index The index of the element to return.
       * @return The belongToLists at the given index.
       */
      public int getBelongToLists(int index) {
        return belongToLists_.getInt(index);
      }
      /**
       * <code>repeated int32 belongToLists = 58;</code>
       * @param index The index to set the value at.
       * @param value The belongToLists to set.
       * @return This builder for chaining.
       */
      public Builder setBelongToLists(
          int index, int value) {
        ensureBelongToListsIsMutable();
        belongToLists_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 belongToLists = 58;</code>
       * @param value The belongToLists to add.
       * @return This builder for chaining.
       */
      public Builder addBelongToLists(int value) {
        ensureBelongToListsIsMutable();
        belongToLists_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 belongToLists = 58;</code>
       * @param values The belongToLists to add.
       * @return This builder for chaining.
       */
      public Builder addAllBelongToLists(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureBelongToListsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, belongToLists_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 belongToLists = 58;</code>
       * @return This builder for chaining.
       */
      public Builder clearBelongToLists() {
        belongToLists_ = emptyIntList();
        bitField1_ = (bitField1_ & ~0x00000100);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Mention)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Mention)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Mention DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Mention();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Mention>
        PARSER = new com.google.protobuf.AbstractParser<Mention>() {
      @java.lang.Override
      public Mention parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Mention> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Mention> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Mention getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface IndexedWordOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.IndexedWord)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional int32 sentenceNum = 1;</code>
     * @return Whether the sentenceNum field is set.
     */
    boolean hasSentenceNum();
    /**
     * <code>optional int32 sentenceNum = 1;</code>
     * @return The sentenceNum.
     */
    int getSentenceNum();

    /**
     * <code>optional int32 tokenIndex = 2;</code>
     * @return Whether the tokenIndex field is set.
     */
    boolean hasTokenIndex();
    /**
     * <code>optional int32 tokenIndex = 2;</code>
     * @return The tokenIndex.
     */
    int getTokenIndex();

    /**
     * <code>optional int32 docID = 3;</code>
     * @return Whether the docID field is set.
     */
    boolean hasDocID();
    /**
     * <code>optional int32 docID = 3;</code>
     * @return The docID.
     */
    int getDocID();

    /**
     * <code>optional uint32 copyCount = 4;</code>
     * @return Whether the copyCount field is set.
     */
    boolean hasCopyCount();
    /**
     * <code>optional uint32 copyCount = 4;</code>
     * @return The copyCount.
     */
    int getCopyCount();
  }
  /**
   * Protobuf type {@code edu.stanford.nlp.pipeline.IndexedWord}
   */
  public static final class IndexedWord extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.IndexedWord)
      IndexedWordOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use IndexedWord.newBuilder() to construct.
    private IndexedWord(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private IndexedWord() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new IndexedWord();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_IndexedWord_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_IndexedWord_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.class, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder.class);
    }

    private int bitField0_;
    public static final int SENTENCENUM_FIELD_NUMBER = 1;
    private int sentenceNum_;
    /**
     * <code>optional int32 sentenceNum = 1;</code>
     * @return Whether the sentenceNum field is set.
     */
    @java.lang.Override
    public boolean hasSentenceNum() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional int32 sentenceNum = 1;</code>
     * @return The sentenceNum.
     */
    @java.lang.Override
    public int getSentenceNum() {
      return sentenceNum_;
    }

    public static final int TOKENINDEX_FIELD_NUMBER = 2;
    private int tokenIndex_;
    /**
     * <code>optional int32 tokenIndex = 2;</code>
     * @return Whether the tokenIndex field is set.
     */
    @java.lang.Override
    public boolean hasTokenIndex() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional int32 tokenIndex = 2;</code>
     * @return The tokenIndex.
     */
    @java.lang.Override
    public int getTokenIndex() {
      return tokenIndex_;
    }

    public static final int DOCID_FIELD_NUMBER = 3;
    private int docID_;
    /**
     * <code>optional int32 docID = 3;</code>
     * @return Whether the docID field is set.
     */
    @java.lang.Override
    public boolean hasDocID() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional int32 docID = 3;</code>
     * @return The docID.
     */
    @java.lang.Override
    public int getDocID() {
      return docID_;
    }

    public static final int COPYCOUNT_FIELD_NUMBER = 4;
    private int copyCount_;
    /**
     * <code>optional uint32 copyCount = 4;</code>
     * @return Whether the copyCount field is set.
     */
    @java.lang.Override
    public boolean hasCopyCount() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional uint32 copyCount = 4;</code>
     * @return The copyCount.
     */
    @java.lang.Override
    public int getCopyCount() {
      return copyCount_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, sentenceNum_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, tokenIndex_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, docID_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(4, copyCount_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, sentenceNum_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, tokenIndex_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, docID_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, copyCount_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord other = (edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord) obj;

      if (hasSentenceNum() != other.hasSentenceNum()) return false;
      if (hasSentenceNum()) {
        if (getSentenceNum()
            != other.getSentenceNum()) return false;
      }
      if (hasTokenIndex() != other.hasTokenIndex()) return false;
      if (hasTokenIndex()) {
        if (getTokenIndex()
            != other.getTokenIndex()) return false;
      }
      if (hasDocID() != other.hasDocID()) return false;
      if (hasDocID()) {
        if (getDocID()
            != other.getDocID()) return false;
      }
      if (hasCopyCount() != other.hasCopyCount()) return false;
      if (hasCopyCount()) {
        if (getCopyCount()
            != other.getCopyCount()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSentenceNum()) {
        hash = (37 * hash) + SENTENCENUM_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceNum();
      }
      if (hasTokenIndex()) {
        hash = (37 * hash) + TOKENINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getTokenIndex();
      }
      if (hasDocID()) {
        hash = (37 * hash) + DOCID_FIELD_NUMBER;
        hash = (53 * hash) + getDocID();
      }
      if (hasCopyCount()) {
        hash = (37 * hash) + COPYCOUNT_FIELD_NUMBER;
        hash = (53 * hash) + getCopyCount();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.IndexedWord}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.IndexedWord)
        edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWordOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_IndexedWord_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_IndexedWord_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.class, edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sentenceNum_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        tokenIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        docID_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        copyCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_IndexedWord_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord result = new edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sentenceNum_ = sentenceNum_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.tokenIndex_ = tokenIndex_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.docID_ = docID_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.copyCount_ = copyCount_;
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord.getDefaultInstance()) return this;
        if (other.hasSentenceNum()) {
          setSentenceNum(other.getSentenceNum());
        }
        if (other.hasTokenIndex()) {
          setTokenIndex(other.getTokenIndex());
        }
        if (other.hasDocID()) {
          setDocID(other.getDocID());
        }
        if (other.hasCopyCount()) {
          setCopyCount(other.getCopyCount());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                sentenceNum_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                tokenIndex_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                docID_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                copyCount_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int sentenceNum_ ;
      /**
       * <code>optional int32 sentenceNum = 1;</code>
       * @return Whether the sentenceNum field is set.
       */
      @java.lang.Override
      public boolean hasSentenceNum() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional int32 sentenceNum = 1;</code>
       * @return The sentenceNum.
       */
      @java.lang.Override
      public int getSentenceNum() {
        return sentenceNum_;
      }
      /**
       * <code>optional int32 sentenceNum = 1;</code>
       * @param value The sentenceNum to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceNum(int value) {
        bitField0_ |= 0x00000001;
        sentenceNum_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 sentenceNum = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentenceNum() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sentenceNum_ = 0;
        onChanged();
        return this;
      }

      private int tokenIndex_ ;
      /**
       * <code>optional int32 tokenIndex = 2;</code>
       * @return Whether the tokenIndex field is set.
       */
      @java.lang.Override
      public boolean hasTokenIndex() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int32 tokenIndex = 2;</code>
       * @return The tokenIndex.
       */
      @java.lang.Override
      public int getTokenIndex() {
        return tokenIndex_;
      }
      /**
       * <code>optional int32 tokenIndex = 2;</code>
       * @param value The tokenIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTokenIndex(int value) {
        bitField0_ |= 0x00000002;
        tokenIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 tokenIndex = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        tokenIndex_ = 0;
        onChanged();
        return this;
      }

      private int docID_ ;
      /**
       * <code>optional int32 docID = 3;</code>
       * @return Whether the docID field is set.
       */
      @java.lang.Override
      public boolean hasDocID() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional int32 docID = 3;</code>
       * @return The docID.
       */
      @java.lang.Override
      public int getDocID() {
        return docID_;
      }
      /**
       * <code>optional int32 docID = 3;</code>
       * @param value The docID to set.
       * @return This builder for chaining.
       */
      public Builder setDocID(int value) {
        bitField0_ |= 0x00000004;
        docID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 docID = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDocID() {
        bitField0_ = (bitField0_ & ~0x00000004);
        docID_ = 0;
        onChanged();
        return this;
      }

      private int copyCount_ ;
      /**
       * <code>optional uint32 copyCount = 4;</code>
       * @return Whether the copyCount field is set.
       */
      @java.lang.Override
      public boolean hasCopyCount() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional uint32 copyCount = 4;</code>
       * @return The copyCount.
       */
      @java.lang.Override
      public int getCopyCount() {
        return copyCount_;
      }
      /**
       * <code>optional uint32 copyCount = 4;</code>
       * @param value The copyCount to set.
       * @return This builder for chaining.
       */
      public Builder setCopyCount(int value) {
        bitField0_ |= 0x00000008;
        copyCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 copyCount = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCopyCount() {
        bitField0_ = (bitField0_ & ~0x00000008);
        copyCount_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.IndexedWord)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.IndexedWord)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<IndexedWord>
        PARSER = new com.google.protobuf.AbstractParser<IndexedWord>() {
      @java.lang.Override
      public IndexedWord parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<IndexedWord> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<IndexedWord> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.IndexedWord getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SpeakerInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SpeakerInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional string speakerName = 1;</code>
     * @return Whether the speakerName field is set.
     */
    boolean hasSpeakerName();
    /**
     * <code>optional string speakerName = 1;</code>
     * @return The speakerName.
     */
    java.lang.String getSpeakerName();
    /**
     * <code>optional string speakerName = 1;</code>
     * @return The bytes for speakerName.
     */
    com.google.protobuf.ByteString
        getSpeakerNameBytes();

    /**
     * <code>repeated int32 mentions = 2;</code>
     * @return A list containing the mentions.
     */
    java.util.List<java.lang.Integer> getMentionsList();
    /**
     * <code>repeated int32 mentions = 2;</code>
     * @return The count of mentions.
     */
    int getMentionsCount();
    /**
     * <code>repeated int32 mentions = 2;</code>
     * @param index The index of the element to return.
     * @return The mentions at the given index.
     */
    int getMentions(int index);
  }
  /**
   * Protobuf type {@code edu.stanford.nlp.pipeline.SpeakerInfo}
   */
  public static final class SpeakerInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SpeakerInfo)
      SpeakerInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SpeakerInfo.newBuilder() to construct.
    private SpeakerInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SpeakerInfo() {
      speakerName_ = "";
      mentions_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SpeakerInfo();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.Builder.class);
    }

    private int bitField0_;
    public static final int SPEAKERNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object speakerName_;
    /**
     * <code>optional string speakerName = 1;</code>
     * @return Whether the speakerName field is set.
     */
    @java.lang.Override
    public boolean hasSpeakerName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string speakerName = 1;</code>
     * @return The speakerName.
     */
    @java.lang.Override
    public java.lang.String getSpeakerName() {
      java.lang.Object ref = speakerName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          speakerName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string speakerName = 1;</code>
     * @return The bytes for speakerName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSpeakerNameBytes() {
      java.lang.Object ref = speakerName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        speakerName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MENTIONS_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.IntList mentions_;
    /**
     * <code>repeated int32 mentions = 2;</code>
     * @return A list containing the mentions.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getMentionsList() {
      return mentions_;
    }
    /**
     * <code>repeated int32 mentions = 2;</code>
     * @return The count of mentions.
     */
    public int getMentionsCount() {
      return mentions_.size();
    }
    /**
     * <code>repeated int32 mentions = 2;</code>
     * @param index The index of the element to return.
     * @return The mentions at the given index.
     */
    public int getMentions(int index) {
      return mentions_.getInt(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, speakerName_);
      }
      for (int i = 0; i < mentions_.size(); i++) {
        output.writeInt32(2, mentions_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, speakerName_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < mentions_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(mentions_.getInt(i));
        }
        size += dataSize;
        size += 1 * getMentionsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo) obj;

      if (hasSpeakerName() != other.hasSpeakerName()) return false;
      if (hasSpeakerName()) {
        if (!getSpeakerName()
            .equals(other.getSpeakerName())) return false;
      }
      if (!getMentionsList()
          .equals(other.getMentionsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSpeakerName()) {
        hash = (37 * hash) + SPEAKERNAME_FIELD_NUMBER;
        hash = (53 * hash) + getSpeakerName().hashCode();
      }
      if (getMentionsCount() > 0) {
        hash = (37 * hash) + MENTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMentionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SpeakerInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SpeakerInfo)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        speakerName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        mentions_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.speakerName_ = speakerName_;
        if (((bitField0_ & 0x00000002) != 0)) {
          mentions_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.mentions_ = mentions_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo.getDefaultInstance()) return this;
        if (other.hasSpeakerName()) {
          bitField0_ |= 0x00000001;
          speakerName_ = other.speakerName_;
          onChanged();
        }
        if (!other.mentions_.isEmpty()) {
          if (mentions_.isEmpty()) {
            mentions_ = other.mentions_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureMentionsIsMutable();
            mentions_.addAll(other.mentions_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                speakerName_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                int v = input.readInt32();
                ensureMentionsIsMutable();
                mentions_.addInt(v);
                break;
              } // case 16
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureMentionsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  mentions_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object speakerName_ = "";
      /**
       * <code>optional string speakerName = 1;</code>
       * @return Whether the speakerName field is set.
       */
      public boolean hasSpeakerName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string speakerName = 1;</code>
       * @return The speakerName.
       */
      public java.lang.String getSpeakerName() {
        java.lang.Object ref = speakerName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            speakerName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string speakerName = 1;</code>
       * @return The bytes for speakerName.
       */
      public com.google.protobuf.ByteString
          getSpeakerNameBytes() {
        java.lang.Object ref = speakerName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          speakerName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string speakerName = 1;</code>
       * @param value The speakerName to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        speakerName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string speakerName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpeakerName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        speakerName_ = getDefaultInstance().getSpeakerName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string speakerName = 1;</code>
       * @param value The bytes for speakerName to set.
       * @return This builder for chaining.
       */
      public Builder setSpeakerNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        speakerName_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList mentions_ = emptyIntList();
      private void ensureMentionsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          mentions_ = mutableCopy(mentions_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated int32 mentions = 2;</code>
       * @return A list containing the mentions.
       */
      public java.util.List<java.lang.Integer>
          getMentionsList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(mentions_) : mentions_;
      }
      /**
       * <code>repeated int32 mentions = 2;</code>
       * @return The count of mentions.
       */
      public int getMentionsCount() {
        return mentions_.size();
      }
      /**
       * <code>repeated int32 mentions = 2;</code>
       * @param index The index of the element to return.
       * @return The mentions at the given index.
       */
      public int getMentions(int index) {
        return mentions_.getInt(index);
      }
      /**
       * <code>repeated int32 mentions = 2;</code>
       * @param index The index to set the value at.
       * @param value The mentions to set.
       * @return This builder for chaining.
       */
      public Builder setMentions(
          int index, int value) {
        ensureMentionsIsMutable();
        mentions_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 mentions = 2;</code>
       * @param value The mentions to add.
       * @return This builder for chaining.
       */
      public Builder addMentions(int value) {
        ensureMentionsIsMutable();
        mentions_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 mentions = 2;</code>
       * @param values The mentions to add.
       * @return This builder for chaining.
       */
      public Builder addAllMentions(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureMentionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, mentions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 mentions = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentions() {
        mentions_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SpeakerInfo)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SpeakerInfo)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SpeakerInfo>
        PARSER = new com.google.protobuf.AbstractParser<SpeakerInfo>() {
      @java.lang.Override
      public SpeakerInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SpeakerInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SpeakerInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SpeakerInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SpanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Span)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required uint32 begin = 1;</code>
     * @return Whether the begin field is set.
     */
    boolean hasBegin();
    /**
     * <code>required uint32 begin = 1;</code>
     * @return The begin.
     */
    int getBegin();

    /**
     * <code>required uint32 end = 2;</code>
     * @return Whether the end field is set.
     */
    boolean hasEnd();
    /**
     * <code>required uint32 end = 2;</code>
     * @return The end.
     */
    int getEnd();
  }
  /**
   * <pre>
   * A Span of text
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Span}
   */
  public static final class Span extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Span)
      SpanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Span.newBuilder() to construct.
    private Span(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Span() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Span();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Span_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Span_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Span.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder.class);
    }

    private int bitField0_;
    public static final int BEGIN_FIELD_NUMBER = 1;
    private int begin_;
    /**
     * <code>required uint32 begin = 1;</code>
     * @return Whether the begin field is set.
     */
    @java.lang.Override
    public boolean hasBegin() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required uint32 begin = 1;</code>
     * @return The begin.
     */
    @java.lang.Override
    public int getBegin() {
      return begin_;
    }

    public static final int END_FIELD_NUMBER = 2;
    private int end_;
    /**
     * <code>required uint32 end = 2;</code>
     * @return Whether the end field is set.
     */
    @java.lang.Override
    public boolean hasEnd() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 end = 2;</code>
     * @return The end.
     */
    @java.lang.Override
    public int getEnd() {
      return end_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasBegin()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasEnd()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, begin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, end_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, begin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, end_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Span)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Span other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Span) obj;

      if (hasBegin() != other.hasBegin()) return false;
      if (hasBegin()) {
        if (getBegin()
            != other.getBegin()) return false;
      }
      if (hasEnd() != other.hasEnd()) return false;
      if (hasEnd()) {
        if (getEnd()
            != other.getEnd()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasBegin()) {
        hash = (37 * hash) + BEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getBegin();
      }
      if (hasEnd()) {
        hash = (37 * hash) + END_FIELD_NUMBER;
        hash = (53 * hash) + getEnd();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Span prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A Span of text
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Span}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Span)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SpanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Span_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Span_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Span.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Span.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Span.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        begin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        end_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Span_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Span getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Span build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Span result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Span buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Span result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Span(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.begin_ = begin_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.end_ = end_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Span) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Span)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Span other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Span.getDefaultInstance()) return this;
        if (other.hasBegin()) {
          setBegin(other.getBegin());
        }
        if (other.hasEnd()) {
          setEnd(other.getEnd());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasBegin()) {
          return false;
        }
        if (!hasEnd()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                begin_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                end_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int begin_ ;
      /**
       * <code>required uint32 begin = 1;</code>
       * @return Whether the begin field is set.
       */
      @java.lang.Override
      public boolean hasBegin() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required uint32 begin = 1;</code>
       * @return The begin.
       */
      @java.lang.Override
      public int getBegin() {
        return begin_;
      }
      /**
       * <code>required uint32 begin = 1;</code>
       * @param value The begin to set.
       * @return This builder for chaining.
       */
      public Builder setBegin(int value) {
        bitField0_ |= 0x00000001;
        begin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 begin = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBegin() {
        bitField0_ = (bitField0_ & ~0x00000001);
        begin_ = 0;
        onChanged();
        return this;
      }

      private int end_ ;
      /**
       * <code>required uint32 end = 2;</code>
       * @return Whether the end field is set.
       */
      @java.lang.Override
      public boolean hasEnd() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint32 end = 2;</code>
       * @return The end.
       */
      @java.lang.Override
      public int getEnd() {
        return end_;
      }
      /**
       * <code>required uint32 end = 2;</code>
       * @param value The end to set.
       * @return This builder for chaining.
       */
      public Builder setEnd(int value) {
        bitField0_ |= 0x00000002;
        end_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 end = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnd() {
        bitField0_ = (bitField0_ & ~0x00000002);
        end_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Span)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Span)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Span DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Span();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Span getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Span>
        PARSER = new com.google.protobuf.AbstractParser<Span>() {
      @java.lang.Override
      public Span parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Span> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Span> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Span getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TimexOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Timex)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional string value = 1;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <code>optional string value = 1;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <code>optional string value = 1;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <code>optional string altValue = 2;</code>
     * @return Whether the altValue field is set.
     */
    boolean hasAltValue();
    /**
     * <code>optional string altValue = 2;</code>
     * @return The altValue.
     */
    java.lang.String getAltValue();
    /**
     * <code>optional string altValue = 2;</code>
     * @return The bytes for altValue.
     */
    com.google.protobuf.ByteString
        getAltValueBytes();

    /**
     * <code>optional string text = 3;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <code>optional string text = 3;</code>
     * @return The text.
     */
    java.lang.String getText();
    /**
     * <code>optional string text = 3;</code>
     * @return The bytes for text.
     */
    com.google.protobuf.ByteString
        getTextBytes();

    /**
     * <code>optional string type = 4;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>optional string type = 4;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <code>optional string type = 4;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <code>optional string tid = 5;</code>
     * @return Whether the tid field is set.
     */
    boolean hasTid();
    /**
     * <code>optional string tid = 5;</code>
     * @return The tid.
     */
    java.lang.String getTid();
    /**
     * <code>optional string tid = 5;</code>
     * @return The bytes for tid.
     */
    com.google.protobuf.ByteString
        getTidBytes();

    /**
     * <code>optional uint32 beginPoint = 6;</code>
     * @return Whether the beginPoint field is set.
     */
    boolean hasBeginPoint();
    /**
     * <code>optional uint32 beginPoint = 6;</code>
     * @return The beginPoint.
     */
    int getBeginPoint();

    /**
     * <code>optional uint32 endPoint = 7;</code>
     * @return Whether the endPoint field is set.
     */
    boolean hasEndPoint();
    /**
     * <code>optional uint32 endPoint = 7;</code>
     * @return The endPoint.
     */
    int getEndPoint();
  }
  /**
   * <pre>
   * A Timex object, representing a temporal expression (TIMe EXpression)
   * These fields are not *really* optional. CoreNLP will crash without them.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Timex}
   */
  public static final class Timex extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Timex)
      TimexOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Timex.newBuilder() to construct.
    private Timex(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Timex() {
      value_ = "";
      altValue_ = "";
      text_ = "";
      type_ = "";
      tid_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Timex();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Timex_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Timex_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder.class);
    }

    private int bitField0_;
    public static final int VALUE_FIELD_NUMBER = 1;
    private volatile java.lang.Object value_;
    /**
     * <code>optional string value = 1;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string value = 1;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string value = 1;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ALTVALUE_FIELD_NUMBER = 2;
    private volatile java.lang.Object altValue_;
    /**
     * <code>optional string altValue = 2;</code>
     * @return Whether the altValue field is set.
     */
    @java.lang.Override
    public boolean hasAltValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string altValue = 2;</code>
     * @return The altValue.
     */
    @java.lang.Override
    public java.lang.String getAltValue() {
      java.lang.Object ref = altValue_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          altValue_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string altValue = 2;</code>
     * @return The bytes for altValue.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAltValueBytes() {
      java.lang.Object ref = altValue_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        altValue_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEXT_FIELD_NUMBER = 3;
    private volatile java.lang.Object text_;
    /**
     * <code>optional string text = 3;</code>
     * @return Whether the text field is set.
     */
    @java.lang.Override
    public boolean hasText() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string text = 3;</code>
     * @return The text.
     */
    @java.lang.Override
    public java.lang.String getText() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          text_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string text = 3;</code>
     * @return The bytes for text.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTextBytes() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        text_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private volatile java.lang.Object type_;
    /**
     * <code>optional string type = 4;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string type = 4;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string type = 4;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TID_FIELD_NUMBER = 5;
    private volatile java.lang.Object tid_;
    /**
     * <code>optional string tid = 5;</code>
     * @return Whether the tid field is set.
     */
    @java.lang.Override
    public boolean hasTid() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string tid = 5;</code>
     * @return The tid.
     */
    @java.lang.Override
    public java.lang.String getTid() {
      java.lang.Object ref = tid_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          tid_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string tid = 5;</code>
     * @return The bytes for tid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTidBytes() {
      java.lang.Object ref = tid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BEGINPOINT_FIELD_NUMBER = 6;
    private int beginPoint_;
    /**
     * <code>optional uint32 beginPoint = 6;</code>
     * @return Whether the beginPoint field is set.
     */
    @java.lang.Override
    public boolean hasBeginPoint() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional uint32 beginPoint = 6;</code>
     * @return The beginPoint.
     */
    @java.lang.Override
    public int getBeginPoint() {
      return beginPoint_;
    }

    public static final int ENDPOINT_FIELD_NUMBER = 7;
    private int endPoint_;
    /**
     * <code>optional uint32 endPoint = 7;</code>
     * @return Whether the endPoint field is set.
     */
    @java.lang.Override
    public boolean hasEndPoint() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional uint32 endPoint = 7;</code>
     * @return The endPoint.
     */
    @java.lang.Override
    public int getEndPoint() {
      return endPoint_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, value_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, altValue_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, text_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, type_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, tid_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeUInt32(6, beginPoint_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeUInt32(7, endPoint_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, value_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, altValue_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, text_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, type_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, tid_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, beginPoint_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, endPoint_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Timex)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Timex other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Timex) obj;

      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (hasAltValue() != other.hasAltValue()) return false;
      if (hasAltValue()) {
        if (!getAltValue()
            .equals(other.getAltValue())) return false;
      }
      if (hasText() != other.hasText()) return false;
      if (hasText()) {
        if (!getText()
            .equals(other.getText())) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasTid() != other.hasTid()) return false;
      if (hasTid()) {
        if (!getTid()
            .equals(other.getTid())) return false;
      }
      if (hasBeginPoint() != other.hasBeginPoint()) return false;
      if (hasBeginPoint()) {
        if (getBeginPoint()
            != other.getBeginPoint()) return false;
      }
      if (hasEndPoint() != other.hasEndPoint()) return false;
      if (hasEndPoint()) {
        if (getEndPoint()
            != other.getEndPoint()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      if (hasAltValue()) {
        hash = (37 * hash) + ALTVALUE_FIELD_NUMBER;
        hash = (53 * hash) + getAltValue().hashCode();
      }
      if (hasText()) {
        hash = (37 * hash) + TEXT_FIELD_NUMBER;
        hash = (53 * hash) + getText().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (hasTid()) {
        hash = (37 * hash) + TID_FIELD_NUMBER;
        hash = (53 * hash) + getTid().hashCode();
      }
      if (hasBeginPoint()) {
        hash = (37 * hash) + BEGINPOINT_FIELD_NUMBER;
        hash = (53 * hash) + getBeginPoint();
      }
      if (hasEndPoint()) {
        hash = (37 * hash) + ENDPOINT_FIELD_NUMBER;
        hash = (53 * hash) + getEndPoint();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Timex prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A Timex object, representing a temporal expression (TIMe EXpression)
     * These fields are not *really* optional. CoreNLP will crash without them.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Timex}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Timex)
        edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Timex_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Timex_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        altValue_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        text_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        type_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        tid_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        beginPoint_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        endPoint_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Timex_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Timex result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Timex result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Timex(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.altValue_ = altValue_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.text_ = text_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x00000010;
        }
        result.tid_ = tid_;
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.beginPoint_ = beginPoint_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.endPoint_ = endPoint_;
          to_bitField0_ |= 0x00000040;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Timex) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Timex)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Timex other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance()) return this;
        if (other.hasValue()) {
          bitField0_ |= 0x00000001;
          value_ = other.value_;
          onChanged();
        }
        if (other.hasAltValue()) {
          bitField0_ |= 0x00000002;
          altValue_ = other.altValue_;
          onChanged();
        }
        if (other.hasText()) {
          bitField0_ |= 0x00000004;
          text_ = other.text_;
          onChanged();
        }
        if (other.hasType()) {
          bitField0_ |= 0x00000008;
          type_ = other.type_;
          onChanged();
        }
        if (other.hasTid()) {
          bitField0_ |= 0x00000010;
          tid_ = other.tid_;
          onChanged();
        }
        if (other.hasBeginPoint()) {
          setBeginPoint(other.getBeginPoint());
        }
        if (other.hasEndPoint()) {
          setEndPoint(other.getEndPoint());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                value_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                altValue_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                text_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                tid_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                beginPoint_ = input.readUInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                endPoint_ = input.readUInt32();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object value_ = "";
      /**
       * <code>optional string value = 1;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string value = 1;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string value = 1;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string value = 1;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>optional string value = 1;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object altValue_ = "";
      /**
       * <code>optional string altValue = 2;</code>
       * @return Whether the altValue field is set.
       */
      public boolean hasAltValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string altValue = 2;</code>
       * @return The altValue.
       */
      public java.lang.String getAltValue() {
        java.lang.Object ref = altValue_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            altValue_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string altValue = 2;</code>
       * @return The bytes for altValue.
       */
      public com.google.protobuf.ByteString
          getAltValueBytes() {
        java.lang.Object ref = altValue_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          altValue_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string altValue = 2;</code>
       * @param value The altValue to set.
       * @return This builder for chaining.
       */
      public Builder setAltValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        altValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string altValue = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAltValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        altValue_ = getDefaultInstance().getAltValue();
        onChanged();
        return this;
      }
      /**
       * <code>optional string altValue = 2;</code>
       * @param value The bytes for altValue to set.
       * @return This builder for chaining.
       */
      public Builder setAltValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        altValue_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object text_ = "";
      /**
       * <code>optional string text = 3;</code>
       * @return Whether the text field is set.
       */
      public boolean hasText() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string text = 3;</code>
       * @return The text.
       */
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            text_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string text = 3;</code>
       * @return The bytes for text.
       */
      public com.google.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string text = 3;</code>
       * @param value The text to set.
       * @return This builder for chaining.
       */
      public Builder setText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string text = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearText() {
        bitField0_ = (bitField0_ & ~0x00000004);
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }
      /**
       * <code>optional string text = 3;</code>
       * @param value The bytes for text to set.
       * @return This builder for chaining.
       */
      public Builder setTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        text_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <code>optional string type = 4;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string type = 4;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string type = 4;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string type = 4;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000008);
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string type = 4;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        type_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object tid_ = "";
      /**
       * <code>optional string tid = 5;</code>
       * @return Whether the tid field is set.
       */
      public boolean hasTid() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string tid = 5;</code>
       * @return The tid.
       */
      public java.lang.String getTid() {
        java.lang.Object ref = tid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tid_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string tid = 5;</code>
       * @return The bytes for tid.
       */
      public com.google.protobuf.ByteString
          getTidBytes() {
        java.lang.Object ref = tid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string tid = 5;</code>
       * @param value The tid to set.
       * @return This builder for chaining.
       */
      public Builder setTid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        tid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string tid = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTid() {
        bitField0_ = (bitField0_ & ~0x00000010);
        tid_ = getDefaultInstance().getTid();
        onChanged();
        return this;
      }
      /**
       * <code>optional string tid = 5;</code>
       * @param value The bytes for tid to set.
       * @return This builder for chaining.
       */
      public Builder setTidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        tid_ = value;
        onChanged();
        return this;
      }

      private int beginPoint_ ;
      /**
       * <code>optional uint32 beginPoint = 6;</code>
       * @return Whether the beginPoint field is set.
       */
      @java.lang.Override
      public boolean hasBeginPoint() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint32 beginPoint = 6;</code>
       * @return The beginPoint.
       */
      @java.lang.Override
      public int getBeginPoint() {
        return beginPoint_;
      }
      /**
       * <code>optional uint32 beginPoint = 6;</code>
       * @param value The beginPoint to set.
       * @return This builder for chaining.
       */
      public Builder setBeginPoint(int value) {
        bitField0_ |= 0x00000020;
        beginPoint_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 beginPoint = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearBeginPoint() {
        bitField0_ = (bitField0_ & ~0x00000020);
        beginPoint_ = 0;
        onChanged();
        return this;
      }

      private int endPoint_ ;
      /**
       * <code>optional uint32 endPoint = 7;</code>
       * @return Whether the endPoint field is set.
       */
      @java.lang.Override
      public boolean hasEndPoint() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional uint32 endPoint = 7;</code>
       * @return The endPoint.
       */
      @java.lang.Override
      public int getEndPoint() {
        return endPoint_;
      }
      /**
       * <code>optional uint32 endPoint = 7;</code>
       * @param value The endPoint to set.
       * @return This builder for chaining.
       */
      public Builder setEndPoint(int value) {
        bitField0_ |= 0x00000040;
        endPoint_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 endPoint = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearEndPoint() {
        bitField0_ = (bitField0_ & ~0x00000040);
        endPoint_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Timex)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Timex)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Timex DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Timex();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Timex>
        PARSER = new com.google.protobuf.AbstractParser<Timex>() {
      @java.lang.Override
      public Timex parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Timex> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Timex> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EntityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Entity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional uint32 headStart = 6;</code>
     * @return Whether the headStart field is set.
     */
    boolean hasHeadStart();
    /**
     * <code>optional uint32 headStart = 6;</code>
     * @return The headStart.
     */
    int getHeadStart();

    /**
     * <code>optional uint32 headEnd = 7;</code>
     * @return Whether the headEnd field is set.
     */
    boolean hasHeadEnd();
    /**
     * <code>optional uint32 headEnd = 7;</code>
     * @return The headEnd.
     */
    int getHeadEnd();

    /**
     * <code>optional string mentionType = 8;</code>
     * @return Whether the mentionType field is set.
     */
    boolean hasMentionType();
    /**
     * <code>optional string mentionType = 8;</code>
     * @return The mentionType.
     */
    java.lang.String getMentionType();
    /**
     * <code>optional string mentionType = 8;</code>
     * @return The bytes for mentionType.
     */
    com.google.protobuf.ByteString
        getMentionTypeBytes();

    /**
     * <code>optional string normalizedName = 9;</code>
     * @return Whether the normalizedName field is set.
     */
    boolean hasNormalizedName();
    /**
     * <code>optional string normalizedName = 9;</code>
     * @return The normalizedName.
     */
    java.lang.String getNormalizedName();
    /**
     * <code>optional string normalizedName = 9;</code>
     * @return The bytes for normalizedName.
     */
    com.google.protobuf.ByteString
        getNormalizedNameBytes();

    /**
     * <code>optional uint32 headTokenIndex = 10;</code>
     * @return Whether the headTokenIndex field is set.
     */
    boolean hasHeadTokenIndex();
    /**
     * <code>optional uint32 headTokenIndex = 10;</code>
     * @return The headTokenIndex.
     */
    int getHeadTokenIndex();

    /**
     * <code>optional string corefID = 11;</code>
     * @return Whether the corefID field is set.
     */
    boolean hasCorefID();
    /**
     * <code>optional string corefID = 11;</code>
     * @return The corefID.
     */
    java.lang.String getCorefID();
    /**
     * <code>optional string corefID = 11;</code>
     * @return The bytes for corefID.
     */
    com.google.protobuf.ByteString
        getCorefIDBytes();

    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return Whether the objectID field is set.
     */
    boolean hasObjectID();
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return The objectID.
     */
    java.lang.String getObjectID();
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return The bytes for objectID.
     */
    com.google.protobuf.ByteString
        getObjectIDBytes();

    /**
     * <code>optional uint32 extentStart = 2;</code>
     * @return Whether the extentStart field is set.
     */
    boolean hasExtentStart();
    /**
     * <code>optional uint32 extentStart = 2;</code>
     * @return The extentStart.
     */
    int getExtentStart();

    /**
     * <code>optional uint32 extentEnd = 3;</code>
     * @return Whether the extentEnd field is set.
     */
    boolean hasExtentEnd();
    /**
     * <code>optional uint32 extentEnd = 3;</code>
     * @return The extentEnd.
     */
    int getExtentEnd();

    /**
     * <code>optional string type = 4;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>optional string type = 4;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <code>optional string type = 4;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return Whether the subtype field is set.
     */
    boolean hasSubtype();
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return The subtype.
     */
    java.lang.String getSubtype();
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return The bytes for subtype.
     */
    com.google.protobuf.ByteString
        getSubtypeBytes();
  }
  /**
   * <pre>
   * A representation of an entity in a relation.
   * This corresponds to the EntityMention, and more broadly the
   * ExtractionObject classes.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Entity}
   */
  public static final class Entity extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Entity)
      EntityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Entity.newBuilder() to construct.
    private Entity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Entity() {
      mentionType_ = "";
      normalizedName_ = "";
      corefID_ = "";
      objectID_ = "";
      type_ = "";
      subtype_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Entity();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Entity_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Entity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder.class);
    }

    private int bitField0_;
    public static final int HEADSTART_FIELD_NUMBER = 6;
    private int headStart_;
    /**
     * <code>optional uint32 headStart = 6;</code>
     * @return Whether the headStart field is set.
     */
    @java.lang.Override
    public boolean hasHeadStart() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint32 headStart = 6;</code>
     * @return The headStart.
     */
    @java.lang.Override
    public int getHeadStart() {
      return headStart_;
    }

    public static final int HEADEND_FIELD_NUMBER = 7;
    private int headEnd_;
    /**
     * <code>optional uint32 headEnd = 7;</code>
     * @return Whether the headEnd field is set.
     */
    @java.lang.Override
    public boolean hasHeadEnd() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint32 headEnd = 7;</code>
     * @return The headEnd.
     */
    @java.lang.Override
    public int getHeadEnd() {
      return headEnd_;
    }

    public static final int MENTIONTYPE_FIELD_NUMBER = 8;
    private volatile java.lang.Object mentionType_;
    /**
     * <code>optional string mentionType = 8;</code>
     * @return Whether the mentionType field is set.
     */
    @java.lang.Override
    public boolean hasMentionType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string mentionType = 8;</code>
     * @return The mentionType.
     */
    @java.lang.Override
    public java.lang.String getMentionType() {
      java.lang.Object ref = mentionType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          mentionType_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string mentionType = 8;</code>
     * @return The bytes for mentionType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMentionTypeBytes() {
      java.lang.Object ref = mentionType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mentionType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NORMALIZEDNAME_FIELD_NUMBER = 9;
    private volatile java.lang.Object normalizedName_;
    /**
     * <code>optional string normalizedName = 9;</code>
     * @return Whether the normalizedName field is set.
     */
    @java.lang.Override
    public boolean hasNormalizedName() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string normalizedName = 9;</code>
     * @return The normalizedName.
     */
    @java.lang.Override
    public java.lang.String getNormalizedName() {
      java.lang.Object ref = normalizedName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          normalizedName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string normalizedName = 9;</code>
     * @return The bytes for normalizedName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNormalizedNameBytes() {
      java.lang.Object ref = normalizedName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        normalizedName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HEADTOKENINDEX_FIELD_NUMBER = 10;
    private int headTokenIndex_;
    /**
     * <code>optional uint32 headTokenIndex = 10;</code>
     * @return Whether the headTokenIndex field is set.
     */
    @java.lang.Override
    public boolean hasHeadTokenIndex() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional uint32 headTokenIndex = 10;</code>
     * @return The headTokenIndex.
     */
    @java.lang.Override
    public int getHeadTokenIndex() {
      return headTokenIndex_;
    }

    public static final int COREFID_FIELD_NUMBER = 11;
    private volatile java.lang.Object corefID_;
    /**
     * <code>optional string corefID = 11;</code>
     * @return Whether the corefID field is set.
     */
    @java.lang.Override
    public boolean hasCorefID() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional string corefID = 11;</code>
     * @return The corefID.
     */
    @java.lang.Override
    public java.lang.String getCorefID() {
      java.lang.Object ref = corefID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          corefID_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string corefID = 11;</code>
     * @return The bytes for corefID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCorefIDBytes() {
      java.lang.Object ref = corefID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        corefID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OBJECTID_FIELD_NUMBER = 1;
    private volatile java.lang.Object objectID_;
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return Whether the objectID field is set.
     */
    @java.lang.Override
    public boolean hasObjectID() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return The objectID.
     */
    @java.lang.Override
    public java.lang.String getObjectID() {
      java.lang.Object ref = objectID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          objectID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return The bytes for objectID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getObjectIDBytes() {
      java.lang.Object ref = objectID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        objectID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTENTSTART_FIELD_NUMBER = 2;
    private int extentStart_;
    /**
     * <code>optional uint32 extentStart = 2;</code>
     * @return Whether the extentStart field is set.
     */
    @java.lang.Override
    public boolean hasExtentStart() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional uint32 extentStart = 2;</code>
     * @return The extentStart.
     */
    @java.lang.Override
    public int getExtentStart() {
      return extentStart_;
    }

    public static final int EXTENTEND_FIELD_NUMBER = 3;
    private int extentEnd_;
    /**
     * <code>optional uint32 extentEnd = 3;</code>
     * @return Whether the extentEnd field is set.
     */
    @java.lang.Override
    public boolean hasExtentEnd() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional uint32 extentEnd = 3;</code>
     * @return The extentEnd.
     */
    @java.lang.Override
    public int getExtentEnd() {
      return extentEnd_;
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private volatile java.lang.Object type_;
    /**
     * <code>optional string type = 4;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional string type = 4;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string type = 4;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUBTYPE_FIELD_NUMBER = 5;
    private volatile java.lang.Object subtype_;
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return Whether the subtype field is set.
     */
    @java.lang.Override
    public boolean hasSubtype() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return The subtype.
     */
    @java.lang.Override
    public java.lang.String getSubtype() {
      java.lang.Object ref = subtype_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          subtype_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return The bytes for subtype.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSubtypeBytes() {
      java.lang.Object ref = subtype_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subtype_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, objectID_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeUInt32(2, extentStart_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeUInt32(3, extentEnd_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, type_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, subtype_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(6, headStart_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(7, headEnd_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, mentionType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, normalizedName_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt32(10, headTokenIndex_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, corefID_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, objectID_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, extentStart_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, extentEnd_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, type_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, subtype_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, headStart_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, headEnd_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, mentionType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, normalizedName_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(10, headTokenIndex_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, corefID_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Entity)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Entity other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Entity) obj;

      if (hasHeadStart() != other.hasHeadStart()) return false;
      if (hasHeadStart()) {
        if (getHeadStart()
            != other.getHeadStart()) return false;
      }
      if (hasHeadEnd() != other.hasHeadEnd()) return false;
      if (hasHeadEnd()) {
        if (getHeadEnd()
            != other.getHeadEnd()) return false;
      }
      if (hasMentionType() != other.hasMentionType()) return false;
      if (hasMentionType()) {
        if (!getMentionType()
            .equals(other.getMentionType())) return false;
      }
      if (hasNormalizedName() != other.hasNormalizedName()) return false;
      if (hasNormalizedName()) {
        if (!getNormalizedName()
            .equals(other.getNormalizedName())) return false;
      }
      if (hasHeadTokenIndex() != other.hasHeadTokenIndex()) return false;
      if (hasHeadTokenIndex()) {
        if (getHeadTokenIndex()
            != other.getHeadTokenIndex()) return false;
      }
      if (hasCorefID() != other.hasCorefID()) return false;
      if (hasCorefID()) {
        if (!getCorefID()
            .equals(other.getCorefID())) return false;
      }
      if (hasObjectID() != other.hasObjectID()) return false;
      if (hasObjectID()) {
        if (!getObjectID()
            .equals(other.getObjectID())) return false;
      }
      if (hasExtentStart() != other.hasExtentStart()) return false;
      if (hasExtentStart()) {
        if (getExtentStart()
            != other.getExtentStart()) return false;
      }
      if (hasExtentEnd() != other.hasExtentEnd()) return false;
      if (hasExtentEnd()) {
        if (getExtentEnd()
            != other.getExtentEnd()) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasSubtype() != other.hasSubtype()) return false;
      if (hasSubtype()) {
        if (!getSubtype()
            .equals(other.getSubtype())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasHeadStart()) {
        hash = (37 * hash) + HEADSTART_FIELD_NUMBER;
        hash = (53 * hash) + getHeadStart();
      }
      if (hasHeadEnd()) {
        hash = (37 * hash) + HEADEND_FIELD_NUMBER;
        hash = (53 * hash) + getHeadEnd();
      }
      if (hasMentionType()) {
        hash = (37 * hash) + MENTIONTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getMentionType().hashCode();
      }
      if (hasNormalizedName()) {
        hash = (37 * hash) + NORMALIZEDNAME_FIELD_NUMBER;
        hash = (53 * hash) + getNormalizedName().hashCode();
      }
      if (hasHeadTokenIndex()) {
        hash = (37 * hash) + HEADTOKENINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getHeadTokenIndex();
      }
      if (hasCorefID()) {
        hash = (37 * hash) + COREFID_FIELD_NUMBER;
        hash = (53 * hash) + getCorefID().hashCode();
      }
      if (hasObjectID()) {
        hash = (37 * hash) + OBJECTID_FIELD_NUMBER;
        hash = (53 * hash) + getObjectID().hashCode();
      }
      if (hasExtentStart()) {
        hash = (37 * hash) + EXTENTSTART_FIELD_NUMBER;
        hash = (53 * hash) + getExtentStart();
      }
      if (hasExtentEnd()) {
        hash = (37 * hash) + EXTENTEND_FIELD_NUMBER;
        hash = (53 * hash) + getExtentEnd();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (hasSubtype()) {
        hash = (37 * hash) + SUBTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getSubtype().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Entity prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A representation of an entity in a relation.
     * This corresponds to the EntityMention, and more broadly the
     * ExtractionObject classes.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Entity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Entity)
        edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Entity_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Entity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        headStart_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        headEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        mentionType_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        normalizedName_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        headTokenIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        corefID_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        objectID_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        extentStart_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        extentEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        type_ = "";
        bitField0_ = (bitField0_ & ~0x00000200);
        subtype_ = "";
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Entity_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Entity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Entity result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Entity(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.headStart_ = headStart_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.headEnd_ = headEnd_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.mentionType_ = mentionType_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.normalizedName_ = normalizedName_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.headTokenIndex_ = headTokenIndex_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x00000020;
        }
        result.corefID_ = corefID_;
        if (((from_bitField0_ & 0x00000040) != 0)) {
          to_bitField0_ |= 0x00000040;
        }
        result.objectID_ = objectID_;
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.extentStart_ = extentStart_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.extentEnd_ = extentEnd_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          to_bitField0_ |= 0x00000200;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000400) != 0)) {
          to_bitField0_ |= 0x00000400;
        }
        result.subtype_ = subtype_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Entity) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Entity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Entity other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.getDefaultInstance()) return this;
        if (other.hasHeadStart()) {
          setHeadStart(other.getHeadStart());
        }
        if (other.hasHeadEnd()) {
          setHeadEnd(other.getHeadEnd());
        }
        if (other.hasMentionType()) {
          bitField0_ |= 0x00000004;
          mentionType_ = other.mentionType_;
          onChanged();
        }
        if (other.hasNormalizedName()) {
          bitField0_ |= 0x00000008;
          normalizedName_ = other.normalizedName_;
          onChanged();
        }
        if (other.hasHeadTokenIndex()) {
          setHeadTokenIndex(other.getHeadTokenIndex());
        }
        if (other.hasCorefID()) {
          bitField0_ |= 0x00000020;
          corefID_ = other.corefID_;
          onChanged();
        }
        if (other.hasObjectID()) {
          bitField0_ |= 0x00000040;
          objectID_ = other.objectID_;
          onChanged();
        }
        if (other.hasExtentStart()) {
          setExtentStart(other.getExtentStart());
        }
        if (other.hasExtentEnd()) {
          setExtentEnd(other.getExtentEnd());
        }
        if (other.hasType()) {
          bitField0_ |= 0x00000200;
          type_ = other.type_;
          onChanged();
        }
        if (other.hasSubtype()) {
          bitField0_ |= 0x00000400;
          subtype_ = other.subtype_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                objectID_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 10
              case 16: {
                extentStart_ = input.readUInt32();
                bitField0_ |= 0x00000080;
                break;
              } // case 16
              case 24: {
                extentEnd_ = input.readUInt32();
                bitField0_ |= 0x00000100;
                break;
              } // case 24
              case 34: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 34
              case 42: {
                subtype_ = input.readBytes();
                bitField0_ |= 0x00000400;
                break;
              } // case 42
              case 48: {
                headStart_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 48
              case 56: {
                headEnd_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 56
              case 66: {
                mentionType_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 66
              case 74: {
                normalizedName_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 74
              case 80: {
                headTokenIndex_ = input.readUInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 80
              case 90: {
                corefID_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int headStart_ ;
      /**
       * <code>optional uint32 headStart = 6;</code>
       * @return Whether the headStart field is set.
       */
      @java.lang.Override
      public boolean hasHeadStart() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional uint32 headStart = 6;</code>
       * @return The headStart.
       */
      @java.lang.Override
      public int getHeadStart() {
        return headStart_;
      }
      /**
       * <code>optional uint32 headStart = 6;</code>
       * @param value The headStart to set.
       * @return This builder for chaining.
       */
      public Builder setHeadStart(int value) {
        bitField0_ |= 0x00000001;
        headStart_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 headStart = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeadStart() {
        bitField0_ = (bitField0_ & ~0x00000001);
        headStart_ = 0;
        onChanged();
        return this;
      }

      private int headEnd_ ;
      /**
       * <code>optional uint32 headEnd = 7;</code>
       * @return Whether the headEnd field is set.
       */
      @java.lang.Override
      public boolean hasHeadEnd() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint32 headEnd = 7;</code>
       * @return The headEnd.
       */
      @java.lang.Override
      public int getHeadEnd() {
        return headEnd_;
      }
      /**
       * <code>optional uint32 headEnd = 7;</code>
       * @param value The headEnd to set.
       * @return This builder for chaining.
       */
      public Builder setHeadEnd(int value) {
        bitField0_ |= 0x00000002;
        headEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 headEnd = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeadEnd() {
        bitField0_ = (bitField0_ & ~0x00000002);
        headEnd_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object mentionType_ = "";
      /**
       * <code>optional string mentionType = 8;</code>
       * @return Whether the mentionType field is set.
       */
      public boolean hasMentionType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string mentionType = 8;</code>
       * @return The mentionType.
       */
      public java.lang.String getMentionType() {
        java.lang.Object ref = mentionType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            mentionType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string mentionType = 8;</code>
       * @return The bytes for mentionType.
       */
      public com.google.protobuf.ByteString
          getMentionTypeBytes() {
        java.lang.Object ref = mentionType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mentionType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string mentionType = 8;</code>
       * @param value The mentionType to set.
       * @return This builder for chaining.
       */
      public Builder setMentionType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        mentionType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string mentionType = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearMentionType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        mentionType_ = getDefaultInstance().getMentionType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string mentionType = 8;</code>
       * @param value The bytes for mentionType to set.
       * @return This builder for chaining.
       */
      public Builder setMentionTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        mentionType_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object normalizedName_ = "";
      /**
       * <code>optional string normalizedName = 9;</code>
       * @return Whether the normalizedName field is set.
       */
      public boolean hasNormalizedName() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string normalizedName = 9;</code>
       * @return The normalizedName.
       */
      public java.lang.String getNormalizedName() {
        java.lang.Object ref = normalizedName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            normalizedName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string normalizedName = 9;</code>
       * @return The bytes for normalizedName.
       */
      public com.google.protobuf.ByteString
          getNormalizedNameBytes() {
        java.lang.Object ref = normalizedName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          normalizedName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string normalizedName = 9;</code>
       * @param value The normalizedName to set.
       * @return This builder for chaining.
       */
      public Builder setNormalizedName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        normalizedName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string normalizedName = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearNormalizedName() {
        bitField0_ = (bitField0_ & ~0x00000008);
        normalizedName_ = getDefaultInstance().getNormalizedName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string normalizedName = 9;</code>
       * @param value The bytes for normalizedName to set.
       * @return This builder for chaining.
       */
      public Builder setNormalizedNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        normalizedName_ = value;
        onChanged();
        return this;
      }

      private int headTokenIndex_ ;
      /**
       * <code>optional uint32 headTokenIndex = 10;</code>
       * @return Whether the headTokenIndex field is set.
       */
      @java.lang.Override
      public boolean hasHeadTokenIndex() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional uint32 headTokenIndex = 10;</code>
       * @return The headTokenIndex.
       */
      @java.lang.Override
      public int getHeadTokenIndex() {
        return headTokenIndex_;
      }
      /**
       * <code>optional uint32 headTokenIndex = 10;</code>
       * @param value The headTokenIndex to set.
       * @return This builder for chaining.
       */
      public Builder setHeadTokenIndex(int value) {
        bitField0_ |= 0x00000010;
        headTokenIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 headTokenIndex = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeadTokenIndex() {
        bitField0_ = (bitField0_ & ~0x00000010);
        headTokenIndex_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object corefID_ = "";
      /**
       * <code>optional string corefID = 11;</code>
       * @return Whether the corefID field is set.
       */
      public boolean hasCorefID() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string corefID = 11;</code>
       * @return The corefID.
       */
      public java.lang.String getCorefID() {
        java.lang.Object ref = corefID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            corefID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string corefID = 11;</code>
       * @return The bytes for corefID.
       */
      public com.google.protobuf.ByteString
          getCorefIDBytes() {
        java.lang.Object ref = corefID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          corefID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string corefID = 11;</code>
       * @param value The corefID to set.
       * @return This builder for chaining.
       */
      public Builder setCorefID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        corefID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string corefID = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearCorefID() {
        bitField0_ = (bitField0_ & ~0x00000020);
        corefID_ = getDefaultInstance().getCorefID();
        onChanged();
        return this;
      }
      /**
       * <code>optional string corefID = 11;</code>
       * @param value The bytes for corefID to set.
       * @return This builder for chaining.
       */
      public Builder setCorefIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        corefID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object objectID_ = "";
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @return Whether the objectID field is set.
       */
      public boolean hasObjectID() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @return The objectID.
       */
      public java.lang.String getObjectID() {
        java.lang.Object ref = objectID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            objectID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @return The bytes for objectID.
       */
      public com.google.protobuf.ByteString
          getObjectIDBytes() {
        java.lang.Object ref = objectID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          objectID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @param value The objectID to set.
       * @return This builder for chaining.
       */
      public Builder setObjectID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        objectID_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearObjectID() {
        bitField0_ = (bitField0_ & ~0x00000040);
        objectID_ = getDefaultInstance().getObjectID();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @param value The bytes for objectID to set.
       * @return This builder for chaining.
       */
      public Builder setObjectIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        objectID_ = value;
        onChanged();
        return this;
      }

      private int extentStart_ ;
      /**
       * <code>optional uint32 extentStart = 2;</code>
       * @return Whether the extentStart field is set.
       */
      @java.lang.Override
      public boolean hasExtentStart() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional uint32 extentStart = 2;</code>
       * @return The extentStart.
       */
      @java.lang.Override
      public int getExtentStart() {
        return extentStart_;
      }
      /**
       * <code>optional uint32 extentStart = 2;</code>
       * @param value The extentStart to set.
       * @return This builder for chaining.
       */
      public Builder setExtentStart(int value) {
        bitField0_ |= 0x00000080;
        extentStart_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 extentStart = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtentStart() {
        bitField0_ = (bitField0_ & ~0x00000080);
        extentStart_ = 0;
        onChanged();
        return this;
      }

      private int extentEnd_ ;
      /**
       * <code>optional uint32 extentEnd = 3;</code>
       * @return Whether the extentEnd field is set.
       */
      @java.lang.Override
      public boolean hasExtentEnd() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional uint32 extentEnd = 3;</code>
       * @return The extentEnd.
       */
      @java.lang.Override
      public int getExtentEnd() {
        return extentEnd_;
      }
      /**
       * <code>optional uint32 extentEnd = 3;</code>
       * @param value The extentEnd to set.
       * @return This builder for chaining.
       */
      public Builder setExtentEnd(int value) {
        bitField0_ |= 0x00000100;
        extentEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 extentEnd = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtentEnd() {
        bitField0_ = (bitField0_ & ~0x00000100);
        extentEnd_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <code>optional string type = 4;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string type = 4;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string type = 4;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string type = 4;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000200);
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string type = 4;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        type_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object subtype_ = "";
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @return Whether the subtype field is set.
       */
      public boolean hasSubtype() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @return The subtype.
       */
      public java.lang.String getSubtype() {
        java.lang.Object ref = subtype_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            subtype_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @return The bytes for subtype.
       */
      public com.google.protobuf.ByteString
          getSubtypeBytes() {
        java.lang.Object ref = subtype_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subtype_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @param value The subtype to set.
       * @return This builder for chaining.
       */
      public Builder setSubtype(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        subtype_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubtype() {
        bitField0_ = (bitField0_ & ~0x00000400);
        subtype_ = getDefaultInstance().getSubtype();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @param value The bytes for subtype to set.
       * @return This builder for chaining.
       */
      public Builder setSubtypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        subtype_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Entity)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Entity)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Entity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Entity();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Entity>
        PARSER = new com.google.protobuf.AbstractParser<Entity>() {
      @java.lang.Override
      public Entity parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Entity> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Entity> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RelationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Relation)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string argName = 6;</code>
     * @return A list containing the argName.
     */
    java.util.List<java.lang.String>
        getArgNameList();
    /**
     * <code>repeated string argName = 6;</code>
     * @return The count of argName.
     */
    int getArgNameCount();
    /**
     * <code>repeated string argName = 6;</code>
     * @param index The index of the element to return.
     * @return The argName at the given index.
     */
    java.lang.String getArgName(int index);
    /**
     * <code>repeated string argName = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the argName at the given index.
     */
    com.google.protobuf.ByteString
        getArgNameBytes(int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> 
        getArgList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getArg(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    int getArgCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> 
        getArgOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder getArgOrBuilder(
        int index);

    /**
     * <code>optional string signature = 8;</code>
     * @return Whether the signature field is set.
     */
    boolean hasSignature();
    /**
     * <code>optional string signature = 8;</code>
     * @return The signature.
     */
    java.lang.String getSignature();
    /**
     * <code>optional string signature = 8;</code>
     * @return The bytes for signature.
     */
    com.google.protobuf.ByteString
        getSignatureBytes();

    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return Whether the objectID field is set.
     */
    boolean hasObjectID();
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return The objectID.
     */
    java.lang.String getObjectID();
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return The bytes for objectID.
     */
    com.google.protobuf.ByteString
        getObjectIDBytes();

    /**
     * <code>optional uint32 extentStart = 2;</code>
     * @return Whether the extentStart field is set.
     */
    boolean hasExtentStart();
    /**
     * <code>optional uint32 extentStart = 2;</code>
     * @return The extentStart.
     */
    int getExtentStart();

    /**
     * <code>optional uint32 extentEnd = 3;</code>
     * @return Whether the extentEnd field is set.
     */
    boolean hasExtentEnd();
    /**
     * <code>optional uint32 extentEnd = 3;</code>
     * @return The extentEnd.
     */
    int getExtentEnd();

    /**
     * <code>optional string type = 4;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>optional string type = 4;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <code>optional string type = 4;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return Whether the subtype field is set.
     */
    boolean hasSubtype();
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return The subtype.
     */
    java.lang.String getSubtype();
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return The bytes for subtype.
     */
    com.google.protobuf.ByteString
        getSubtypeBytes();
  }
  /**
   * <pre>
   * A representation of a relation, mirroring RelationMention
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Relation}
   */
  public static final class Relation extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Relation)
      RelationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Relation.newBuilder() to construct.
    private Relation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Relation() {
      argName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      arg_ = java.util.Collections.emptyList();
      signature_ = "";
      objectID_ = "";
      type_ = "";
      subtype_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Relation();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Relation_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Relation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder.class);
    }

    private int bitField0_;
    public static final int ARGNAME_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList argName_;
    /**
     * <code>repeated string argName = 6;</code>
     * @return A list containing the argName.
     */
    public com.google.protobuf.ProtocolStringList
        getArgNameList() {
      return argName_;
    }
    /**
     * <code>repeated string argName = 6;</code>
     * @return The count of argName.
     */
    public int getArgNameCount() {
      return argName_.size();
    }
    /**
     * <code>repeated string argName = 6;</code>
     * @param index The index of the element to return.
     * @return The argName at the given index.
     */
    public java.lang.String getArgName(int index) {
      return argName_.get(index);
    }
    /**
     * <code>repeated string argName = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the argName at the given index.
     */
    public com.google.protobuf.ByteString
        getArgNameBytes(int index) {
      return argName_.getByteString(index);
    }

    public static final int ARG_FIELD_NUMBER = 7;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> arg_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> getArgList() {
      return arg_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> 
        getArgOrBuilderList() {
      return arg_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    @java.lang.Override
    public int getArgCount() {
      return arg_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getArg(int index) {
      return arg_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder getArgOrBuilder(
        int index) {
      return arg_.get(index);
    }

    public static final int SIGNATURE_FIELD_NUMBER = 8;
    private volatile java.lang.Object signature_;
    /**
     * <code>optional string signature = 8;</code>
     * @return Whether the signature field is set.
     */
    @java.lang.Override
    public boolean hasSignature() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string signature = 8;</code>
     * @return The signature.
     */
    @java.lang.Override
    public java.lang.String getSignature() {
      java.lang.Object ref = signature_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          signature_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string signature = 8;</code>
     * @return The bytes for signature.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSignatureBytes() {
      java.lang.Object ref = signature_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        signature_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OBJECTID_FIELD_NUMBER = 1;
    private volatile java.lang.Object objectID_;
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return Whether the objectID field is set.
     */
    @java.lang.Override
    public boolean hasObjectID() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return The objectID.
     */
    @java.lang.Override
    public java.lang.String getObjectID() {
      java.lang.Object ref = objectID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          objectID_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * inherited from ExtractionObject
     * </pre>
     *
     * <code>optional string objectID = 1;</code>
     * @return The bytes for objectID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getObjectIDBytes() {
      java.lang.Object ref = objectID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        objectID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTENTSTART_FIELD_NUMBER = 2;
    private int extentStart_;
    /**
     * <code>optional uint32 extentStart = 2;</code>
     * @return Whether the extentStart field is set.
     */
    @java.lang.Override
    public boolean hasExtentStart() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional uint32 extentStart = 2;</code>
     * @return The extentStart.
     */
    @java.lang.Override
    public int getExtentStart() {
      return extentStart_;
    }

    public static final int EXTENTEND_FIELD_NUMBER = 3;
    private int extentEnd_;
    /**
     * <code>optional uint32 extentEnd = 3;</code>
     * @return Whether the extentEnd field is set.
     */
    @java.lang.Override
    public boolean hasExtentEnd() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional uint32 extentEnd = 3;</code>
     * @return The extentEnd.
     */
    @java.lang.Override
    public int getExtentEnd() {
      return extentEnd_;
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private volatile java.lang.Object type_;
    /**
     * <code>optional string type = 4;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string type = 4;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string type = 4;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUBTYPE_FIELD_NUMBER = 5;
    private volatile java.lang.Object subtype_;
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return Whether the subtype field is set.
     */
    @java.lang.Override
    public boolean hasSubtype() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return The subtype.
     */
    @java.lang.Override
    public java.lang.String getSubtype() {
      java.lang.Object ref = subtype_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          subtype_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Implicit
     *       uint32 sentence       &#64;see implicit in sentence
     * </pre>
     *
     * <code>optional string subtype = 5;</code>
     * @return The bytes for subtype.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSubtypeBytes() {
      java.lang.Object ref = subtype_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subtype_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, objectID_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(2, extentStart_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(3, extentEnd_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, type_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, subtype_);
      }
      for (int i = 0; i < argName_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, argName_.getRaw(i));
      }
      for (int i = 0; i < arg_.size(); i++) {
        output.writeMessage(7, arg_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, signature_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, objectID_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, extentStart_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, extentEnd_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, type_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, subtype_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < argName_.size(); i++) {
          dataSize += computeStringSizeNoTag(argName_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArgNameList().size();
      }
      for (int i = 0; i < arg_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, arg_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, signature_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Relation)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Relation other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Relation) obj;

      if (!getArgNameList()
          .equals(other.getArgNameList())) return false;
      if (!getArgList()
          .equals(other.getArgList())) return false;
      if (hasSignature() != other.hasSignature()) return false;
      if (hasSignature()) {
        if (!getSignature()
            .equals(other.getSignature())) return false;
      }
      if (hasObjectID() != other.hasObjectID()) return false;
      if (hasObjectID()) {
        if (!getObjectID()
            .equals(other.getObjectID())) return false;
      }
      if (hasExtentStart() != other.hasExtentStart()) return false;
      if (hasExtentStart()) {
        if (getExtentStart()
            != other.getExtentStart()) return false;
      }
      if (hasExtentEnd() != other.hasExtentEnd()) return false;
      if (hasExtentEnd()) {
        if (getExtentEnd()
            != other.getExtentEnd()) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasSubtype() != other.hasSubtype()) return false;
      if (hasSubtype()) {
        if (!getSubtype()
            .equals(other.getSubtype())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getArgNameCount() > 0) {
        hash = (37 * hash) + ARGNAME_FIELD_NUMBER;
        hash = (53 * hash) + getArgNameList().hashCode();
      }
      if (getArgCount() > 0) {
        hash = (37 * hash) + ARG_FIELD_NUMBER;
        hash = (53 * hash) + getArgList().hashCode();
      }
      if (hasSignature()) {
        hash = (37 * hash) + SIGNATURE_FIELD_NUMBER;
        hash = (53 * hash) + getSignature().hashCode();
      }
      if (hasObjectID()) {
        hash = (37 * hash) + OBJECTID_FIELD_NUMBER;
        hash = (53 * hash) + getObjectID().hashCode();
      }
      if (hasExtentStart()) {
        hash = (37 * hash) + EXTENTSTART_FIELD_NUMBER;
        hash = (53 * hash) + getExtentStart();
      }
      if (hasExtentEnd()) {
        hash = (37 * hash) + EXTENTEND_FIELD_NUMBER;
        hash = (53 * hash) + getExtentEnd();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (hasSubtype()) {
        hash = (37 * hash) + SUBTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getSubtype().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Relation prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A representation of a relation, mirroring RelationMention
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Relation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Relation)
        edu.stanford.nlp.pipeline.CoreNLPProtos.RelationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Relation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Relation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        argName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (argBuilder_ == null) {
          arg_ = java.util.Collections.emptyList();
        } else {
          arg_ = null;
          argBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        signature_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        objectID_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        extentStart_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        extentEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        type_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        subtype_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Relation_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Relation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Relation result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Relation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          argName_ = argName_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.argName_ = argName_;
        if (argBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            arg_ = java.util.Collections.unmodifiableList(arg_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.arg_ = arg_;
        } else {
          result.arg_ = argBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.signature_ = signature_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.objectID_ = objectID_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.extentStart_ = extentStart_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.extentEnd_ = extentEnd_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          to_bitField0_ |= 0x00000010;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000080) != 0)) {
          to_bitField0_ |= 0x00000020;
        }
        result.subtype_ = subtype_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Relation) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Relation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Relation other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Relation.getDefaultInstance()) return this;
        if (!other.argName_.isEmpty()) {
          if (argName_.isEmpty()) {
            argName_ = other.argName_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureArgNameIsMutable();
            argName_.addAll(other.argName_);
          }
          onChanged();
        }
        if (argBuilder_ == null) {
          if (!other.arg_.isEmpty()) {
            if (arg_.isEmpty()) {
              arg_ = other.arg_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureArgIsMutable();
              arg_.addAll(other.arg_);
            }
            onChanged();
          }
        } else {
          if (!other.arg_.isEmpty()) {
            if (argBuilder_.isEmpty()) {
              argBuilder_.dispose();
              argBuilder_ = null;
              arg_ = other.arg_;
              bitField0_ = (bitField0_ & ~0x00000002);
              argBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getArgFieldBuilder() : null;
            } else {
              argBuilder_.addAllMessages(other.arg_);
            }
          }
        }
        if (other.hasSignature()) {
          bitField0_ |= 0x00000004;
          signature_ = other.signature_;
          onChanged();
        }
        if (other.hasObjectID()) {
          bitField0_ |= 0x00000008;
          objectID_ = other.objectID_;
          onChanged();
        }
        if (other.hasExtentStart()) {
          setExtentStart(other.getExtentStart());
        }
        if (other.hasExtentEnd()) {
          setExtentEnd(other.getExtentEnd());
        }
        if (other.hasType()) {
          bitField0_ |= 0x00000040;
          type_ = other.type_;
          onChanged();
        }
        if (other.hasSubtype()) {
          bitField0_ |= 0x00000080;
          subtype_ = other.subtype_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                objectID_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 10
              case 16: {
                extentStart_ = input.readUInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 16
              case 24: {
                extentEnd_ = input.readUInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 24
              case 34: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 34
              case 42: {
                subtype_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 42
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureArgNameIsMutable();
                argName_.add(bs);
                break;
              } // case 50
              case 58: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Entity m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.PARSER,
                        extensionRegistry);
                if (argBuilder_ == null) {
                  ensureArgIsMutable();
                  arg_.add(m);
                } else {
                  argBuilder_.addMessage(m);
                }
                break;
              } // case 58
              case 66: {
                signature_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 66
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList argName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureArgNameIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          argName_ = new com.google.protobuf.LazyStringArrayList(argName_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @return A list containing the argName.
       */
      public com.google.protobuf.ProtocolStringList
          getArgNameList() {
        return argName_.getUnmodifiableView();
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @return The count of argName.
       */
      public int getArgNameCount() {
        return argName_.size();
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @param index The index of the element to return.
       * @return The argName at the given index.
       */
      public java.lang.String getArgName(int index) {
        return argName_.get(index);
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the argName at the given index.
       */
      public com.google.protobuf.ByteString
          getArgNameBytes(int index) {
        return argName_.getByteString(index);
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @param index The index to set the value at.
       * @param value The argName to set.
       * @return This builder for chaining.
       */
      public Builder setArgName(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgNameIsMutable();
        argName_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @param value The argName to add.
       * @return This builder for chaining.
       */
      public Builder addArgName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgNameIsMutable();
        argName_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @param values The argName to add.
       * @return This builder for chaining.
       */
      public Builder addAllArgName(
          java.lang.Iterable<java.lang.String> values) {
        ensureArgNameIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, argName_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearArgName() {
        argName_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string argName = 6;</code>
       * @param value The bytes of the argName to add.
       * @return This builder for chaining.
       */
      public Builder addArgNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgNameIsMutable();
        argName_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> arg_ =
        java.util.Collections.emptyList();
      private void ensureArgIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          arg_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity>(arg_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Entity, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> argBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> getArgList() {
        if (argBuilder_ == null) {
          return java.util.Collections.unmodifiableList(arg_);
        } else {
          return argBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public int getArgCount() {
        if (argBuilder_ == null) {
          return arg_.size();
        } else {
          return argBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity getArg(int index) {
        if (argBuilder_ == null) {
          return arg_.get(index);
        } else {
          return argBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder setArg(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity value) {
        if (argBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgIsMutable();
          arg_.set(index, value);
          onChanged();
        } else {
          argBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder setArg(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder builderForValue) {
        if (argBuilder_ == null) {
          ensureArgIsMutable();
          arg_.set(index, builderForValue.build());
          onChanged();
        } else {
          argBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder addArg(edu.stanford.nlp.pipeline.CoreNLPProtos.Entity value) {
        if (argBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgIsMutable();
          arg_.add(value);
          onChanged();
        } else {
          argBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder addArg(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity value) {
        if (argBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgIsMutable();
          arg_.add(index, value);
          onChanged();
        } else {
          argBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder addArg(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder builderForValue) {
        if (argBuilder_ == null) {
          ensureArgIsMutable();
          arg_.add(builderForValue.build());
          onChanged();
        } else {
          argBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder addArg(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder builderForValue) {
        if (argBuilder_ == null) {
          ensureArgIsMutable();
          arg_.add(index, builderForValue.build());
          onChanged();
        } else {
          argBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder addAllArg(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Entity> values) {
        if (argBuilder_ == null) {
          ensureArgIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, arg_);
          onChanged();
        } else {
          argBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder clearArg() {
        if (argBuilder_ == null) {
          arg_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          argBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public Builder removeArg(int index) {
        if (argBuilder_ == null) {
          ensureArgIsMutable();
          arg_.remove(index);
          onChanged();
        } else {
          argBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder getArgBuilder(
          int index) {
        return getArgFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder getArgOrBuilder(
          int index) {
        if (argBuilder_ == null) {
          return arg_.get(index);  } else {
          return argBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> 
           getArgOrBuilderList() {
        if (argBuilder_ != null) {
          return argBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(arg_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder addArgBuilder() {
        return getArgFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder addArgBuilder(
          int index) {
        return getArgFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Entity arg = 7;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder> 
           getArgBuilderList() {
        return getArgFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Entity, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder> 
          getArgFieldBuilder() {
        if (argBuilder_ == null) {
          argBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Entity, edu.stanford.nlp.pipeline.CoreNLPProtos.Entity.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EntityOrBuilder>(
                  arg_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          arg_ = null;
        }
        return argBuilder_;
      }

      private java.lang.Object signature_ = "";
      /**
       * <code>optional string signature = 8;</code>
       * @return Whether the signature field is set.
       */
      public boolean hasSignature() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string signature = 8;</code>
       * @return The signature.
       */
      public java.lang.String getSignature() {
        java.lang.Object ref = signature_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            signature_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string signature = 8;</code>
       * @return The bytes for signature.
       */
      public com.google.protobuf.ByteString
          getSignatureBytes() {
        java.lang.Object ref = signature_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          signature_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string signature = 8;</code>
       * @param value The signature to set.
       * @return This builder for chaining.
       */
      public Builder setSignature(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        signature_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string signature = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearSignature() {
        bitField0_ = (bitField0_ & ~0x00000004);
        signature_ = getDefaultInstance().getSignature();
        onChanged();
        return this;
      }
      /**
       * <code>optional string signature = 8;</code>
       * @param value The bytes for signature to set.
       * @return This builder for chaining.
       */
      public Builder setSignatureBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        signature_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object objectID_ = "";
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @return Whether the objectID field is set.
       */
      public boolean hasObjectID() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @return The objectID.
       */
      public java.lang.String getObjectID() {
        java.lang.Object ref = objectID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            objectID_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @return The bytes for objectID.
       */
      public com.google.protobuf.ByteString
          getObjectIDBytes() {
        java.lang.Object ref = objectID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          objectID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @param value The objectID to set.
       * @return This builder for chaining.
       */
      public Builder setObjectID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        objectID_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearObjectID() {
        bitField0_ = (bitField0_ & ~0x00000008);
        objectID_ = getDefaultInstance().getObjectID();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * inherited from ExtractionObject
       * </pre>
       *
       * <code>optional string objectID = 1;</code>
       * @param value The bytes for objectID to set.
       * @return This builder for chaining.
       */
      public Builder setObjectIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        objectID_ = value;
        onChanged();
        return this;
      }

      private int extentStart_ ;
      /**
       * <code>optional uint32 extentStart = 2;</code>
       * @return Whether the extentStart field is set.
       */
      @java.lang.Override
      public boolean hasExtentStart() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional uint32 extentStart = 2;</code>
       * @return The extentStart.
       */
      @java.lang.Override
      public int getExtentStart() {
        return extentStart_;
      }
      /**
       * <code>optional uint32 extentStart = 2;</code>
       * @param value The extentStart to set.
       * @return This builder for chaining.
       */
      public Builder setExtentStart(int value) {
        bitField0_ |= 0x00000010;
        extentStart_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 extentStart = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtentStart() {
        bitField0_ = (bitField0_ & ~0x00000010);
        extentStart_ = 0;
        onChanged();
        return this;
      }

      private int extentEnd_ ;
      /**
       * <code>optional uint32 extentEnd = 3;</code>
       * @return Whether the extentEnd field is set.
       */
      @java.lang.Override
      public boolean hasExtentEnd() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint32 extentEnd = 3;</code>
       * @return The extentEnd.
       */
      @java.lang.Override
      public int getExtentEnd() {
        return extentEnd_;
      }
      /**
       * <code>optional uint32 extentEnd = 3;</code>
       * @param value The extentEnd to set.
       * @return This builder for chaining.
       */
      public Builder setExtentEnd(int value) {
        bitField0_ |= 0x00000020;
        extentEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 extentEnd = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtentEnd() {
        bitField0_ = (bitField0_ & ~0x00000020);
        extentEnd_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <code>optional string type = 4;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional string type = 4;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string type = 4;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string type = 4;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000040);
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string type = 4;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        type_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object subtype_ = "";
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @return Whether the subtype field is set.
       */
      public boolean hasSubtype() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @return The subtype.
       */
      public java.lang.String getSubtype() {
        java.lang.Object ref = subtype_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            subtype_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @return The bytes for subtype.
       */
      public com.google.protobuf.ByteString
          getSubtypeBytes() {
        java.lang.Object ref = subtype_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subtype_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @param value The subtype to set.
       * @return This builder for chaining.
       */
      public Builder setSubtype(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        subtype_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubtype() {
        bitField0_ = (bitField0_ & ~0x00000080);
        subtype_ = getDefaultInstance().getSubtype();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Implicit
       *       uint32 sentence       &#64;see implicit in sentence
       * </pre>
       *
       * <code>optional string subtype = 5;</code>
       * @param value The bytes for subtype to set.
       * @return This builder for chaining.
       */
      public Builder setSubtypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        subtype_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Relation)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Relation)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Relation DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Relation();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Relation getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Relation>
        PARSER = new com.google.protobuf.AbstractParser<Relation>() {
      @java.lang.Override
      public Relation parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Relation> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Relation> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Relation getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OperatorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Operator)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <code>required string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>required string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>required int32 quantifierSpanBegin = 2;</code>
     * @return Whether the quantifierSpanBegin field is set.
     */
    boolean hasQuantifierSpanBegin();
    /**
     * <code>required int32 quantifierSpanBegin = 2;</code>
     * @return The quantifierSpanBegin.
     */
    int getQuantifierSpanBegin();

    /**
     * <code>required int32 quantifierSpanEnd = 3;</code>
     * @return Whether the quantifierSpanEnd field is set.
     */
    boolean hasQuantifierSpanEnd();
    /**
     * <code>required int32 quantifierSpanEnd = 3;</code>
     * @return The quantifierSpanEnd.
     */
    int getQuantifierSpanEnd();

    /**
     * <code>required int32 subjectSpanBegin = 4;</code>
     * @return Whether the subjectSpanBegin field is set.
     */
    boolean hasSubjectSpanBegin();
    /**
     * <code>required int32 subjectSpanBegin = 4;</code>
     * @return The subjectSpanBegin.
     */
    int getSubjectSpanBegin();

    /**
     * <code>required int32 subjectSpanEnd = 5;</code>
     * @return Whether the subjectSpanEnd field is set.
     */
    boolean hasSubjectSpanEnd();
    /**
     * <code>required int32 subjectSpanEnd = 5;</code>
     * @return The subjectSpanEnd.
     */
    int getSubjectSpanEnd();

    /**
     * <code>required int32 objectSpanBegin = 6;</code>
     * @return Whether the objectSpanBegin field is set.
     */
    boolean hasObjectSpanBegin();
    /**
     * <code>required int32 objectSpanBegin = 6;</code>
     * @return The objectSpanBegin.
     */
    int getObjectSpanBegin();

    /**
     * <code>required int32 objectSpanEnd = 7;</code>
     * @return Whether the objectSpanEnd field is set.
     */
    boolean hasObjectSpanEnd();
    /**
     * <code>required int32 objectSpanEnd = 7;</code>
     * @return The objectSpanEnd.
     */
    int getObjectSpanEnd();
  }
  /**
   * <pre>
   * A Natural Logic operator
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Operator}
   */
  public static final class Operator extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Operator)
      OperatorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Operator.newBuilder() to construct.
    private Operator(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Operator() {
      name_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Operator();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Operator_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Operator_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>required string name = 1;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int QUANTIFIERSPANBEGIN_FIELD_NUMBER = 2;
    private int quantifierSpanBegin_;
    /**
     * <code>required int32 quantifierSpanBegin = 2;</code>
     * @return Whether the quantifierSpanBegin field is set.
     */
    @java.lang.Override
    public boolean hasQuantifierSpanBegin() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required int32 quantifierSpanBegin = 2;</code>
     * @return The quantifierSpanBegin.
     */
    @java.lang.Override
    public int getQuantifierSpanBegin() {
      return quantifierSpanBegin_;
    }

    public static final int QUANTIFIERSPANEND_FIELD_NUMBER = 3;
    private int quantifierSpanEnd_;
    /**
     * <code>required int32 quantifierSpanEnd = 3;</code>
     * @return Whether the quantifierSpanEnd field is set.
     */
    @java.lang.Override
    public boolean hasQuantifierSpanEnd() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required int32 quantifierSpanEnd = 3;</code>
     * @return The quantifierSpanEnd.
     */
    @java.lang.Override
    public int getQuantifierSpanEnd() {
      return quantifierSpanEnd_;
    }

    public static final int SUBJECTSPANBEGIN_FIELD_NUMBER = 4;
    private int subjectSpanBegin_;
    /**
     * <code>required int32 subjectSpanBegin = 4;</code>
     * @return Whether the subjectSpanBegin field is set.
     */
    @java.lang.Override
    public boolean hasSubjectSpanBegin() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required int32 subjectSpanBegin = 4;</code>
     * @return The subjectSpanBegin.
     */
    @java.lang.Override
    public int getSubjectSpanBegin() {
      return subjectSpanBegin_;
    }

    public static final int SUBJECTSPANEND_FIELD_NUMBER = 5;
    private int subjectSpanEnd_;
    /**
     * <code>required int32 subjectSpanEnd = 5;</code>
     * @return Whether the subjectSpanEnd field is set.
     */
    @java.lang.Override
    public boolean hasSubjectSpanEnd() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required int32 subjectSpanEnd = 5;</code>
     * @return The subjectSpanEnd.
     */
    @java.lang.Override
    public int getSubjectSpanEnd() {
      return subjectSpanEnd_;
    }

    public static final int OBJECTSPANBEGIN_FIELD_NUMBER = 6;
    private int objectSpanBegin_;
    /**
     * <code>required int32 objectSpanBegin = 6;</code>
     * @return Whether the objectSpanBegin field is set.
     */
    @java.lang.Override
    public boolean hasObjectSpanBegin() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>required int32 objectSpanBegin = 6;</code>
     * @return The objectSpanBegin.
     */
    @java.lang.Override
    public int getObjectSpanBegin() {
      return objectSpanBegin_;
    }

    public static final int OBJECTSPANEND_FIELD_NUMBER = 7;
    private int objectSpanEnd_;
    /**
     * <code>required int32 objectSpanEnd = 7;</code>
     * @return Whether the objectSpanEnd field is set.
     */
    @java.lang.Override
    public boolean hasObjectSpanEnd() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>required int32 objectSpanEnd = 7;</code>
     * @return The objectSpanEnd.
     */
    @java.lang.Override
    public int getObjectSpanEnd() {
      return objectSpanEnd_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasQuantifierSpanBegin()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasQuantifierSpanEnd()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSubjectSpanBegin()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSubjectSpanEnd()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasObjectSpanBegin()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasObjectSpanEnd()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, quantifierSpanBegin_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, quantifierSpanEnd_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(4, subjectSpanBegin_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt32(5, subjectSpanEnd_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeInt32(6, objectSpanBegin_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeInt32(7, objectSpanEnd_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, quantifierSpanBegin_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, quantifierSpanEnd_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, subjectSpanBegin_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, subjectSpanEnd_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, objectSpanBegin_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, objectSpanEnd_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Operator)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Operator other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Operator) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasQuantifierSpanBegin() != other.hasQuantifierSpanBegin()) return false;
      if (hasQuantifierSpanBegin()) {
        if (getQuantifierSpanBegin()
            != other.getQuantifierSpanBegin()) return false;
      }
      if (hasQuantifierSpanEnd() != other.hasQuantifierSpanEnd()) return false;
      if (hasQuantifierSpanEnd()) {
        if (getQuantifierSpanEnd()
            != other.getQuantifierSpanEnd()) return false;
      }
      if (hasSubjectSpanBegin() != other.hasSubjectSpanBegin()) return false;
      if (hasSubjectSpanBegin()) {
        if (getSubjectSpanBegin()
            != other.getSubjectSpanBegin()) return false;
      }
      if (hasSubjectSpanEnd() != other.hasSubjectSpanEnd()) return false;
      if (hasSubjectSpanEnd()) {
        if (getSubjectSpanEnd()
            != other.getSubjectSpanEnd()) return false;
      }
      if (hasObjectSpanBegin() != other.hasObjectSpanBegin()) return false;
      if (hasObjectSpanBegin()) {
        if (getObjectSpanBegin()
            != other.getObjectSpanBegin()) return false;
      }
      if (hasObjectSpanEnd() != other.hasObjectSpanEnd()) return false;
      if (hasObjectSpanEnd()) {
        if (getObjectSpanEnd()
            != other.getObjectSpanEnd()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasQuantifierSpanBegin()) {
        hash = (37 * hash) + QUANTIFIERSPANBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getQuantifierSpanBegin();
      }
      if (hasQuantifierSpanEnd()) {
        hash = (37 * hash) + QUANTIFIERSPANEND_FIELD_NUMBER;
        hash = (53 * hash) + getQuantifierSpanEnd();
      }
      if (hasSubjectSpanBegin()) {
        hash = (37 * hash) + SUBJECTSPANBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getSubjectSpanBegin();
      }
      if (hasSubjectSpanEnd()) {
        hash = (37 * hash) + SUBJECTSPANEND_FIELD_NUMBER;
        hash = (53 * hash) + getSubjectSpanEnd();
      }
      if (hasObjectSpanBegin()) {
        hash = (37 * hash) + OBJECTSPANBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getObjectSpanBegin();
      }
      if (hasObjectSpanEnd()) {
        hash = (37 * hash) + OBJECTSPANEND_FIELD_NUMBER;
        hash = (53 * hash) + getObjectSpanEnd();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Operator prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A Natural Logic operator
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Operator}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Operator)
        edu.stanford.nlp.pipeline.CoreNLPProtos.OperatorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Operator_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Operator_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        quantifierSpanBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        quantifierSpanEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        subjectSpanBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        subjectSpanEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        objectSpanBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        objectSpanEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Operator_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Operator getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Operator build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Operator result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Operator buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Operator result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Operator(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.quantifierSpanBegin_ = quantifierSpanBegin_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.quantifierSpanEnd_ = quantifierSpanEnd_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.subjectSpanBegin_ = subjectSpanBegin_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.subjectSpanEnd_ = subjectSpanEnd_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.objectSpanBegin_ = objectSpanBegin_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.objectSpanEnd_ = objectSpanEnd_;
          to_bitField0_ |= 0x00000040;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Operator) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Operator)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Operator other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Operator.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasQuantifierSpanBegin()) {
          setQuantifierSpanBegin(other.getQuantifierSpanBegin());
        }
        if (other.hasQuantifierSpanEnd()) {
          setQuantifierSpanEnd(other.getQuantifierSpanEnd());
        }
        if (other.hasSubjectSpanBegin()) {
          setSubjectSpanBegin(other.getSubjectSpanBegin());
        }
        if (other.hasSubjectSpanEnd()) {
          setSubjectSpanEnd(other.getSubjectSpanEnd());
        }
        if (other.hasObjectSpanBegin()) {
          setObjectSpanBegin(other.getObjectSpanBegin());
        }
        if (other.hasObjectSpanEnd()) {
          setObjectSpanEnd(other.getObjectSpanEnd());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasName()) {
          return false;
        }
        if (!hasQuantifierSpanBegin()) {
          return false;
        }
        if (!hasQuantifierSpanEnd()) {
          return false;
        }
        if (!hasSubjectSpanBegin()) {
          return false;
        }
        if (!hasSubjectSpanEnd()) {
          return false;
        }
        if (!hasObjectSpanBegin()) {
          return false;
        }
        if (!hasObjectSpanEnd()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                quantifierSpanBegin_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                quantifierSpanEnd_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                subjectSpanBegin_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                subjectSpanEnd_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                objectSpanBegin_ = input.readInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                objectSpanEnd_ = input.readInt32();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private int quantifierSpanBegin_ ;
      /**
       * <code>required int32 quantifierSpanBegin = 2;</code>
       * @return Whether the quantifierSpanBegin field is set.
       */
      @java.lang.Override
      public boolean hasQuantifierSpanBegin() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required int32 quantifierSpanBegin = 2;</code>
       * @return The quantifierSpanBegin.
       */
      @java.lang.Override
      public int getQuantifierSpanBegin() {
        return quantifierSpanBegin_;
      }
      /**
       * <code>required int32 quantifierSpanBegin = 2;</code>
       * @param value The quantifierSpanBegin to set.
       * @return This builder for chaining.
       */
      public Builder setQuantifierSpanBegin(int value) {
        bitField0_ |= 0x00000002;
        quantifierSpanBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 quantifierSpanBegin = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearQuantifierSpanBegin() {
        bitField0_ = (bitField0_ & ~0x00000002);
        quantifierSpanBegin_ = 0;
        onChanged();
        return this;
      }

      private int quantifierSpanEnd_ ;
      /**
       * <code>required int32 quantifierSpanEnd = 3;</code>
       * @return Whether the quantifierSpanEnd field is set.
       */
      @java.lang.Override
      public boolean hasQuantifierSpanEnd() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required int32 quantifierSpanEnd = 3;</code>
       * @return The quantifierSpanEnd.
       */
      @java.lang.Override
      public int getQuantifierSpanEnd() {
        return quantifierSpanEnd_;
      }
      /**
       * <code>required int32 quantifierSpanEnd = 3;</code>
       * @param value The quantifierSpanEnd to set.
       * @return This builder for chaining.
       */
      public Builder setQuantifierSpanEnd(int value) {
        bitField0_ |= 0x00000004;
        quantifierSpanEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 quantifierSpanEnd = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearQuantifierSpanEnd() {
        bitField0_ = (bitField0_ & ~0x00000004);
        quantifierSpanEnd_ = 0;
        onChanged();
        return this;
      }

      private int subjectSpanBegin_ ;
      /**
       * <code>required int32 subjectSpanBegin = 4;</code>
       * @return Whether the subjectSpanBegin field is set.
       */
      @java.lang.Override
      public boolean hasSubjectSpanBegin() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required int32 subjectSpanBegin = 4;</code>
       * @return The subjectSpanBegin.
       */
      @java.lang.Override
      public int getSubjectSpanBegin() {
        return subjectSpanBegin_;
      }
      /**
       * <code>required int32 subjectSpanBegin = 4;</code>
       * @param value The subjectSpanBegin to set.
       * @return This builder for chaining.
       */
      public Builder setSubjectSpanBegin(int value) {
        bitField0_ |= 0x00000008;
        subjectSpanBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 subjectSpanBegin = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubjectSpanBegin() {
        bitField0_ = (bitField0_ & ~0x00000008);
        subjectSpanBegin_ = 0;
        onChanged();
        return this;
      }

      private int subjectSpanEnd_ ;
      /**
       * <code>required int32 subjectSpanEnd = 5;</code>
       * @return Whether the subjectSpanEnd field is set.
       */
      @java.lang.Override
      public boolean hasSubjectSpanEnd() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required int32 subjectSpanEnd = 5;</code>
       * @return The subjectSpanEnd.
       */
      @java.lang.Override
      public int getSubjectSpanEnd() {
        return subjectSpanEnd_;
      }
      /**
       * <code>required int32 subjectSpanEnd = 5;</code>
       * @param value The subjectSpanEnd to set.
       * @return This builder for chaining.
       */
      public Builder setSubjectSpanEnd(int value) {
        bitField0_ |= 0x00000010;
        subjectSpanEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 subjectSpanEnd = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubjectSpanEnd() {
        bitField0_ = (bitField0_ & ~0x00000010);
        subjectSpanEnd_ = 0;
        onChanged();
        return this;
      }

      private int objectSpanBegin_ ;
      /**
       * <code>required int32 objectSpanBegin = 6;</code>
       * @return Whether the objectSpanBegin field is set.
       */
      @java.lang.Override
      public boolean hasObjectSpanBegin() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>required int32 objectSpanBegin = 6;</code>
       * @return The objectSpanBegin.
       */
      @java.lang.Override
      public int getObjectSpanBegin() {
        return objectSpanBegin_;
      }
      /**
       * <code>required int32 objectSpanBegin = 6;</code>
       * @param value The objectSpanBegin to set.
       * @return This builder for chaining.
       */
      public Builder setObjectSpanBegin(int value) {
        bitField0_ |= 0x00000020;
        objectSpanBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 objectSpanBegin = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearObjectSpanBegin() {
        bitField0_ = (bitField0_ & ~0x00000020);
        objectSpanBegin_ = 0;
        onChanged();
        return this;
      }

      private int objectSpanEnd_ ;
      /**
       * <code>required int32 objectSpanEnd = 7;</code>
       * @return Whether the objectSpanEnd field is set.
       */
      @java.lang.Override
      public boolean hasObjectSpanEnd() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>required int32 objectSpanEnd = 7;</code>
       * @return The objectSpanEnd.
       */
      @java.lang.Override
      public int getObjectSpanEnd() {
        return objectSpanEnd_;
      }
      /**
       * <code>required int32 objectSpanEnd = 7;</code>
       * @param value The objectSpanEnd to set.
       * @return This builder for chaining.
       */
      public Builder setObjectSpanEnd(int value) {
        bitField0_ |= 0x00000040;
        objectSpanEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 objectSpanEnd = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearObjectSpanEnd() {
        bitField0_ = (bitField0_ & ~0x00000040);
        objectSpanEnd_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Operator)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Operator)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Operator DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Operator();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Operator getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Operator>
        PARSER = new com.google.protobuf.AbstractParser<Operator>() {
      @java.lang.Override
      public Operator parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Operator> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Operator> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Operator getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PolarityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Polarity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectEquivalence = 1;</code>
     * @return Whether the projectEquivalence field is set.
     */
    boolean hasProjectEquivalence();
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectEquivalence = 1;</code>
     * @return The projectEquivalence.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectEquivalence();

    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectForwardEntailment = 2;</code>
     * @return Whether the projectForwardEntailment field is set.
     */
    boolean hasProjectForwardEntailment();
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectForwardEntailment = 2;</code>
     * @return The projectForwardEntailment.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectForwardEntailment();

    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectReverseEntailment = 3;</code>
     * @return Whether the projectReverseEntailment field is set.
     */
    boolean hasProjectReverseEntailment();
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectReverseEntailment = 3;</code>
     * @return The projectReverseEntailment.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectReverseEntailment();

    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectNegation = 4;</code>
     * @return Whether the projectNegation field is set.
     */
    boolean hasProjectNegation();
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectNegation = 4;</code>
     * @return The projectNegation.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectNegation();

    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectAlternation = 5;</code>
     * @return Whether the projectAlternation field is set.
     */
    boolean hasProjectAlternation();
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectAlternation = 5;</code>
     * @return The projectAlternation.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectAlternation();

    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectCover = 6;</code>
     * @return Whether the projectCover field is set.
     */
    boolean hasProjectCover();
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectCover = 6;</code>
     * @return The projectCover.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectCover();

    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectIndependence = 7;</code>
     * @return Whether the projectIndependence field is set.
     */
    boolean hasProjectIndependence();
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectIndependence = 7;</code>
     * @return The projectIndependence.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectIndependence();
  }
  /**
   * <pre>
   * The polarity of a word, according to Natural Logic
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.Polarity}
   */
  public static final class Polarity extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Polarity)
      PolarityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Polarity.newBuilder() to construct.
    private Polarity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Polarity() {
      projectEquivalence_ = 0;
      projectForwardEntailment_ = 0;
      projectReverseEntailment_ = 0;
      projectNegation_ = 0;
      projectAlternation_ = 0;
      projectCover_ = 0;
      projectIndependence_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Polarity();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Polarity_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Polarity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.Builder.class);
    }

    private int bitField0_;
    public static final int PROJECTEQUIVALENCE_FIELD_NUMBER = 1;
    private int projectEquivalence_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectEquivalence = 1;</code>
     * @return Whether the projectEquivalence field is set.
     */
    @java.lang.Override public boolean hasProjectEquivalence() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectEquivalence = 1;</code>
     * @return The projectEquivalence.
     */
    @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectEquivalence() {
      @SuppressWarnings("deprecation")
      edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectEquivalence_);
      return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
    }

    public static final int PROJECTFORWARDENTAILMENT_FIELD_NUMBER = 2;
    private int projectForwardEntailment_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectForwardEntailment = 2;</code>
     * @return Whether the projectForwardEntailment field is set.
     */
    @java.lang.Override public boolean hasProjectForwardEntailment() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectForwardEntailment = 2;</code>
     * @return The projectForwardEntailment.
     */
    @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectForwardEntailment() {
      @SuppressWarnings("deprecation")
      edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectForwardEntailment_);
      return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
    }

    public static final int PROJECTREVERSEENTAILMENT_FIELD_NUMBER = 3;
    private int projectReverseEntailment_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectReverseEntailment = 3;</code>
     * @return Whether the projectReverseEntailment field is set.
     */
    @java.lang.Override public boolean hasProjectReverseEntailment() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectReverseEntailment = 3;</code>
     * @return The projectReverseEntailment.
     */
    @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectReverseEntailment() {
      @SuppressWarnings("deprecation")
      edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectReverseEntailment_);
      return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
    }

    public static final int PROJECTNEGATION_FIELD_NUMBER = 4;
    private int projectNegation_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectNegation = 4;</code>
     * @return Whether the projectNegation field is set.
     */
    @java.lang.Override public boolean hasProjectNegation() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectNegation = 4;</code>
     * @return The projectNegation.
     */
    @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectNegation() {
      @SuppressWarnings("deprecation")
      edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectNegation_);
      return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
    }

    public static final int PROJECTALTERNATION_FIELD_NUMBER = 5;
    private int projectAlternation_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectAlternation = 5;</code>
     * @return Whether the projectAlternation field is set.
     */
    @java.lang.Override public boolean hasProjectAlternation() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectAlternation = 5;</code>
     * @return The projectAlternation.
     */
    @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectAlternation() {
      @SuppressWarnings("deprecation")
      edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectAlternation_);
      return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
    }

    public static final int PROJECTCOVER_FIELD_NUMBER = 6;
    private int projectCover_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectCover = 6;</code>
     * @return Whether the projectCover field is set.
     */
    @java.lang.Override public boolean hasProjectCover() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectCover = 6;</code>
     * @return The projectCover.
     */
    @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectCover() {
      @SuppressWarnings("deprecation")
      edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectCover_);
      return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
    }

    public static final int PROJECTINDEPENDENCE_FIELD_NUMBER = 7;
    private int projectIndependence_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectIndependence = 7;</code>
     * @return Whether the projectIndependence field is set.
     */
    @java.lang.Override public boolean hasProjectIndependence() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectIndependence = 7;</code>
     * @return The projectIndependence.
     */
    @java.lang.Override public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectIndependence() {
      @SuppressWarnings("deprecation")
      edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectIndependence_);
      return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasProjectEquivalence()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasProjectForwardEntailment()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasProjectReverseEntailment()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasProjectNegation()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasProjectAlternation()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasProjectCover()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasProjectIndependence()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, projectEquivalence_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeEnum(2, projectForwardEntailment_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeEnum(3, projectReverseEntailment_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeEnum(4, projectNegation_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeEnum(5, projectAlternation_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeEnum(6, projectCover_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeEnum(7, projectIndependence_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, projectEquivalence_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, projectForwardEntailment_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, projectReverseEntailment_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, projectNegation_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, projectAlternation_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, projectCover_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, projectIndependence_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity) obj;

      if (hasProjectEquivalence() != other.hasProjectEquivalence()) return false;
      if (hasProjectEquivalence()) {
        if (projectEquivalence_ != other.projectEquivalence_) return false;
      }
      if (hasProjectForwardEntailment() != other.hasProjectForwardEntailment()) return false;
      if (hasProjectForwardEntailment()) {
        if (projectForwardEntailment_ != other.projectForwardEntailment_) return false;
      }
      if (hasProjectReverseEntailment() != other.hasProjectReverseEntailment()) return false;
      if (hasProjectReverseEntailment()) {
        if (projectReverseEntailment_ != other.projectReverseEntailment_) return false;
      }
      if (hasProjectNegation() != other.hasProjectNegation()) return false;
      if (hasProjectNegation()) {
        if (projectNegation_ != other.projectNegation_) return false;
      }
      if (hasProjectAlternation() != other.hasProjectAlternation()) return false;
      if (hasProjectAlternation()) {
        if (projectAlternation_ != other.projectAlternation_) return false;
      }
      if (hasProjectCover() != other.hasProjectCover()) return false;
      if (hasProjectCover()) {
        if (projectCover_ != other.projectCover_) return false;
      }
      if (hasProjectIndependence() != other.hasProjectIndependence()) return false;
      if (hasProjectIndependence()) {
        if (projectIndependence_ != other.projectIndependence_) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasProjectEquivalence()) {
        hash = (37 * hash) + PROJECTEQUIVALENCE_FIELD_NUMBER;
        hash = (53 * hash) + projectEquivalence_;
      }
      if (hasProjectForwardEntailment()) {
        hash = (37 * hash) + PROJECTFORWARDENTAILMENT_FIELD_NUMBER;
        hash = (53 * hash) + projectForwardEntailment_;
      }
      if (hasProjectReverseEntailment()) {
        hash = (37 * hash) + PROJECTREVERSEENTAILMENT_FIELD_NUMBER;
        hash = (53 * hash) + projectReverseEntailment_;
      }
      if (hasProjectNegation()) {
        hash = (37 * hash) + PROJECTNEGATION_FIELD_NUMBER;
        hash = (53 * hash) + projectNegation_;
      }
      if (hasProjectAlternation()) {
        hash = (37 * hash) + PROJECTALTERNATION_FIELD_NUMBER;
        hash = (53 * hash) + projectAlternation_;
      }
      if (hasProjectCover()) {
        hash = (37 * hash) + PROJECTCOVER_FIELD_NUMBER;
        hash = (53 * hash) + projectCover_;
      }
      if (hasProjectIndependence()) {
        hash = (37 * hash) + PROJECTINDEPENDENCE_FIELD_NUMBER;
        hash = (53 * hash) + projectIndependence_;
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The polarity of a word, according to Natural Logic
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.Polarity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Polarity)
        edu.stanford.nlp.pipeline.CoreNLPProtos.PolarityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Polarity_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Polarity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        projectEquivalence_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        projectForwardEntailment_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        projectReverseEntailment_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        projectNegation_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        projectAlternation_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        projectCover_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        projectIndependence_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Polarity_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.projectEquivalence_ = projectEquivalence_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.projectForwardEntailment_ = projectForwardEntailment_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.projectReverseEntailment_ = projectReverseEntailment_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.projectNegation_ = projectNegation_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x00000010;
        }
        result.projectAlternation_ = projectAlternation_;
        if (((from_bitField0_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x00000020;
        }
        result.projectCover_ = projectCover_;
        if (((from_bitField0_ & 0x00000040) != 0)) {
          to_bitField0_ |= 0x00000040;
        }
        result.projectIndependence_ = projectIndependence_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity.getDefaultInstance()) return this;
        if (other.hasProjectEquivalence()) {
          setProjectEquivalence(other.getProjectEquivalence());
        }
        if (other.hasProjectForwardEntailment()) {
          setProjectForwardEntailment(other.getProjectForwardEntailment());
        }
        if (other.hasProjectReverseEntailment()) {
          setProjectReverseEntailment(other.getProjectReverseEntailment());
        }
        if (other.hasProjectNegation()) {
          setProjectNegation(other.getProjectNegation());
        }
        if (other.hasProjectAlternation()) {
          setProjectAlternation(other.getProjectAlternation());
        }
        if (other.hasProjectCover()) {
          setProjectCover(other.getProjectCover());
        }
        if (other.hasProjectIndependence()) {
          setProjectIndependence(other.getProjectIndependence());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasProjectEquivalence()) {
          return false;
        }
        if (!hasProjectForwardEntailment()) {
          return false;
        }
        if (!hasProjectReverseEntailment()) {
          return false;
        }
        if (!hasProjectNegation()) {
          return false;
        }
        if (!hasProjectAlternation()) {
          return false;
        }
        if (!hasProjectCover()) {
          return false;
        }
        if (!hasProjectIndependence()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int tmpRaw = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation tmpValue =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  projectEquivalence_ = tmpRaw;
                  bitField0_ |= 0x00000001;
                }
                break;
              } // case 8
              case 16: {
                int tmpRaw = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation tmpValue =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(2, tmpRaw);
                } else {
                  projectForwardEntailment_ = tmpRaw;
                  bitField0_ |= 0x00000002;
                }
                break;
              } // case 16
              case 24: {
                int tmpRaw = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation tmpValue =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(3, tmpRaw);
                } else {
                  projectReverseEntailment_ = tmpRaw;
                  bitField0_ |= 0x00000004;
                }
                break;
              } // case 24
              case 32: {
                int tmpRaw = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation tmpValue =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(4, tmpRaw);
                } else {
                  projectNegation_ = tmpRaw;
                  bitField0_ |= 0x00000008;
                }
                break;
              } // case 32
              case 40: {
                int tmpRaw = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation tmpValue =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(5, tmpRaw);
                } else {
                  projectAlternation_ = tmpRaw;
                  bitField0_ |= 0x00000010;
                }
                break;
              } // case 40
              case 48: {
                int tmpRaw = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation tmpValue =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(6, tmpRaw);
                } else {
                  projectCover_ = tmpRaw;
                  bitField0_ |= 0x00000020;
                }
                break;
              } // case 48
              case 56: {
                int tmpRaw = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation tmpValue =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(7, tmpRaw);
                } else {
                  projectIndependence_ = tmpRaw;
                  bitField0_ |= 0x00000040;
                }
                break;
              } // case 56
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int projectEquivalence_ = 0;
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectEquivalence = 1;</code>
       * @return Whether the projectEquivalence field is set.
       */
      @java.lang.Override public boolean hasProjectEquivalence() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectEquivalence = 1;</code>
       * @return The projectEquivalence.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectEquivalence() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectEquivalence_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectEquivalence = 1;</code>
       * @param value The projectEquivalence to set.
       * @return This builder for chaining.
       */
      public Builder setProjectEquivalence(edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        projectEquivalence_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectEquivalence = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearProjectEquivalence() {
        bitField0_ = (bitField0_ & ~0x00000001);
        projectEquivalence_ = 0;
        onChanged();
        return this;
      }

      private int projectForwardEntailment_ = 0;
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectForwardEntailment = 2;</code>
       * @return Whether the projectForwardEntailment field is set.
       */
      @java.lang.Override public boolean hasProjectForwardEntailment() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectForwardEntailment = 2;</code>
       * @return The projectForwardEntailment.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectForwardEntailment() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectForwardEntailment_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectForwardEntailment = 2;</code>
       * @param value The projectForwardEntailment to set.
       * @return This builder for chaining.
       */
      public Builder setProjectForwardEntailment(edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        projectForwardEntailment_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectForwardEntailment = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearProjectForwardEntailment() {
        bitField0_ = (bitField0_ & ~0x00000002);
        projectForwardEntailment_ = 0;
        onChanged();
        return this;
      }

      private int projectReverseEntailment_ = 0;
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectReverseEntailment = 3;</code>
       * @return Whether the projectReverseEntailment field is set.
       */
      @java.lang.Override public boolean hasProjectReverseEntailment() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectReverseEntailment = 3;</code>
       * @return The projectReverseEntailment.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectReverseEntailment() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectReverseEntailment_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectReverseEntailment = 3;</code>
       * @param value The projectReverseEntailment to set.
       * @return This builder for chaining.
       */
      public Builder setProjectReverseEntailment(edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        projectReverseEntailment_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectReverseEntailment = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearProjectReverseEntailment() {
        bitField0_ = (bitField0_ & ~0x00000004);
        projectReverseEntailment_ = 0;
        onChanged();
        return this;
      }

      private int projectNegation_ = 0;
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectNegation = 4;</code>
       * @return Whether the projectNegation field is set.
       */
      @java.lang.Override public boolean hasProjectNegation() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectNegation = 4;</code>
       * @return The projectNegation.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectNegation() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectNegation_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectNegation = 4;</code>
       * @param value The projectNegation to set.
       * @return This builder for chaining.
       */
      public Builder setProjectNegation(edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        projectNegation_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectNegation = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearProjectNegation() {
        bitField0_ = (bitField0_ & ~0x00000008);
        projectNegation_ = 0;
        onChanged();
        return this;
      }

      private int projectAlternation_ = 0;
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectAlternation = 5;</code>
       * @return Whether the projectAlternation field is set.
       */
      @java.lang.Override public boolean hasProjectAlternation() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectAlternation = 5;</code>
       * @return The projectAlternation.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectAlternation() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectAlternation_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectAlternation = 5;</code>
       * @param value The projectAlternation to set.
       * @return This builder for chaining.
       */
      public Builder setProjectAlternation(edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000010;
        projectAlternation_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectAlternation = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearProjectAlternation() {
        bitField0_ = (bitField0_ & ~0x00000010);
        projectAlternation_ = 0;
        onChanged();
        return this;
      }

      private int projectCover_ = 0;
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectCover = 6;</code>
       * @return Whether the projectCover field is set.
       */
      @java.lang.Override public boolean hasProjectCover() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectCover = 6;</code>
       * @return The projectCover.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectCover() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectCover_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectCover = 6;</code>
       * @param value The projectCover to set.
       * @return This builder for chaining.
       */
      public Builder setProjectCover(edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        projectCover_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectCover = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearProjectCover() {
        bitField0_ = (bitField0_ & ~0x00000020);
        projectCover_ = 0;
        onChanged();
        return this;
      }

      private int projectIndependence_ = 0;
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectIndependence = 7;</code>
       * @return Whether the projectIndependence field is set.
       */
      @java.lang.Override public boolean hasProjectIndependence() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectIndependence = 7;</code>
       * @return The projectIndependence.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation getProjectIndependence() {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation result = edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.valueOf(projectIndependence_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation.EQUIVALENCE : result;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectIndependence = 7;</code>
       * @param value The projectIndependence to set.
       * @return This builder for chaining.
       */
      public Builder setProjectIndependence(edu.stanford.nlp.pipeline.CoreNLPProtos.NaturalLogicRelation value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000040;
        projectIndependence_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.NaturalLogicRelation projectIndependence = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearProjectIndependence() {
        bitField0_ = (bitField0_ & ~0x00000040);
        projectIndependence_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Polarity)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Polarity)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Polarity>
        PARSER = new com.google.protobuf.AbstractParser<Polarity>() {
      @java.lang.Override
      public Polarity parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Polarity> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Polarity> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Polarity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NERMentionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.NERMention)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional uint32 sentenceIndex = 1;</code>
     * @return Whether the sentenceIndex field is set.
     */
    boolean hasSentenceIndex();
    /**
     * <code>optional uint32 sentenceIndex = 1;</code>
     * @return The sentenceIndex.
     */
    int getSentenceIndex();

    /**
     * <code>required uint32 tokenStartInSentenceInclusive = 2;</code>
     * @return Whether the tokenStartInSentenceInclusive field is set.
     */
    boolean hasTokenStartInSentenceInclusive();
    /**
     * <code>required uint32 tokenStartInSentenceInclusive = 2;</code>
     * @return The tokenStartInSentenceInclusive.
     */
    int getTokenStartInSentenceInclusive();

    /**
     * <code>required uint32 tokenEndInSentenceExclusive = 3;</code>
     * @return Whether the tokenEndInSentenceExclusive field is set.
     */
    boolean hasTokenEndInSentenceExclusive();
    /**
     * <code>required uint32 tokenEndInSentenceExclusive = 3;</code>
     * @return The tokenEndInSentenceExclusive.
     */
    int getTokenEndInSentenceExclusive();

    /**
     * <code>required string ner = 4;</code>
     * @return Whether the ner field is set.
     */
    boolean hasNer();
    /**
     * <code>required string ner = 4;</code>
     * @return The ner.
     */
    java.lang.String getNer();
    /**
     * <code>required string ner = 4;</code>
     * @return The bytes for ner.
     */
    com.google.protobuf.ByteString
        getNerBytes();

    /**
     * <code>optional string normalizedNER = 5;</code>
     * @return Whether the normalizedNER field is set.
     */
    boolean hasNormalizedNER();
    /**
     * <code>optional string normalizedNER = 5;</code>
     * @return The normalizedNER.
     */
    java.lang.String getNormalizedNER();
    /**
     * <code>optional string normalizedNER = 5;</code>
     * @return The bytes for normalizedNER.
     */
    com.google.protobuf.ByteString
        getNormalizedNERBytes();

    /**
     * <code>optional string entityType = 6;</code>
     * @return Whether the entityType field is set.
     */
    boolean hasEntityType();
    /**
     * <code>optional string entityType = 6;</code>
     * @return The entityType.
     */
    java.lang.String getEntityType();
    /**
     * <code>optional string entityType = 6;</code>
     * @return The bytes for entityType.
     */
    com.google.protobuf.ByteString
        getEntityTypeBytes();

    /**
     * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
     * @return Whether the timex field is set.
     */
    boolean hasTimex();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
     * @return The timex.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getTimex();
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder getTimexOrBuilder();

    /**
     * <code>optional string wikipediaEntity = 8;</code>
     * @return Whether the wikipediaEntity field is set.
     */
    boolean hasWikipediaEntity();
    /**
     * <code>optional string wikipediaEntity = 8;</code>
     * @return The wikipediaEntity.
     */
    java.lang.String getWikipediaEntity();
    /**
     * <code>optional string wikipediaEntity = 8;</code>
     * @return The bytes for wikipediaEntity.
     */
    com.google.protobuf.ByteString
        getWikipediaEntityBytes();

    /**
     * <code>optional string gender = 9;</code>
     * @return Whether the gender field is set.
     */
    boolean hasGender();
    /**
     * <code>optional string gender = 9;</code>
     * @return The gender.
     */
    java.lang.String getGender();
    /**
     * <code>optional string gender = 9;</code>
     * @return The bytes for gender.
     */
    com.google.protobuf.ByteString
        getGenderBytes();

    /**
     * <code>optional uint32 entityMentionIndex = 10;</code>
     * @return Whether the entityMentionIndex field is set.
     */
    boolean hasEntityMentionIndex();
    /**
     * <code>optional uint32 entityMentionIndex = 10;</code>
     * @return The entityMentionIndex.
     */
    int getEntityMentionIndex();

    /**
     * <code>optional uint32 canonicalEntityMentionIndex = 11;</code>
     * @return Whether the canonicalEntityMentionIndex field is set.
     */
    boolean hasCanonicalEntityMentionIndex();
    /**
     * <code>optional uint32 canonicalEntityMentionIndex = 11;</code>
     * @return The canonicalEntityMentionIndex.
     */
    int getCanonicalEntityMentionIndex();

    /**
     * <code>optional string entityMentionText = 12;</code>
     * @return Whether the entityMentionText field is set.
     */
    boolean hasEntityMentionText();
    /**
     * <code>optional string entityMentionText = 12;</code>
     * @return The entityMentionText.
     */
    java.lang.String getEntityMentionText();
    /**
     * <code>optional string entityMentionText = 12;</code>
     * @return The bytes for entityMentionText.
     */
    com.google.protobuf.ByteString
        getEntityMentionTextBytes();
  }
  /**
   * <pre>
   * An NER mention in the text
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.NERMention}
   */
  public static final class NERMention extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.NERMention)
      NERMentionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NERMention.newBuilder() to construct.
    private NERMention(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NERMention() {
      ner_ = "";
      normalizedNER_ = "";
      entityType_ = "";
      wikipediaEntity_ = "";
      gender_ = "";
      entityMentionText_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NERMention();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_NERMention_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_NERMention_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.class, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder.class);
    }

    private int bitField0_;
    public static final int SENTENCEINDEX_FIELD_NUMBER = 1;
    private int sentenceIndex_;
    /**
     * <code>optional uint32 sentenceIndex = 1;</code>
     * @return Whether the sentenceIndex field is set.
     */
    @java.lang.Override
    public boolean hasSentenceIndex() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint32 sentenceIndex = 1;</code>
     * @return The sentenceIndex.
     */
    @java.lang.Override
    public int getSentenceIndex() {
      return sentenceIndex_;
    }

    public static final int TOKENSTARTINSENTENCEINCLUSIVE_FIELD_NUMBER = 2;
    private int tokenStartInSentenceInclusive_;
    /**
     * <code>required uint32 tokenStartInSentenceInclusive = 2;</code>
     * @return Whether the tokenStartInSentenceInclusive field is set.
     */
    @java.lang.Override
    public boolean hasTokenStartInSentenceInclusive() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 tokenStartInSentenceInclusive = 2;</code>
     * @return The tokenStartInSentenceInclusive.
     */
    @java.lang.Override
    public int getTokenStartInSentenceInclusive() {
      return tokenStartInSentenceInclusive_;
    }

    public static final int TOKENENDINSENTENCEEXCLUSIVE_FIELD_NUMBER = 3;
    private int tokenEndInSentenceExclusive_;
    /**
     * <code>required uint32 tokenEndInSentenceExclusive = 3;</code>
     * @return Whether the tokenEndInSentenceExclusive field is set.
     */
    @java.lang.Override
    public boolean hasTokenEndInSentenceExclusive() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required uint32 tokenEndInSentenceExclusive = 3;</code>
     * @return The tokenEndInSentenceExclusive.
     */
    @java.lang.Override
    public int getTokenEndInSentenceExclusive() {
      return tokenEndInSentenceExclusive_;
    }

    public static final int NER_FIELD_NUMBER = 4;
    private volatile java.lang.Object ner_;
    /**
     * <code>required string ner = 4;</code>
     * @return Whether the ner field is set.
     */
    @java.lang.Override
    public boolean hasNer() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required string ner = 4;</code>
     * @return The ner.
     */
    @java.lang.Override
    public java.lang.String getNer() {
      java.lang.Object ref = ner_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          ner_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string ner = 4;</code>
     * @return The bytes for ner.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNerBytes() {
      java.lang.Object ref = ner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NORMALIZEDNER_FIELD_NUMBER = 5;
    private volatile java.lang.Object normalizedNER_;
    /**
     * <code>optional string normalizedNER = 5;</code>
     * @return Whether the normalizedNER field is set.
     */
    @java.lang.Override
    public boolean hasNormalizedNER() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string normalizedNER = 5;</code>
     * @return The normalizedNER.
     */
    @java.lang.Override
    public java.lang.String getNormalizedNER() {
      java.lang.Object ref = normalizedNER_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          normalizedNER_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string normalizedNER = 5;</code>
     * @return The bytes for normalizedNER.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNormalizedNERBytes() {
      java.lang.Object ref = normalizedNER_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        normalizedNER_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENTITYTYPE_FIELD_NUMBER = 6;
    private volatile java.lang.Object entityType_;
    /**
     * <code>optional string entityType = 6;</code>
     * @return Whether the entityType field is set.
     */
    @java.lang.Override
    public boolean hasEntityType() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional string entityType = 6;</code>
     * @return The entityType.
     */
    @java.lang.Override
    public java.lang.String getEntityType() {
      java.lang.Object ref = entityType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          entityType_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string entityType = 6;</code>
     * @return The bytes for entityType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEntityTypeBytes() {
      java.lang.Object ref = entityType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        entityType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMEX_FIELD_NUMBER = 7;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Timex timex_;
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
     * @return Whether the timex field is set.
     */
    @java.lang.Override
    public boolean hasTimex() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
     * @return The timex.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getTimex() {
      return timex_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance() : timex_;
    }
    /**
     * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder getTimexOrBuilder() {
      return timex_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance() : timex_;
    }

    public static final int WIKIPEDIAENTITY_FIELD_NUMBER = 8;
    private volatile java.lang.Object wikipediaEntity_;
    /**
     * <code>optional string wikipediaEntity = 8;</code>
     * @return Whether the wikipediaEntity field is set.
     */
    @java.lang.Override
    public boolean hasWikipediaEntity() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional string wikipediaEntity = 8;</code>
     * @return The wikipediaEntity.
     */
    @java.lang.Override
    public java.lang.String getWikipediaEntity() {
      java.lang.Object ref = wikipediaEntity_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          wikipediaEntity_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string wikipediaEntity = 8;</code>
     * @return The bytes for wikipediaEntity.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWikipediaEntityBytes() {
      java.lang.Object ref = wikipediaEntity_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        wikipediaEntity_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GENDER_FIELD_NUMBER = 9;
    private volatile java.lang.Object gender_;
    /**
     * <code>optional string gender = 9;</code>
     * @return Whether the gender field is set.
     */
    @java.lang.Override
    public boolean hasGender() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional string gender = 9;</code>
     * @return The gender.
     */
    @java.lang.Override
    public java.lang.String getGender() {
      java.lang.Object ref = gender_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          gender_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string gender = 9;</code>
     * @return The bytes for gender.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGenderBytes() {
      java.lang.Object ref = gender_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gender_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENTITYMENTIONINDEX_FIELD_NUMBER = 10;
    private int entityMentionIndex_;
    /**
     * <code>optional uint32 entityMentionIndex = 10;</code>
     * @return Whether the entityMentionIndex field is set.
     */
    @java.lang.Override
    public boolean hasEntityMentionIndex() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional uint32 entityMentionIndex = 10;</code>
     * @return The entityMentionIndex.
     */
    @java.lang.Override
    public int getEntityMentionIndex() {
      return entityMentionIndex_;
    }

    public static final int CANONICALENTITYMENTIONINDEX_FIELD_NUMBER = 11;
    private int canonicalEntityMentionIndex_;
    /**
     * <code>optional uint32 canonicalEntityMentionIndex = 11;</code>
     * @return Whether the canonicalEntityMentionIndex field is set.
     */
    @java.lang.Override
    public boolean hasCanonicalEntityMentionIndex() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional uint32 canonicalEntityMentionIndex = 11;</code>
     * @return The canonicalEntityMentionIndex.
     */
    @java.lang.Override
    public int getCanonicalEntityMentionIndex() {
      return canonicalEntityMentionIndex_;
    }

    public static final int ENTITYMENTIONTEXT_FIELD_NUMBER = 12;
    private volatile java.lang.Object entityMentionText_;
    /**
     * <code>optional string entityMentionText = 12;</code>
     * @return Whether the entityMentionText field is set.
     */
    @java.lang.Override
    public boolean hasEntityMentionText() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional string entityMentionText = 12;</code>
     * @return The entityMentionText.
     */
    @java.lang.Override
    public java.lang.String getEntityMentionText() {
      java.lang.Object ref = entityMentionText_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          entityMentionText_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string entityMentionText = 12;</code>
     * @return The bytes for entityMentionText.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEntityMentionTextBytes() {
      java.lang.Object ref = entityMentionText_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        entityMentionText_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTokenStartInSentenceInclusive()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTokenEndInSentenceExclusive()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNer()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, sentenceIndex_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, tokenStartInSentenceInclusive_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(3, tokenEndInSentenceExclusive_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, ner_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, normalizedNER_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, entityType_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(7, getTimex());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, wikipediaEntity_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, gender_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeUInt32(10, entityMentionIndex_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeUInt32(11, canonicalEntityMentionIndex_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, entityMentionText_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, sentenceIndex_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, tokenStartInSentenceInclusive_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, tokenEndInSentenceExclusive_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, ner_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, normalizedNER_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, entityType_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getTimex());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, wikipediaEntity_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, gender_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(10, entityMentionIndex_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(11, canonicalEntityMentionIndex_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, entityMentionText_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention other = (edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention) obj;

      if (hasSentenceIndex() != other.hasSentenceIndex()) return false;
      if (hasSentenceIndex()) {
        if (getSentenceIndex()
            != other.getSentenceIndex()) return false;
      }
      if (hasTokenStartInSentenceInclusive() != other.hasTokenStartInSentenceInclusive()) return false;
      if (hasTokenStartInSentenceInclusive()) {
        if (getTokenStartInSentenceInclusive()
            != other.getTokenStartInSentenceInclusive()) return false;
      }
      if (hasTokenEndInSentenceExclusive() != other.hasTokenEndInSentenceExclusive()) return false;
      if (hasTokenEndInSentenceExclusive()) {
        if (getTokenEndInSentenceExclusive()
            != other.getTokenEndInSentenceExclusive()) return false;
      }
      if (hasNer() != other.hasNer()) return false;
      if (hasNer()) {
        if (!getNer()
            .equals(other.getNer())) return false;
      }
      if (hasNormalizedNER() != other.hasNormalizedNER()) return false;
      if (hasNormalizedNER()) {
        if (!getNormalizedNER()
            .equals(other.getNormalizedNER())) return false;
      }
      if (hasEntityType() != other.hasEntityType()) return false;
      if (hasEntityType()) {
        if (!getEntityType()
            .equals(other.getEntityType())) return false;
      }
      if (hasTimex() != other.hasTimex()) return false;
      if (hasTimex()) {
        if (!getTimex()
            .equals(other.getTimex())) return false;
      }
      if (hasWikipediaEntity() != other.hasWikipediaEntity()) return false;
      if (hasWikipediaEntity()) {
        if (!getWikipediaEntity()
            .equals(other.getWikipediaEntity())) return false;
      }
      if (hasGender() != other.hasGender()) return false;
      if (hasGender()) {
        if (!getGender()
            .equals(other.getGender())) return false;
      }
      if (hasEntityMentionIndex() != other.hasEntityMentionIndex()) return false;
      if (hasEntityMentionIndex()) {
        if (getEntityMentionIndex()
            != other.getEntityMentionIndex()) return false;
      }
      if (hasCanonicalEntityMentionIndex() != other.hasCanonicalEntityMentionIndex()) return false;
      if (hasCanonicalEntityMentionIndex()) {
        if (getCanonicalEntityMentionIndex()
            != other.getCanonicalEntityMentionIndex()) return false;
      }
      if (hasEntityMentionText() != other.hasEntityMentionText()) return false;
      if (hasEntityMentionText()) {
        if (!getEntityMentionText()
            .equals(other.getEntityMentionText())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSentenceIndex()) {
        hash = (37 * hash) + SENTENCEINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceIndex();
      }
      if (hasTokenStartInSentenceInclusive()) {
        hash = (37 * hash) + TOKENSTARTINSENTENCEINCLUSIVE_FIELD_NUMBER;
        hash = (53 * hash) + getTokenStartInSentenceInclusive();
      }
      if (hasTokenEndInSentenceExclusive()) {
        hash = (37 * hash) + TOKENENDINSENTENCEEXCLUSIVE_FIELD_NUMBER;
        hash = (53 * hash) + getTokenEndInSentenceExclusive();
      }
      if (hasNer()) {
        hash = (37 * hash) + NER_FIELD_NUMBER;
        hash = (53 * hash) + getNer().hashCode();
      }
      if (hasNormalizedNER()) {
        hash = (37 * hash) + NORMALIZEDNER_FIELD_NUMBER;
        hash = (53 * hash) + getNormalizedNER().hashCode();
      }
      if (hasEntityType()) {
        hash = (37 * hash) + ENTITYTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getEntityType().hashCode();
      }
      if (hasTimex()) {
        hash = (37 * hash) + TIMEX_FIELD_NUMBER;
        hash = (53 * hash) + getTimex().hashCode();
      }
      if (hasWikipediaEntity()) {
        hash = (37 * hash) + WIKIPEDIAENTITY_FIELD_NUMBER;
        hash = (53 * hash) + getWikipediaEntity().hashCode();
      }
      if (hasGender()) {
        hash = (37 * hash) + GENDER_FIELD_NUMBER;
        hash = (53 * hash) + getGender().hashCode();
      }
      if (hasEntityMentionIndex()) {
        hash = (37 * hash) + ENTITYMENTIONINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getEntityMentionIndex();
      }
      if (hasCanonicalEntityMentionIndex()) {
        hash = (37 * hash) + CANONICALENTITYMENTIONINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getCanonicalEntityMentionIndex();
      }
      if (hasEntityMentionText()) {
        hash = (37 * hash) + ENTITYMENTIONTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getEntityMentionText().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * An NER mention in the text
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.NERMention}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.NERMention)
        edu.stanford.nlp.pipeline.CoreNLPProtos.NERMentionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_NERMention_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_NERMention_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.class, edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimexFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sentenceIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        tokenStartInSentenceInclusive_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        tokenEndInSentenceExclusive_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        ner_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        normalizedNER_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        entityType_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        if (timexBuilder_ == null) {
          timex_ = null;
        } else {
          timexBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        wikipediaEntity_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        gender_ = "";
        bitField0_ = (bitField0_ & ~0x00000100);
        entityMentionIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000200);
        canonicalEntityMentionIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000400);
        entityMentionText_ = "";
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_NERMention_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention result = new edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sentenceIndex_ = sentenceIndex_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.tokenStartInSentenceInclusive_ = tokenStartInSentenceInclusive_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.tokenEndInSentenceExclusive_ = tokenEndInSentenceExclusive_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.ner_ = ner_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x00000010;
        }
        result.normalizedNER_ = normalizedNER_;
        if (((from_bitField0_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x00000020;
        }
        result.entityType_ = entityType_;
        if (((from_bitField0_ & 0x00000040) != 0)) {
          if (timexBuilder_ == null) {
            result.timex_ = timex_;
          } else {
            result.timex_ = timexBuilder_.build();
          }
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          to_bitField0_ |= 0x00000080;
        }
        result.wikipediaEntity_ = wikipediaEntity_;
        if (((from_bitField0_ & 0x00000100) != 0)) {
          to_bitField0_ |= 0x00000100;
        }
        result.gender_ = gender_;
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.entityMentionIndex_ = entityMentionIndex_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.canonicalEntityMentionIndex_ = canonicalEntityMentionIndex_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          to_bitField0_ |= 0x00000800;
        }
        result.entityMentionText_ = entityMentionText_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention.getDefaultInstance()) return this;
        if (other.hasSentenceIndex()) {
          setSentenceIndex(other.getSentenceIndex());
        }
        if (other.hasTokenStartInSentenceInclusive()) {
          setTokenStartInSentenceInclusive(other.getTokenStartInSentenceInclusive());
        }
        if (other.hasTokenEndInSentenceExclusive()) {
          setTokenEndInSentenceExclusive(other.getTokenEndInSentenceExclusive());
        }
        if (other.hasNer()) {
          bitField0_ |= 0x00000008;
          ner_ = other.ner_;
          onChanged();
        }
        if (other.hasNormalizedNER()) {
          bitField0_ |= 0x00000010;
          normalizedNER_ = other.normalizedNER_;
          onChanged();
        }
        if (other.hasEntityType()) {
          bitField0_ |= 0x00000020;
          entityType_ = other.entityType_;
          onChanged();
        }
        if (other.hasTimex()) {
          mergeTimex(other.getTimex());
        }
        if (other.hasWikipediaEntity()) {
          bitField0_ |= 0x00000080;
          wikipediaEntity_ = other.wikipediaEntity_;
          onChanged();
        }
        if (other.hasGender()) {
          bitField0_ |= 0x00000100;
          gender_ = other.gender_;
          onChanged();
        }
        if (other.hasEntityMentionIndex()) {
          setEntityMentionIndex(other.getEntityMentionIndex());
        }
        if (other.hasCanonicalEntityMentionIndex()) {
          setCanonicalEntityMentionIndex(other.getCanonicalEntityMentionIndex());
        }
        if (other.hasEntityMentionText()) {
          bitField0_ |= 0x00000800;
          entityMentionText_ = other.entityMentionText_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTokenStartInSentenceInclusive()) {
          return false;
        }
        if (!hasTokenEndInSentenceExclusive()) {
          return false;
        }
        if (!hasNer()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                sentenceIndex_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                tokenStartInSentenceInclusive_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                tokenEndInSentenceExclusive_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                ner_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                normalizedNER_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                entityType_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getTimexFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                wikipediaEntity_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                gender_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 80: {
                entityMentionIndex_ = input.readUInt32();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              case 88: {
                canonicalEntityMentionIndex_ = input.readUInt32();
                bitField0_ |= 0x00000400;
                break;
              } // case 88
              case 98: {
                entityMentionText_ = input.readBytes();
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int sentenceIndex_ ;
      /**
       * <code>optional uint32 sentenceIndex = 1;</code>
       * @return Whether the sentenceIndex field is set.
       */
      @java.lang.Override
      public boolean hasSentenceIndex() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional uint32 sentenceIndex = 1;</code>
       * @return The sentenceIndex.
       */
      @java.lang.Override
      public int getSentenceIndex() {
        return sentenceIndex_;
      }
      /**
       * <code>optional uint32 sentenceIndex = 1;</code>
       * @param value The sentenceIndex to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceIndex(int value) {
        bitField0_ |= 0x00000001;
        sentenceIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 sentenceIndex = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentenceIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sentenceIndex_ = 0;
        onChanged();
        return this;
      }

      private int tokenStartInSentenceInclusive_ ;
      /**
       * <code>required uint32 tokenStartInSentenceInclusive = 2;</code>
       * @return Whether the tokenStartInSentenceInclusive field is set.
       */
      @java.lang.Override
      public boolean hasTokenStartInSentenceInclusive() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint32 tokenStartInSentenceInclusive = 2;</code>
       * @return The tokenStartInSentenceInclusive.
       */
      @java.lang.Override
      public int getTokenStartInSentenceInclusive() {
        return tokenStartInSentenceInclusive_;
      }
      /**
       * <code>required uint32 tokenStartInSentenceInclusive = 2;</code>
       * @param value The tokenStartInSentenceInclusive to set.
       * @return This builder for chaining.
       */
      public Builder setTokenStartInSentenceInclusive(int value) {
        bitField0_ |= 0x00000002;
        tokenStartInSentenceInclusive_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 tokenStartInSentenceInclusive = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenStartInSentenceInclusive() {
        bitField0_ = (bitField0_ & ~0x00000002);
        tokenStartInSentenceInclusive_ = 0;
        onChanged();
        return this;
      }

      private int tokenEndInSentenceExclusive_ ;
      /**
       * <code>required uint32 tokenEndInSentenceExclusive = 3;</code>
       * @return Whether the tokenEndInSentenceExclusive field is set.
       */
      @java.lang.Override
      public boolean hasTokenEndInSentenceExclusive() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required uint32 tokenEndInSentenceExclusive = 3;</code>
       * @return The tokenEndInSentenceExclusive.
       */
      @java.lang.Override
      public int getTokenEndInSentenceExclusive() {
        return tokenEndInSentenceExclusive_;
      }
      /**
       * <code>required uint32 tokenEndInSentenceExclusive = 3;</code>
       * @param value The tokenEndInSentenceExclusive to set.
       * @return This builder for chaining.
       */
      public Builder setTokenEndInSentenceExclusive(int value) {
        bitField0_ |= 0x00000004;
        tokenEndInSentenceExclusive_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 tokenEndInSentenceExclusive = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenEndInSentenceExclusive() {
        bitField0_ = (bitField0_ & ~0x00000004);
        tokenEndInSentenceExclusive_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object ner_ = "";
      /**
       * <code>required string ner = 4;</code>
       * @return Whether the ner field is set.
       */
      public boolean hasNer() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required string ner = 4;</code>
       * @return The ner.
       */
      public java.lang.String getNer() {
        java.lang.Object ref = ner_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            ner_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string ner = 4;</code>
       * @return The bytes for ner.
       */
      public com.google.protobuf.ByteString
          getNerBytes() {
        java.lang.Object ref = ner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string ner = 4;</code>
       * @param value The ner to set.
       * @return This builder for chaining.
       */
      public Builder setNer(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        ner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string ner = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNer() {
        bitField0_ = (bitField0_ & ~0x00000008);
        ner_ = getDefaultInstance().getNer();
        onChanged();
        return this;
      }
      /**
       * <code>required string ner = 4;</code>
       * @param value The bytes for ner to set.
       * @return This builder for chaining.
       */
      public Builder setNerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        ner_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object normalizedNER_ = "";
      /**
       * <code>optional string normalizedNER = 5;</code>
       * @return Whether the normalizedNER field is set.
       */
      public boolean hasNormalizedNER() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string normalizedNER = 5;</code>
       * @return The normalizedNER.
       */
      public java.lang.String getNormalizedNER() {
        java.lang.Object ref = normalizedNER_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            normalizedNER_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string normalizedNER = 5;</code>
       * @return The bytes for normalizedNER.
       */
      public com.google.protobuf.ByteString
          getNormalizedNERBytes() {
        java.lang.Object ref = normalizedNER_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          normalizedNER_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string normalizedNER = 5;</code>
       * @param value The normalizedNER to set.
       * @return This builder for chaining.
       */
      public Builder setNormalizedNER(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        normalizedNER_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string normalizedNER = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearNormalizedNER() {
        bitField0_ = (bitField0_ & ~0x00000010);
        normalizedNER_ = getDefaultInstance().getNormalizedNER();
        onChanged();
        return this;
      }
      /**
       * <code>optional string normalizedNER = 5;</code>
       * @param value The bytes for normalizedNER to set.
       * @return This builder for chaining.
       */
      public Builder setNormalizedNERBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        normalizedNER_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object entityType_ = "";
      /**
       * <code>optional string entityType = 6;</code>
       * @return Whether the entityType field is set.
       */
      public boolean hasEntityType() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional string entityType = 6;</code>
       * @return The entityType.
       */
      public java.lang.String getEntityType() {
        java.lang.Object ref = entityType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            entityType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string entityType = 6;</code>
       * @return The bytes for entityType.
       */
      public com.google.protobuf.ByteString
          getEntityTypeBytes() {
        java.lang.Object ref = entityType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          entityType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string entityType = 6;</code>
       * @param value The entityType to set.
       * @return This builder for chaining.
       */
      public Builder setEntityType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        entityType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string entityType = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearEntityType() {
        bitField0_ = (bitField0_ & ~0x00000020);
        entityType_ = getDefaultInstance().getEntityType();
        onChanged();
        return this;
      }
      /**
       * <code>optional string entityType = 6;</code>
       * @param value The bytes for entityType to set.
       * @return This builder for chaining.
       */
      public Builder setEntityTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        entityType_ = value;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Timex timex_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Timex, edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder> timexBuilder_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       * @return Whether the timex field is set.
       */
      public boolean hasTimex() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       * @return The timex.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex getTimex() {
        if (timexBuilder_ == null) {
          return timex_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance() : timex_;
        } else {
          return timexBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       */
      public Builder setTimex(edu.stanford.nlp.pipeline.CoreNLPProtos.Timex value) {
        if (timexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timex_ = value;
          onChanged();
        } else {
          timexBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       */
      public Builder setTimex(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder builderForValue) {
        if (timexBuilder_ == null) {
          timex_ = builderForValue.build();
          onChanged();
        } else {
          timexBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       */
      public Builder mergeTimex(edu.stanford.nlp.pipeline.CoreNLPProtos.Timex value) {
        if (timexBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
              timex_ != null &&
              timex_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance()) {
            timex_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.newBuilder(timex_).mergeFrom(value).buildPartial();
          } else {
            timex_ = value;
          }
          onChanged();
        } else {
          timexBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       */
      public Builder clearTimex() {
        if (timexBuilder_ == null) {
          timex_ = null;
          onChanged();
        } else {
          timexBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder getTimexBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getTimexFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder getTimexOrBuilder() {
        if (timexBuilder_ != null) {
          return timexBuilder_.getMessageOrBuilder();
        } else {
          return timex_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.getDefaultInstance() : timex_;
        }
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.Timex timex = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Timex, edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder> 
          getTimexFieldBuilder() {
        if (timexBuilder_ == null) {
          timexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Timex, edu.stanford.nlp.pipeline.CoreNLPProtos.Timex.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TimexOrBuilder>(
                  getTimex(),
                  getParentForChildren(),
                  isClean());
          timex_ = null;
        }
        return timexBuilder_;
      }

      private java.lang.Object wikipediaEntity_ = "";
      /**
       * <code>optional string wikipediaEntity = 8;</code>
       * @return Whether the wikipediaEntity field is set.
       */
      public boolean hasWikipediaEntity() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional string wikipediaEntity = 8;</code>
       * @return The wikipediaEntity.
       */
      public java.lang.String getWikipediaEntity() {
        java.lang.Object ref = wikipediaEntity_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            wikipediaEntity_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string wikipediaEntity = 8;</code>
       * @return The bytes for wikipediaEntity.
       */
      public com.google.protobuf.ByteString
          getWikipediaEntityBytes() {
        java.lang.Object ref = wikipediaEntity_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          wikipediaEntity_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string wikipediaEntity = 8;</code>
       * @param value The wikipediaEntity to set.
       * @return This builder for chaining.
       */
      public Builder setWikipediaEntity(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        wikipediaEntity_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string wikipediaEntity = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearWikipediaEntity() {
        bitField0_ = (bitField0_ & ~0x00000080);
        wikipediaEntity_ = getDefaultInstance().getWikipediaEntity();
        onChanged();
        return this;
      }
      /**
       * <code>optional string wikipediaEntity = 8;</code>
       * @param value The bytes for wikipediaEntity to set.
       * @return This builder for chaining.
       */
      public Builder setWikipediaEntityBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        wikipediaEntity_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object gender_ = "";
      /**
       * <code>optional string gender = 9;</code>
       * @return Whether the gender field is set.
       */
      public boolean hasGender() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional string gender = 9;</code>
       * @return The gender.
       */
      public java.lang.String getGender() {
        java.lang.Object ref = gender_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            gender_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string gender = 9;</code>
       * @return The bytes for gender.
       */
      public com.google.protobuf.ByteString
          getGenderBytes() {
        java.lang.Object ref = gender_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gender_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string gender = 9;</code>
       * @param value The gender to set.
       * @return This builder for chaining.
       */
      public Builder setGender(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        gender_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string gender = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearGender() {
        bitField0_ = (bitField0_ & ~0x00000100);
        gender_ = getDefaultInstance().getGender();
        onChanged();
        return this;
      }
      /**
       * <code>optional string gender = 9;</code>
       * @param value The bytes for gender to set.
       * @return This builder for chaining.
       */
      public Builder setGenderBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        gender_ = value;
        onChanged();
        return this;
      }

      private int entityMentionIndex_ ;
      /**
       * <code>optional uint32 entityMentionIndex = 10;</code>
       * @return Whether the entityMentionIndex field is set.
       */
      @java.lang.Override
      public boolean hasEntityMentionIndex() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional uint32 entityMentionIndex = 10;</code>
       * @return The entityMentionIndex.
       */
      @java.lang.Override
      public int getEntityMentionIndex() {
        return entityMentionIndex_;
      }
      /**
       * <code>optional uint32 entityMentionIndex = 10;</code>
       * @param value The entityMentionIndex to set.
       * @return This builder for chaining.
       */
      public Builder setEntityMentionIndex(int value) {
        bitField0_ |= 0x00000200;
        entityMentionIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 entityMentionIndex = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearEntityMentionIndex() {
        bitField0_ = (bitField0_ & ~0x00000200);
        entityMentionIndex_ = 0;
        onChanged();
        return this;
      }

      private int canonicalEntityMentionIndex_ ;
      /**
       * <code>optional uint32 canonicalEntityMentionIndex = 11;</code>
       * @return Whether the canonicalEntityMentionIndex field is set.
       */
      @java.lang.Override
      public boolean hasCanonicalEntityMentionIndex() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional uint32 canonicalEntityMentionIndex = 11;</code>
       * @return The canonicalEntityMentionIndex.
       */
      @java.lang.Override
      public int getCanonicalEntityMentionIndex() {
        return canonicalEntityMentionIndex_;
      }
      /**
       * <code>optional uint32 canonicalEntityMentionIndex = 11;</code>
       * @param value The canonicalEntityMentionIndex to set.
       * @return This builder for chaining.
       */
      public Builder setCanonicalEntityMentionIndex(int value) {
        bitField0_ |= 0x00000400;
        canonicalEntityMentionIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 canonicalEntityMentionIndex = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanonicalEntityMentionIndex() {
        bitField0_ = (bitField0_ & ~0x00000400);
        canonicalEntityMentionIndex_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object entityMentionText_ = "";
      /**
       * <code>optional string entityMentionText = 12;</code>
       * @return Whether the entityMentionText field is set.
       */
      public boolean hasEntityMentionText() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional string entityMentionText = 12;</code>
       * @return The entityMentionText.
       */
      public java.lang.String getEntityMentionText() {
        java.lang.Object ref = entityMentionText_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            entityMentionText_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string entityMentionText = 12;</code>
       * @return The bytes for entityMentionText.
       */
      public com.google.protobuf.ByteString
          getEntityMentionTextBytes() {
        java.lang.Object ref = entityMentionText_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          entityMentionText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string entityMentionText = 12;</code>
       * @param value The entityMentionText to set.
       * @return This builder for chaining.
       */
      public Builder setEntityMentionText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        entityMentionText_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string entityMentionText = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearEntityMentionText() {
        bitField0_ = (bitField0_ & ~0x00000800);
        entityMentionText_ = getDefaultInstance().getEntityMentionText();
        onChanged();
        return this;
      }
      /**
       * <code>optional string entityMentionText = 12;</code>
       * @param value The bytes for entityMentionText to set.
       * @return This builder for chaining.
       */
      public Builder setEntityMentionTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        entityMentionText_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.NERMention)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.NERMention)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<NERMention>
        PARSER = new com.google.protobuf.AbstractParser<NERMention>() {
      @java.lang.Override
      public NERMention parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<NERMention> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NERMention> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.NERMention getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SentenceFragmentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SentenceFragment)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated uint32 tokenIndex = 1;</code>
     * @return A list containing the tokenIndex.
     */
    java.util.List<java.lang.Integer> getTokenIndexList();
    /**
     * <code>repeated uint32 tokenIndex = 1;</code>
     * @return The count of tokenIndex.
     */
    int getTokenIndexCount();
    /**
     * <code>repeated uint32 tokenIndex = 1;</code>
     * @param index The index of the element to return.
     * @return The tokenIndex at the given index.
     */
    int getTokenIndex(int index);

    /**
     * <code>optional uint32 root = 2;</code>
     * @return Whether the root field is set.
     */
    boolean hasRoot();
    /**
     * <code>optional uint32 root = 2;</code>
     * @return The root.
     */
    int getRoot();

    /**
     * <code>optional bool assumedTruth = 3;</code>
     * @return Whether the assumedTruth field is set.
     */
    boolean hasAssumedTruth();
    /**
     * <code>optional bool assumedTruth = 3;</code>
     * @return The assumedTruth.
     */
    boolean getAssumedTruth();

    /**
     * <code>optional double score = 4;</code>
     * @return Whether the score field is set.
     */
    boolean hasScore();
    /**
     * <code>optional double score = 4;</code>
     * @return The score.
     */
    double getScore();
  }
  /**
   * <pre>
   * An entailed sentence fragment.
   * Created by the openie annotator.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.SentenceFragment}
   */
  public static final class SentenceFragment extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SentenceFragment)
      SentenceFragmentOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SentenceFragment.newBuilder() to construct.
    private SentenceFragment(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SentenceFragment() {
      tokenIndex_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SentenceFragment();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SentenceFragment_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SentenceFragment_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder.class);
    }

    private int bitField0_;
    public static final int TOKENINDEX_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList tokenIndex_;
    /**
     * <code>repeated uint32 tokenIndex = 1;</code>
     * @return A list containing the tokenIndex.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTokenIndexList() {
      return tokenIndex_;
    }
    /**
     * <code>repeated uint32 tokenIndex = 1;</code>
     * @return The count of tokenIndex.
     */
    public int getTokenIndexCount() {
      return tokenIndex_.size();
    }
    /**
     * <code>repeated uint32 tokenIndex = 1;</code>
     * @param index The index of the element to return.
     * @return The tokenIndex at the given index.
     */
    public int getTokenIndex(int index) {
      return tokenIndex_.getInt(index);
    }

    public static final int ROOT_FIELD_NUMBER = 2;
    private int root_;
    /**
     * <code>optional uint32 root = 2;</code>
     * @return Whether the root field is set.
     */
    @java.lang.Override
    public boolean hasRoot() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint32 root = 2;</code>
     * @return The root.
     */
    @java.lang.Override
    public int getRoot() {
      return root_;
    }

    public static final int ASSUMEDTRUTH_FIELD_NUMBER = 3;
    private boolean assumedTruth_;
    /**
     * <code>optional bool assumedTruth = 3;</code>
     * @return Whether the assumedTruth field is set.
     */
    @java.lang.Override
    public boolean hasAssumedTruth() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional bool assumedTruth = 3;</code>
     * @return The assumedTruth.
     */
    @java.lang.Override
    public boolean getAssumedTruth() {
      return assumedTruth_;
    }

    public static final int SCORE_FIELD_NUMBER = 4;
    private double score_;
    /**
     * <code>optional double score = 4;</code>
     * @return Whether the score field is set.
     */
    @java.lang.Override
    public boolean hasScore() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional double score = 4;</code>
     * @return The score.
     */
    @java.lang.Override
    public double getScore() {
      return score_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < tokenIndex_.size(); i++) {
        output.writeUInt32(1, tokenIndex_.getInt(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(2, root_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(3, assumedTruth_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeDouble(4, score_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < tokenIndex_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(tokenIndex_.getInt(i));
        }
        size += dataSize;
        size += 1 * getTokenIndexList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, root_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, assumedTruth_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, score_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment) obj;

      if (!getTokenIndexList()
          .equals(other.getTokenIndexList())) return false;
      if (hasRoot() != other.hasRoot()) return false;
      if (hasRoot()) {
        if (getRoot()
            != other.getRoot()) return false;
      }
      if (hasAssumedTruth() != other.hasAssumedTruth()) return false;
      if (hasAssumedTruth()) {
        if (getAssumedTruth()
            != other.getAssumedTruth()) return false;
      }
      if (hasScore() != other.hasScore()) return false;
      if (hasScore()) {
        if (java.lang.Double.doubleToLongBits(getScore())
            != java.lang.Double.doubleToLongBits(
                other.getScore())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTokenIndexCount() > 0) {
        hash = (37 * hash) + TOKENINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getTokenIndexList().hashCode();
      }
      if (hasRoot()) {
        hash = (37 * hash) + ROOT_FIELD_NUMBER;
        hash = (53 * hash) + getRoot();
      }
      if (hasAssumedTruth()) {
        hash = (37 * hash) + ASSUMEDTRUTH_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getAssumedTruth());
      }
      if (hasScore()) {
        hash = (37 * hash) + SCORE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getScore()));
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * An entailed sentence fragment.
     * Created by the openie annotator.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.SentenceFragment}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SentenceFragment)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragmentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SentenceFragment_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SentenceFragment_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        tokenIndex_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        root_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        assumedTruth_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        score_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SentenceFragment_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          tokenIndex_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.tokenIndex_ = tokenIndex_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.root_ = root_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.assumedTruth_ = assumedTruth_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.score_ = score_;
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment.getDefaultInstance()) return this;
        if (!other.tokenIndex_.isEmpty()) {
          if (tokenIndex_.isEmpty()) {
            tokenIndex_ = other.tokenIndex_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTokenIndexIsMutable();
            tokenIndex_.addAll(other.tokenIndex_);
          }
          onChanged();
        }
        if (other.hasRoot()) {
          setRoot(other.getRoot());
        }
        if (other.hasAssumedTruth()) {
          setAssumedTruth(other.getAssumedTruth());
        }
        if (other.hasScore()) {
          setScore(other.getScore());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int v = input.readUInt32();
                ensureTokenIndexIsMutable();
                tokenIndex_.addInt(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureTokenIndexIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  tokenIndex_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 16: {
                root_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                assumedTruth_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 33: {
                score_ = input.readDouble();
                bitField0_ |= 0x00000008;
                break;
              } // case 33
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList tokenIndex_ = emptyIntList();
      private void ensureTokenIndexIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          tokenIndex_ = mutableCopy(tokenIndex_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated uint32 tokenIndex = 1;</code>
       * @return A list containing the tokenIndex.
       */
      public java.util.List<java.lang.Integer>
          getTokenIndexList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(tokenIndex_) : tokenIndex_;
      }
      /**
       * <code>repeated uint32 tokenIndex = 1;</code>
       * @return The count of tokenIndex.
       */
      public int getTokenIndexCount() {
        return tokenIndex_.size();
      }
      /**
       * <code>repeated uint32 tokenIndex = 1;</code>
       * @param index The index of the element to return.
       * @return The tokenIndex at the given index.
       */
      public int getTokenIndex(int index) {
        return tokenIndex_.getInt(index);
      }
      /**
       * <code>repeated uint32 tokenIndex = 1;</code>
       * @param index The index to set the value at.
       * @param value The tokenIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTokenIndex(
          int index, int value) {
        ensureTokenIndexIsMutable();
        tokenIndex_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 tokenIndex = 1;</code>
       * @param value The tokenIndex to add.
       * @return This builder for chaining.
       */
      public Builder addTokenIndex(int value) {
        ensureTokenIndexIsMutable();
        tokenIndex_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 tokenIndex = 1;</code>
       * @param values The tokenIndex to add.
       * @return This builder for chaining.
       */
      public Builder addAllTokenIndex(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTokenIndexIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tokenIndex_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 tokenIndex = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenIndex() {
        tokenIndex_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private int root_ ;
      /**
       * <code>optional uint32 root = 2;</code>
       * @return Whether the root field is set.
       */
      @java.lang.Override
      public boolean hasRoot() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint32 root = 2;</code>
       * @return The root.
       */
      @java.lang.Override
      public int getRoot() {
        return root_;
      }
      /**
       * <code>optional uint32 root = 2;</code>
       * @param value The root to set.
       * @return This builder for chaining.
       */
      public Builder setRoot(int value) {
        bitField0_ |= 0x00000002;
        root_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 root = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRoot() {
        bitField0_ = (bitField0_ & ~0x00000002);
        root_ = 0;
        onChanged();
        return this;
      }

      private boolean assumedTruth_ ;
      /**
       * <code>optional bool assumedTruth = 3;</code>
       * @return Whether the assumedTruth field is set.
       */
      @java.lang.Override
      public boolean hasAssumedTruth() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional bool assumedTruth = 3;</code>
       * @return The assumedTruth.
       */
      @java.lang.Override
      public boolean getAssumedTruth() {
        return assumedTruth_;
      }
      /**
       * <code>optional bool assumedTruth = 3;</code>
       * @param value The assumedTruth to set.
       * @return This builder for chaining.
       */
      public Builder setAssumedTruth(boolean value) {
        bitField0_ |= 0x00000004;
        assumedTruth_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool assumedTruth = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAssumedTruth() {
        bitField0_ = (bitField0_ & ~0x00000004);
        assumedTruth_ = false;
        onChanged();
        return this;
      }

      private double score_ ;
      /**
       * <code>optional double score = 4;</code>
       * @return Whether the score field is set.
       */
      @java.lang.Override
      public boolean hasScore() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional double score = 4;</code>
       * @return The score.
       */
      @java.lang.Override
      public double getScore() {
        return score_;
      }
      /**
       * <code>optional double score = 4;</code>
       * @param value The score to set.
       * @return This builder for chaining.
       */
      public Builder setScore(double value) {
        bitField0_ |= 0x00000008;
        score_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional double score = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearScore() {
        bitField0_ = (bitField0_ & ~0x00000008);
        score_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SentenceFragment)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SentenceFragment)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SentenceFragment>
        PARSER = new com.google.protobuf.AbstractParser<SentenceFragment>() {
      @java.lang.Override
      public SentenceFragment parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SentenceFragment> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SentenceFragment> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SentenceFragment getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TokenLocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TokenLocation)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional uint32 sentenceIndex = 1;</code>
     * @return Whether the sentenceIndex field is set.
     */
    boolean hasSentenceIndex();
    /**
     * <code>optional uint32 sentenceIndex = 1;</code>
     * @return The sentenceIndex.
     */
    int getSentenceIndex();

    /**
     * <code>optional uint32 tokenIndex = 2;</code>
     * @return Whether the tokenIndex field is set.
     */
    boolean hasTokenIndex();
    /**
     * <code>optional uint32 tokenIndex = 2;</code>
     * @return The tokenIndex.
     */
    int getTokenIndex();
  }
  /**
   * <pre>
   * The index of a token in a document, including the sentence
   * index and the offset.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.TokenLocation}
   */
  public static final class TokenLocation extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TokenLocation)
      TokenLocationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TokenLocation.newBuilder() to construct.
    private TokenLocation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TokenLocation() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TokenLocation();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokenLocation_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokenLocation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder.class);
    }

    private int bitField0_;
    public static final int SENTENCEINDEX_FIELD_NUMBER = 1;
    private int sentenceIndex_;
    /**
     * <code>optional uint32 sentenceIndex = 1;</code>
     * @return Whether the sentenceIndex field is set.
     */
    @java.lang.Override
    public boolean hasSentenceIndex() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional uint32 sentenceIndex = 1;</code>
     * @return The sentenceIndex.
     */
    @java.lang.Override
    public int getSentenceIndex() {
      return sentenceIndex_;
    }

    public static final int TOKENINDEX_FIELD_NUMBER = 2;
    private int tokenIndex_;
    /**
     * <code>optional uint32 tokenIndex = 2;</code>
     * @return Whether the tokenIndex field is set.
     */
    @java.lang.Override
    public boolean hasTokenIndex() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional uint32 tokenIndex = 2;</code>
     * @return The tokenIndex.
     */
    @java.lang.Override
    public int getTokenIndex() {
      return tokenIndex_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, sentenceIndex_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, tokenIndex_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, sentenceIndex_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, tokenIndex_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation) obj;

      if (hasSentenceIndex() != other.hasSentenceIndex()) return false;
      if (hasSentenceIndex()) {
        if (getSentenceIndex()
            != other.getSentenceIndex()) return false;
      }
      if (hasTokenIndex() != other.hasTokenIndex()) return false;
      if (hasTokenIndex()) {
        if (getTokenIndex()
            != other.getTokenIndex()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSentenceIndex()) {
        hash = (37 * hash) + SENTENCEINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceIndex();
      }
      if (hasTokenIndex()) {
        hash = (37 * hash) + TOKENINDEX_FIELD_NUMBER;
        hash = (53 * hash) + getTokenIndex();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The index of a token in a document, including the sentence
     * index and the offset.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.TokenLocation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TokenLocation)
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokenLocation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokenLocation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sentenceIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        tokenIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokenLocation_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sentenceIndex_ = sentenceIndex_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.tokenIndex_ = tokenIndex_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.getDefaultInstance()) return this;
        if (other.hasSentenceIndex()) {
          setSentenceIndex(other.getSentenceIndex());
        }
        if (other.hasTokenIndex()) {
          setTokenIndex(other.getTokenIndex());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                sentenceIndex_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                tokenIndex_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int sentenceIndex_ ;
      /**
       * <code>optional uint32 sentenceIndex = 1;</code>
       * @return Whether the sentenceIndex field is set.
       */
      @java.lang.Override
      public boolean hasSentenceIndex() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional uint32 sentenceIndex = 1;</code>
       * @return The sentenceIndex.
       */
      @java.lang.Override
      public int getSentenceIndex() {
        return sentenceIndex_;
      }
      /**
       * <code>optional uint32 sentenceIndex = 1;</code>
       * @param value The sentenceIndex to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceIndex(int value) {
        bitField0_ |= 0x00000001;
        sentenceIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 sentenceIndex = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentenceIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sentenceIndex_ = 0;
        onChanged();
        return this;
      }

      private int tokenIndex_ ;
      /**
       * <code>optional uint32 tokenIndex = 2;</code>
       * @return Whether the tokenIndex field is set.
       */
      @java.lang.Override
      public boolean hasTokenIndex() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional uint32 tokenIndex = 2;</code>
       * @return The tokenIndex.
       */
      @java.lang.Override
      public int getTokenIndex() {
        return tokenIndex_;
      }
      /**
       * <code>optional uint32 tokenIndex = 2;</code>
       * @param value The tokenIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTokenIndex(int value) {
        bitField0_ |= 0x00000002;
        tokenIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 tokenIndex = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTokenIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        tokenIndex_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TokenLocation)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TokenLocation)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<TokenLocation>
        PARSER = new com.google.protobuf.AbstractParser<TokenLocation>() {
      @java.lang.Override
      public TokenLocation parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<TokenLocation> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TokenLocation> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RelationTripleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.RelationTriple)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The surface form of the subject
     * </pre>
     *
     * <code>optional string subject = 1;</code>
     * @return Whether the subject field is set.
     */
    boolean hasSubject();
    /**
     * <pre>
     * The surface form of the subject
     * </pre>
     *
     * <code>optional string subject = 1;</code>
     * @return The subject.
     */
    java.lang.String getSubject();
    /**
     * <pre>
     * The surface form of the subject
     * </pre>
     *
     * <code>optional string subject = 1;</code>
     * @return The bytes for subject.
     */
    com.google.protobuf.ByteString
        getSubjectBytes();

    /**
     * <pre>
     * The surface form of the relation (required)
     * </pre>
     *
     * <code>optional string relation = 2;</code>
     * @return Whether the relation field is set.
     */
    boolean hasRelation();
    /**
     * <pre>
     * The surface form of the relation (required)
     * </pre>
     *
     * <code>optional string relation = 2;</code>
     * @return The relation.
     */
    java.lang.String getRelation();
    /**
     * <pre>
     * The surface form of the relation (required)
     * </pre>
     *
     * <code>optional string relation = 2;</code>
     * @return The bytes for relation.
     */
    com.google.protobuf.ByteString
        getRelationBytes();

    /**
     * <pre>
     * The surface form of the object
     * </pre>
     *
     * <code>optional string object = 3;</code>
     * @return Whether the object field is set.
     */
    boolean hasObject();
    /**
     * <pre>
     * The surface form of the object
     * </pre>
     *
     * <code>optional string object = 3;</code>
     * @return The object.
     */
    java.lang.String getObject();
    /**
     * <pre>
     * The surface form of the object
     * </pre>
     *
     * <code>optional string object = 3;</code>
     * @return The bytes for object.
     */
    com.google.protobuf.ByteString
        getObjectBytes();

    /**
     * <pre>
     * The [optional] confidence of the extraction
     * </pre>
     *
     * <code>optional double confidence = 4;</code>
     * @return Whether the confidence field is set.
     */
    boolean hasConfidence();
    /**
     * <pre>
     * The [optional] confidence of the extraction
     * </pre>
     *
     * <code>optional double confidence = 4;</code>
     * @return The confidence.
     */
    double getConfidence();

    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> 
        getSubjectTokensList();
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getSubjectTokens(int index);
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    int getSubjectTokensCount();
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
        getSubjectTokensOrBuilderList();
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getSubjectTokensOrBuilder(
        int index);

    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> 
        getRelationTokensList();
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getRelationTokens(int index);
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    int getRelationTokensCount();
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
        getRelationTokensOrBuilderList();
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getRelationTokensOrBuilder(
        int index);

    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> 
        getObjectTokensList();
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getObjectTokens(int index);
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    int getObjectTokensCount();
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
        getObjectTokensOrBuilderList();
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getObjectTokensOrBuilder(
        int index);

    /**
     * <pre>
     * The dependency graph fragment for this triple
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
     * @return Whether the tree field is set.
     */
    boolean hasTree();
    /**
     * <pre>
     * The dependency graph fragment for this triple
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
     * @return The tree.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getTree();
    /**
     * <pre>
     * The dependency graph fragment for this triple
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getTreeOrBuilder();

    /**
     * <pre>
     * If true, this expresses an implicit tmod relation
     * </pre>
     *
     * <code>optional bool istmod = 9;</code>
     * @return Whether the istmod field is set.
     */
    boolean hasIstmod();
    /**
     * <pre>
     * If true, this expresses an implicit tmod relation
     * </pre>
     *
     * <code>optional bool istmod = 9;</code>
     * @return The istmod.
     */
    boolean getIstmod();

    /**
     * <pre>
     * If true, this relation string is missing a 'be' prefix
     * </pre>
     *
     * <code>optional bool prefixBe = 10;</code>
     * @return Whether the prefixBe field is set.
     */
    boolean hasPrefixBe();
    /**
     * <pre>
     * If true, this relation string is missing a 'be' prefix
     * </pre>
     *
     * <code>optional bool prefixBe = 10;</code>
     * @return The prefixBe.
     */
    boolean getPrefixBe();

    /**
     * <pre>
     * If true, this relation string is missing a 'be' suffix
     * </pre>
     *
     * <code>optional bool suffixBe = 11;</code>
     * @return Whether the suffixBe field is set.
     */
    boolean hasSuffixBe();
    /**
     * <pre>
     * If true, this relation string is missing a 'be' suffix
     * </pre>
     *
     * <code>optional bool suffixBe = 11;</code>
     * @return The suffixBe.
     */
    boolean getSuffixBe();

    /**
     * <pre>
     * If true, this relation string is missing a 'of' prefix
     * </pre>
     *
     * <code>optional bool suffixOf = 12;</code>
     * @return Whether the suffixOf field is set.
     */
    boolean hasSuffixOf();
    /**
     * <pre>
     * If true, this relation string is missing a 'of' prefix
     * </pre>
     *
     * <code>optional bool suffixOf = 12;</code>
     * @return The suffixOf.
     */
    boolean getSuffixOf();
  }
  /**
   * <pre>
   * An OpenIE relation triple.
   * Created by the openie annotator.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.RelationTriple}
   */
  public static final class RelationTriple extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.RelationTriple)
      RelationTripleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RelationTriple.newBuilder() to construct.
    private RelationTriple(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RelationTriple() {
      subject_ = "";
      relation_ = "";
      object_ = "";
      subjectTokens_ = java.util.Collections.emptyList();
      relationTokens_ = java.util.Collections.emptyList();
      objectTokens_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new RelationTriple();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_RelationTriple_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_RelationTriple_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.class, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder.class);
    }

    private int bitField0_;
    public static final int SUBJECT_FIELD_NUMBER = 1;
    private volatile java.lang.Object subject_;
    /**
     * <pre>
     * The surface form of the subject
     * </pre>
     *
     * <code>optional string subject = 1;</code>
     * @return Whether the subject field is set.
     */
    @java.lang.Override
    public boolean hasSubject() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The surface form of the subject
     * </pre>
     *
     * <code>optional string subject = 1;</code>
     * @return The subject.
     */
    @java.lang.Override
    public java.lang.String getSubject() {
      java.lang.Object ref = subject_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          subject_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The surface form of the subject
     * </pre>
     *
     * <code>optional string subject = 1;</code>
     * @return The bytes for subject.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSubjectBytes() {
      java.lang.Object ref = subject_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subject_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RELATION_FIELD_NUMBER = 2;
    private volatile java.lang.Object relation_;
    /**
     * <pre>
     * The surface form of the relation (required)
     * </pre>
     *
     * <code>optional string relation = 2;</code>
     * @return Whether the relation field is set.
     */
    @java.lang.Override
    public boolean hasRelation() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The surface form of the relation (required)
     * </pre>
     *
     * <code>optional string relation = 2;</code>
     * @return The relation.
     */
    @java.lang.Override
    public java.lang.String getRelation() {
      java.lang.Object ref = relation_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          relation_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The surface form of the relation (required)
     * </pre>
     *
     * <code>optional string relation = 2;</code>
     * @return The bytes for relation.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRelationBytes() {
      java.lang.Object ref = relation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        relation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OBJECT_FIELD_NUMBER = 3;
    private volatile java.lang.Object object_;
    /**
     * <pre>
     * The surface form of the object
     * </pre>
     *
     * <code>optional string object = 3;</code>
     * @return Whether the object field is set.
     */
    @java.lang.Override
    public boolean hasObject() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The surface form of the object
     * </pre>
     *
     * <code>optional string object = 3;</code>
     * @return The object.
     */
    @java.lang.Override
    public java.lang.String getObject() {
      java.lang.Object ref = object_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          object_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The surface form of the object
     * </pre>
     *
     * <code>optional string object = 3;</code>
     * @return The bytes for object.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getObjectBytes() {
      java.lang.Object ref = object_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        object_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONFIDENCE_FIELD_NUMBER = 4;
    private double confidence_;
    /**
     * <pre>
     * The [optional] confidence of the extraction
     * </pre>
     *
     * <code>optional double confidence = 4;</code>
     * @return Whether the confidence field is set.
     */
    @java.lang.Override
    public boolean hasConfidence() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The [optional] confidence of the extraction
     * </pre>
     *
     * <code>optional double confidence = 4;</code>
     * @return The confidence.
     */
    @java.lang.Override
    public double getConfidence() {
      return confidence_;
    }

    public static final int SUBJECTTOKENS_FIELD_NUMBER = 13;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> subjectTokens_;
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> getSubjectTokensList() {
      return subjectTokens_;
    }
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
        getSubjectTokensOrBuilderList() {
      return subjectTokens_;
    }
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    @java.lang.Override
    public int getSubjectTokensCount() {
      return subjectTokens_.size();
    }
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getSubjectTokens(int index) {
      return subjectTokens_.get(index);
    }
    /**
     * <pre>
     * The tokens comprising the subject of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getSubjectTokensOrBuilder(
        int index) {
      return subjectTokens_.get(index);
    }

    public static final int RELATIONTOKENS_FIELD_NUMBER = 14;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> relationTokens_;
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> getRelationTokensList() {
      return relationTokens_;
    }
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
        getRelationTokensOrBuilderList() {
      return relationTokens_;
    }
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    @java.lang.Override
    public int getRelationTokensCount() {
      return relationTokens_.size();
    }
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getRelationTokens(int index) {
      return relationTokens_.get(index);
    }
    /**
     * <pre>
     * The tokens comprising the relation of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getRelationTokensOrBuilder(
        int index) {
      return relationTokens_.get(index);
    }

    public static final int OBJECTTOKENS_FIELD_NUMBER = 15;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> objectTokens_;
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> getObjectTokensList() {
      return objectTokens_;
    }
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
        getObjectTokensOrBuilderList() {
      return objectTokens_;
    }
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    @java.lang.Override
    public int getObjectTokensCount() {
      return objectTokens_.size();
    }
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getObjectTokens(int index) {
      return objectTokens_.get(index);
    }
    /**
     * <pre>
     * The tokens comprising the object of the triple
     * </pre>
     *
     * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getObjectTokensOrBuilder(
        int index) {
      return objectTokens_.get(index);
    }

    public static final int TREE_FIELD_NUMBER = 8;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph tree_;
    /**
     * <pre>
     * The dependency graph fragment for this triple
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
     * @return Whether the tree field is set.
     */
    @java.lang.Override
    public boolean hasTree() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * The dependency graph fragment for this triple
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
     * @return The tree.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getTree() {
      return tree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : tree_;
    }
    /**
     * <pre>
     * The dependency graph fragment for this triple
     * </pre>
     *
     * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getTreeOrBuilder() {
      return tree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : tree_;
    }

    public static final int ISTMOD_FIELD_NUMBER = 9;
    private boolean istmod_;
    /**
     * <pre>
     * If true, this expresses an implicit tmod relation
     * </pre>
     *
     * <code>optional bool istmod = 9;</code>
     * @return Whether the istmod field is set.
     */
    @java.lang.Override
    public boolean hasIstmod() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * If true, this expresses an implicit tmod relation
     * </pre>
     *
     * <code>optional bool istmod = 9;</code>
     * @return The istmod.
     */
    @java.lang.Override
    public boolean getIstmod() {
      return istmod_;
    }

    public static final int PREFIXBE_FIELD_NUMBER = 10;
    private boolean prefixBe_;
    /**
     * <pre>
     * If true, this relation string is missing a 'be' prefix
     * </pre>
     *
     * <code>optional bool prefixBe = 10;</code>
     * @return Whether the prefixBe field is set.
     */
    @java.lang.Override
    public boolean hasPrefixBe() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * If true, this relation string is missing a 'be' prefix
     * </pre>
     *
     * <code>optional bool prefixBe = 10;</code>
     * @return The prefixBe.
     */
    @java.lang.Override
    public boolean getPrefixBe() {
      return prefixBe_;
    }

    public static final int SUFFIXBE_FIELD_NUMBER = 11;
    private boolean suffixBe_;
    /**
     * <pre>
     * If true, this relation string is missing a 'be' suffix
     * </pre>
     *
     * <code>optional bool suffixBe = 11;</code>
     * @return Whether the suffixBe field is set.
     */
    @java.lang.Override
    public boolean hasSuffixBe() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * If true, this relation string is missing a 'be' suffix
     * </pre>
     *
     * <code>optional bool suffixBe = 11;</code>
     * @return The suffixBe.
     */
    @java.lang.Override
    public boolean getSuffixBe() {
      return suffixBe_;
    }

    public static final int SUFFIXOF_FIELD_NUMBER = 12;
    private boolean suffixOf_;
    /**
     * <pre>
     * If true, this relation string is missing a 'of' prefix
     * </pre>
     *
     * <code>optional bool suffixOf = 12;</code>
     * @return Whether the suffixOf field is set.
     */
    @java.lang.Override
    public boolean hasSuffixOf() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * If true, this relation string is missing a 'of' prefix
     * </pre>
     *
     * <code>optional bool suffixOf = 12;</code>
     * @return The suffixOf.
     */
    @java.lang.Override
    public boolean getSuffixOf() {
      return suffixOf_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasTree()) {
        if (!getTree().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, subject_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, relation_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, object_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeDouble(4, confidence_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(8, getTree());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(9, istmod_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(10, prefixBe_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBool(11, suffixBe_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeBool(12, suffixOf_);
      }
      for (int i = 0; i < subjectTokens_.size(); i++) {
        output.writeMessage(13, subjectTokens_.get(i));
      }
      for (int i = 0; i < relationTokens_.size(); i++) {
        output.writeMessage(14, relationTokens_.get(i));
      }
      for (int i = 0; i < objectTokens_.size(); i++) {
        output.writeMessage(15, objectTokens_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, subject_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, relation_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, object_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, confidence_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getTree());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, istmod_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, prefixBe_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, suffixBe_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(12, suffixOf_);
      }
      for (int i = 0; i < subjectTokens_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, subjectTokens_.get(i));
      }
      for (int i = 0; i < relationTokens_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, relationTokens_.get(i));
      }
      for (int i = 0; i < objectTokens_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, objectTokens_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple other = (edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple) obj;

      if (hasSubject() != other.hasSubject()) return false;
      if (hasSubject()) {
        if (!getSubject()
            .equals(other.getSubject())) return false;
      }
      if (hasRelation() != other.hasRelation()) return false;
      if (hasRelation()) {
        if (!getRelation()
            .equals(other.getRelation())) return false;
      }
      if (hasObject() != other.hasObject()) return false;
      if (hasObject()) {
        if (!getObject()
            .equals(other.getObject())) return false;
      }
      if (hasConfidence() != other.hasConfidence()) return false;
      if (hasConfidence()) {
        if (java.lang.Double.doubleToLongBits(getConfidence())
            != java.lang.Double.doubleToLongBits(
                other.getConfidence())) return false;
      }
      if (!getSubjectTokensList()
          .equals(other.getSubjectTokensList())) return false;
      if (!getRelationTokensList()
          .equals(other.getRelationTokensList())) return false;
      if (!getObjectTokensList()
          .equals(other.getObjectTokensList())) return false;
      if (hasTree() != other.hasTree()) return false;
      if (hasTree()) {
        if (!getTree()
            .equals(other.getTree())) return false;
      }
      if (hasIstmod() != other.hasIstmod()) return false;
      if (hasIstmod()) {
        if (getIstmod()
            != other.getIstmod()) return false;
      }
      if (hasPrefixBe() != other.hasPrefixBe()) return false;
      if (hasPrefixBe()) {
        if (getPrefixBe()
            != other.getPrefixBe()) return false;
      }
      if (hasSuffixBe() != other.hasSuffixBe()) return false;
      if (hasSuffixBe()) {
        if (getSuffixBe()
            != other.getSuffixBe()) return false;
      }
      if (hasSuffixOf() != other.hasSuffixOf()) return false;
      if (hasSuffixOf()) {
        if (getSuffixOf()
            != other.getSuffixOf()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSubject()) {
        hash = (37 * hash) + SUBJECT_FIELD_NUMBER;
        hash = (53 * hash) + getSubject().hashCode();
      }
      if (hasRelation()) {
        hash = (37 * hash) + RELATION_FIELD_NUMBER;
        hash = (53 * hash) + getRelation().hashCode();
      }
      if (hasObject()) {
        hash = (37 * hash) + OBJECT_FIELD_NUMBER;
        hash = (53 * hash) + getObject().hashCode();
      }
      if (hasConfidence()) {
        hash = (37 * hash) + CONFIDENCE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getConfidence()));
      }
      if (getSubjectTokensCount() > 0) {
        hash = (37 * hash) + SUBJECTTOKENS_FIELD_NUMBER;
        hash = (53 * hash) + getSubjectTokensList().hashCode();
      }
      if (getRelationTokensCount() > 0) {
        hash = (37 * hash) + RELATIONTOKENS_FIELD_NUMBER;
        hash = (53 * hash) + getRelationTokensList().hashCode();
      }
      if (getObjectTokensCount() > 0) {
        hash = (37 * hash) + OBJECTTOKENS_FIELD_NUMBER;
        hash = (53 * hash) + getObjectTokensList().hashCode();
      }
      if (hasTree()) {
        hash = (37 * hash) + TREE_FIELD_NUMBER;
        hash = (53 * hash) + getTree().hashCode();
      }
      if (hasIstmod()) {
        hash = (37 * hash) + ISTMOD_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIstmod());
      }
      if (hasPrefixBe()) {
        hash = (37 * hash) + PREFIXBE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPrefixBe());
      }
      if (hasSuffixBe()) {
        hash = (37 * hash) + SUFFIXBE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSuffixBe());
      }
      if (hasSuffixOf()) {
        hash = (37 * hash) + SUFFIXOF_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSuffixOf());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * An OpenIE relation triple.
     * Created by the openie annotator.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.RelationTriple}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.RelationTriple)
        edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTripleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_RelationTriple_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_RelationTriple_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.class, edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSubjectTokensFieldBuilder();
          getRelationTokensFieldBuilder();
          getObjectTokensFieldBuilder();
          getTreeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        subject_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        relation_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        object_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        confidence_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (subjectTokensBuilder_ == null) {
          subjectTokens_ = java.util.Collections.emptyList();
        } else {
          subjectTokens_ = null;
          subjectTokensBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (relationTokensBuilder_ == null) {
          relationTokens_ = java.util.Collections.emptyList();
        } else {
          relationTokens_ = null;
          relationTokensBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (objectTokensBuilder_ == null) {
          objectTokens_ = java.util.Collections.emptyList();
        } else {
          objectTokens_ = null;
          objectTokensBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (treeBuilder_ == null) {
          tree_ = null;
        } else {
          treeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        istmod_ = false;
        bitField0_ = (bitField0_ & ~0x00000100);
        prefixBe_ = false;
        bitField0_ = (bitField0_ & ~0x00000200);
        suffixBe_ = false;
        bitField0_ = (bitField0_ & ~0x00000400);
        suffixOf_ = false;
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_RelationTriple_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple result = new edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.subject_ = subject_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.relation_ = relation_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.object_ = object_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.confidence_ = confidence_;
          to_bitField0_ |= 0x00000008;
        }
        if (subjectTokensBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            subjectTokens_ = java.util.Collections.unmodifiableList(subjectTokens_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.subjectTokens_ = subjectTokens_;
        } else {
          result.subjectTokens_ = subjectTokensBuilder_.build();
        }
        if (relationTokensBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            relationTokens_ = java.util.Collections.unmodifiableList(relationTokens_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.relationTokens_ = relationTokens_;
        } else {
          result.relationTokens_ = relationTokensBuilder_.build();
        }
        if (objectTokensBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            objectTokens_ = java.util.Collections.unmodifiableList(objectTokens_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.objectTokens_ = objectTokens_;
        } else {
          result.objectTokens_ = objectTokensBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          if (treeBuilder_ == null) {
            result.tree_ = tree_;
          } else {
            result.tree_ = treeBuilder_.build();
          }
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.istmod_ = istmod_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.prefixBe_ = prefixBe_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.suffixBe_ = suffixBe_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.suffixOf_ = suffixOf_;
          to_bitField0_ |= 0x00000100;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple.getDefaultInstance()) return this;
        if (other.hasSubject()) {
          bitField0_ |= 0x00000001;
          subject_ = other.subject_;
          onChanged();
        }
        if (other.hasRelation()) {
          bitField0_ |= 0x00000002;
          relation_ = other.relation_;
          onChanged();
        }
        if (other.hasObject()) {
          bitField0_ |= 0x00000004;
          object_ = other.object_;
          onChanged();
        }
        if (other.hasConfidence()) {
          setConfidence(other.getConfidence());
        }
        if (subjectTokensBuilder_ == null) {
          if (!other.subjectTokens_.isEmpty()) {
            if (subjectTokens_.isEmpty()) {
              subjectTokens_ = other.subjectTokens_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureSubjectTokensIsMutable();
              subjectTokens_.addAll(other.subjectTokens_);
            }
            onChanged();
          }
        } else {
          if (!other.subjectTokens_.isEmpty()) {
            if (subjectTokensBuilder_.isEmpty()) {
              subjectTokensBuilder_.dispose();
              subjectTokensBuilder_ = null;
              subjectTokens_ = other.subjectTokens_;
              bitField0_ = (bitField0_ & ~0x00000010);
              subjectTokensBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSubjectTokensFieldBuilder() : null;
            } else {
              subjectTokensBuilder_.addAllMessages(other.subjectTokens_);
            }
          }
        }
        if (relationTokensBuilder_ == null) {
          if (!other.relationTokens_.isEmpty()) {
            if (relationTokens_.isEmpty()) {
              relationTokens_ = other.relationTokens_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureRelationTokensIsMutable();
              relationTokens_.addAll(other.relationTokens_);
            }
            onChanged();
          }
        } else {
          if (!other.relationTokens_.isEmpty()) {
            if (relationTokensBuilder_.isEmpty()) {
              relationTokensBuilder_.dispose();
              relationTokensBuilder_ = null;
              relationTokens_ = other.relationTokens_;
              bitField0_ = (bitField0_ & ~0x00000020);
              relationTokensBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRelationTokensFieldBuilder() : null;
            } else {
              relationTokensBuilder_.addAllMessages(other.relationTokens_);
            }
          }
        }
        if (objectTokensBuilder_ == null) {
          if (!other.objectTokens_.isEmpty()) {
            if (objectTokens_.isEmpty()) {
              objectTokens_ = other.objectTokens_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureObjectTokensIsMutable();
              objectTokens_.addAll(other.objectTokens_);
            }
            onChanged();
          }
        } else {
          if (!other.objectTokens_.isEmpty()) {
            if (objectTokensBuilder_.isEmpty()) {
              objectTokensBuilder_.dispose();
              objectTokensBuilder_ = null;
              objectTokens_ = other.objectTokens_;
              bitField0_ = (bitField0_ & ~0x00000040);
              objectTokensBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getObjectTokensFieldBuilder() : null;
            } else {
              objectTokensBuilder_.addAllMessages(other.objectTokens_);
            }
          }
        }
        if (other.hasTree()) {
          mergeTree(other.getTree());
        }
        if (other.hasIstmod()) {
          setIstmod(other.getIstmod());
        }
        if (other.hasPrefixBe()) {
          setPrefixBe(other.getPrefixBe());
        }
        if (other.hasSuffixBe()) {
          setSuffixBe(other.getSuffixBe());
        }
        if (other.hasSuffixOf()) {
          setSuffixOf(other.getSuffixOf());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasTree()) {
          if (!getTree().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                subject_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                relation_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                object_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 33: {
                confidence_ = input.readDouble();
                bitField0_ |= 0x00000008;
                break;
              } // case 33
              case 66: {
                input.readMessage(
                    getTreeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 72: {
                istmod_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 80: {
                prefixBe_ = input.readBool();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              case 88: {
                suffixBe_ = input.readBool();
                bitField0_ |= 0x00000400;
                break;
              } // case 88
              case 96: {
                suffixOf_ = input.readBool();
                bitField0_ |= 0x00000800;
                break;
              } // case 96
              case 106: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.PARSER,
                        extensionRegistry);
                if (subjectTokensBuilder_ == null) {
                  ensureSubjectTokensIsMutable();
                  subjectTokens_.add(m);
                } else {
                  subjectTokensBuilder_.addMessage(m);
                }
                break;
              } // case 106
              case 114: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.PARSER,
                        extensionRegistry);
                if (relationTokensBuilder_ == null) {
                  ensureRelationTokensIsMutable();
                  relationTokens_.add(m);
                } else {
                  relationTokensBuilder_.addMessage(m);
                }
                break;
              } // case 114
              case 122: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.PARSER,
                        extensionRegistry);
                if (objectTokensBuilder_ == null) {
                  ensureObjectTokensIsMutable();
                  objectTokens_.add(m);
                } else {
                  objectTokensBuilder_.addMessage(m);
                }
                break;
              } // case 122
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object subject_ = "";
      /**
       * <pre>
       * The surface form of the subject
       * </pre>
       *
       * <code>optional string subject = 1;</code>
       * @return Whether the subject field is set.
       */
      public boolean hasSubject() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The surface form of the subject
       * </pre>
       *
       * <code>optional string subject = 1;</code>
       * @return The subject.
       */
      public java.lang.String getSubject() {
        java.lang.Object ref = subject_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            subject_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The surface form of the subject
       * </pre>
       *
       * <code>optional string subject = 1;</code>
       * @return The bytes for subject.
       */
      public com.google.protobuf.ByteString
          getSubjectBytes() {
        java.lang.Object ref = subject_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subject_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The surface form of the subject
       * </pre>
       *
       * <code>optional string subject = 1;</code>
       * @param value The subject to set.
       * @return This builder for chaining.
       */
      public Builder setSubject(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        subject_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The surface form of the subject
       * </pre>
       *
       * <code>optional string subject = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubject() {
        bitField0_ = (bitField0_ & ~0x00000001);
        subject_ = getDefaultInstance().getSubject();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The surface form of the subject
       * </pre>
       *
       * <code>optional string subject = 1;</code>
       * @param value The bytes for subject to set.
       * @return This builder for chaining.
       */
      public Builder setSubjectBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        subject_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object relation_ = "";
      /**
       * <pre>
       * The surface form of the relation (required)
       * </pre>
       *
       * <code>optional string relation = 2;</code>
       * @return Whether the relation field is set.
       */
      public boolean hasRelation() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The surface form of the relation (required)
       * </pre>
       *
       * <code>optional string relation = 2;</code>
       * @return The relation.
       */
      public java.lang.String getRelation() {
        java.lang.Object ref = relation_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            relation_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The surface form of the relation (required)
       * </pre>
       *
       * <code>optional string relation = 2;</code>
       * @return The bytes for relation.
       */
      public com.google.protobuf.ByteString
          getRelationBytes() {
        java.lang.Object ref = relation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          relation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The surface form of the relation (required)
       * </pre>
       *
       * <code>optional string relation = 2;</code>
       * @param value The relation to set.
       * @return This builder for chaining.
       */
      public Builder setRelation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        relation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The surface form of the relation (required)
       * </pre>
       *
       * <code>optional string relation = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRelation() {
        bitField0_ = (bitField0_ & ~0x00000002);
        relation_ = getDefaultInstance().getRelation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The surface form of the relation (required)
       * </pre>
       *
       * <code>optional string relation = 2;</code>
       * @param value The bytes for relation to set.
       * @return This builder for chaining.
       */
      public Builder setRelationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        relation_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object object_ = "";
      /**
       * <pre>
       * The surface form of the object
       * </pre>
       *
       * <code>optional string object = 3;</code>
       * @return Whether the object field is set.
       */
      public boolean hasObject() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The surface form of the object
       * </pre>
       *
       * <code>optional string object = 3;</code>
       * @return The object.
       */
      public java.lang.String getObject() {
        java.lang.Object ref = object_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            object_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The surface form of the object
       * </pre>
       *
       * <code>optional string object = 3;</code>
       * @return The bytes for object.
       */
      public com.google.protobuf.ByteString
          getObjectBytes() {
        java.lang.Object ref = object_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          object_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The surface form of the object
       * </pre>
       *
       * <code>optional string object = 3;</code>
       * @param value The object to set.
       * @return This builder for chaining.
       */
      public Builder setObject(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        object_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The surface form of the object
       * </pre>
       *
       * <code>optional string object = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearObject() {
        bitField0_ = (bitField0_ & ~0x00000004);
        object_ = getDefaultInstance().getObject();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The surface form of the object
       * </pre>
       *
       * <code>optional string object = 3;</code>
       * @param value The bytes for object to set.
       * @return This builder for chaining.
       */
      public Builder setObjectBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        object_ = value;
        onChanged();
        return this;
      }

      private double confidence_ ;
      /**
       * <pre>
       * The [optional] confidence of the extraction
       * </pre>
       *
       * <code>optional double confidence = 4;</code>
       * @return Whether the confidence field is set.
       */
      @java.lang.Override
      public boolean hasConfidence() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The [optional] confidence of the extraction
       * </pre>
       *
       * <code>optional double confidence = 4;</code>
       * @return The confidence.
       */
      @java.lang.Override
      public double getConfidence() {
        return confidence_;
      }
      /**
       * <pre>
       * The [optional] confidence of the extraction
       * </pre>
       *
       * <code>optional double confidence = 4;</code>
       * @param value The confidence to set.
       * @return This builder for chaining.
       */
      public Builder setConfidence(double value) {
        bitField0_ |= 0x00000008;
        confidence_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The [optional] confidence of the extraction
       * </pre>
       *
       * <code>optional double confidence = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearConfidence() {
        bitField0_ = (bitField0_ & ~0x00000008);
        confidence_ = 0D;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> subjectTokens_ =
        java.util.Collections.emptyList();
      private void ensureSubjectTokensIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          subjectTokens_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation>(subjectTokens_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> subjectTokensBuilder_;

      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> getSubjectTokensList() {
        if (subjectTokensBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subjectTokens_);
        } else {
          return subjectTokensBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public int getSubjectTokensCount() {
        if (subjectTokensBuilder_ == null) {
          return subjectTokens_.size();
        } else {
          return subjectTokensBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getSubjectTokens(int index) {
        if (subjectTokensBuilder_ == null) {
          return subjectTokens_.get(index);
        } else {
          return subjectTokensBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder setSubjectTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (subjectTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectTokensIsMutable();
          subjectTokens_.set(index, value);
          onChanged();
        } else {
          subjectTokensBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder setSubjectTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (subjectTokensBuilder_ == null) {
          ensureSubjectTokensIsMutable();
          subjectTokens_.set(index, builderForValue.build());
          onChanged();
        } else {
          subjectTokensBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder addSubjectTokens(edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (subjectTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectTokensIsMutable();
          subjectTokens_.add(value);
          onChanged();
        } else {
          subjectTokensBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder addSubjectTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (subjectTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectTokensIsMutable();
          subjectTokens_.add(index, value);
          onChanged();
        } else {
          subjectTokensBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder addSubjectTokens(
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (subjectTokensBuilder_ == null) {
          ensureSubjectTokensIsMutable();
          subjectTokens_.add(builderForValue.build());
          onChanged();
        } else {
          subjectTokensBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder addSubjectTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (subjectTokensBuilder_ == null) {
          ensureSubjectTokensIsMutable();
          subjectTokens_.add(index, builderForValue.build());
          onChanged();
        } else {
          subjectTokensBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder addAllSubjectTokens(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> values) {
        if (subjectTokensBuilder_ == null) {
          ensureSubjectTokensIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, subjectTokens_);
          onChanged();
        } else {
          subjectTokensBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder clearSubjectTokens() {
        if (subjectTokensBuilder_ == null) {
          subjectTokens_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          subjectTokensBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public Builder removeSubjectTokens(int index) {
        if (subjectTokensBuilder_ == null) {
          ensureSubjectTokensIsMutable();
          subjectTokens_.remove(index);
          onChanged();
        } else {
          subjectTokensBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder getSubjectTokensBuilder(
          int index) {
        return getSubjectTokensFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getSubjectTokensOrBuilder(
          int index) {
        if (subjectTokensBuilder_ == null) {
          return subjectTokens_.get(index);  } else {
          return subjectTokensBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
           getSubjectTokensOrBuilderList() {
        if (subjectTokensBuilder_ != null) {
          return subjectTokensBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subjectTokens_);
        }
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder addSubjectTokensBuilder() {
        return getSubjectTokensFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.getDefaultInstance());
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder addSubjectTokensBuilder(
          int index) {
        return getSubjectTokensFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.getDefaultInstance());
      }
      /**
       * <pre>
       * The tokens comprising the subject of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation subjectTokens = 13;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder> 
           getSubjectTokensBuilderList() {
        return getSubjectTokensFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
          getSubjectTokensFieldBuilder() {
        if (subjectTokensBuilder_ == null) {
          subjectTokensBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder>(
                  subjectTokens_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          subjectTokens_ = null;
        }
        return subjectTokensBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> relationTokens_ =
        java.util.Collections.emptyList();
      private void ensureRelationTokensIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          relationTokens_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation>(relationTokens_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> relationTokensBuilder_;

      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> getRelationTokensList() {
        if (relationTokensBuilder_ == null) {
          return java.util.Collections.unmodifiableList(relationTokens_);
        } else {
          return relationTokensBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public int getRelationTokensCount() {
        if (relationTokensBuilder_ == null) {
          return relationTokens_.size();
        } else {
          return relationTokensBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getRelationTokens(int index) {
        if (relationTokensBuilder_ == null) {
          return relationTokens_.get(index);
        } else {
          return relationTokensBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder setRelationTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (relationTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRelationTokensIsMutable();
          relationTokens_.set(index, value);
          onChanged();
        } else {
          relationTokensBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder setRelationTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (relationTokensBuilder_ == null) {
          ensureRelationTokensIsMutable();
          relationTokens_.set(index, builderForValue.build());
          onChanged();
        } else {
          relationTokensBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder addRelationTokens(edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (relationTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRelationTokensIsMutable();
          relationTokens_.add(value);
          onChanged();
        } else {
          relationTokensBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder addRelationTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (relationTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRelationTokensIsMutable();
          relationTokens_.add(index, value);
          onChanged();
        } else {
          relationTokensBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder addRelationTokens(
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (relationTokensBuilder_ == null) {
          ensureRelationTokensIsMutable();
          relationTokens_.add(builderForValue.build());
          onChanged();
        } else {
          relationTokensBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder addRelationTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (relationTokensBuilder_ == null) {
          ensureRelationTokensIsMutable();
          relationTokens_.add(index, builderForValue.build());
          onChanged();
        } else {
          relationTokensBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder addAllRelationTokens(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> values) {
        if (relationTokensBuilder_ == null) {
          ensureRelationTokensIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, relationTokens_);
          onChanged();
        } else {
          relationTokensBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder clearRelationTokens() {
        if (relationTokensBuilder_ == null) {
          relationTokens_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          relationTokensBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public Builder removeRelationTokens(int index) {
        if (relationTokensBuilder_ == null) {
          ensureRelationTokensIsMutable();
          relationTokens_.remove(index);
          onChanged();
        } else {
          relationTokensBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder getRelationTokensBuilder(
          int index) {
        return getRelationTokensFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getRelationTokensOrBuilder(
          int index) {
        if (relationTokensBuilder_ == null) {
          return relationTokens_.get(index);  } else {
          return relationTokensBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
           getRelationTokensOrBuilderList() {
        if (relationTokensBuilder_ != null) {
          return relationTokensBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(relationTokens_);
        }
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder addRelationTokensBuilder() {
        return getRelationTokensFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.getDefaultInstance());
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder addRelationTokensBuilder(
          int index) {
        return getRelationTokensFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.getDefaultInstance());
      }
      /**
       * <pre>
       * The tokens comprising the relation of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation relationTokens = 14;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder> 
           getRelationTokensBuilderList() {
        return getRelationTokensFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
          getRelationTokensFieldBuilder() {
        if (relationTokensBuilder_ == null) {
          relationTokensBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder>(
                  relationTokens_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          relationTokens_ = null;
        }
        return relationTokensBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> objectTokens_ =
        java.util.Collections.emptyList();
      private void ensureObjectTokensIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          objectTokens_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation>(objectTokens_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> objectTokensBuilder_;

      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> getObjectTokensList() {
        if (objectTokensBuilder_ == null) {
          return java.util.Collections.unmodifiableList(objectTokens_);
        } else {
          return objectTokensBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public int getObjectTokensCount() {
        if (objectTokensBuilder_ == null) {
          return objectTokens_.size();
        } else {
          return objectTokensBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation getObjectTokens(int index) {
        if (objectTokensBuilder_ == null) {
          return objectTokens_.get(index);
        } else {
          return objectTokensBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder setObjectTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (objectTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectTokensIsMutable();
          objectTokens_.set(index, value);
          onChanged();
        } else {
          objectTokensBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder setObjectTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (objectTokensBuilder_ == null) {
          ensureObjectTokensIsMutable();
          objectTokens_.set(index, builderForValue.build());
          onChanged();
        } else {
          objectTokensBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder addObjectTokens(edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (objectTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectTokensIsMutable();
          objectTokens_.add(value);
          onChanged();
        } else {
          objectTokensBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder addObjectTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation value) {
        if (objectTokensBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectTokensIsMutable();
          objectTokens_.add(index, value);
          onChanged();
        } else {
          objectTokensBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder addObjectTokens(
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (objectTokensBuilder_ == null) {
          ensureObjectTokensIsMutable();
          objectTokens_.add(builderForValue.build());
          onChanged();
        } else {
          objectTokensBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder addObjectTokens(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder builderForValue) {
        if (objectTokensBuilder_ == null) {
          ensureObjectTokensIsMutable();
          objectTokens_.add(index, builderForValue.build());
          onChanged();
        } else {
          objectTokensBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder addAllObjectTokens(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation> values) {
        if (objectTokensBuilder_ == null) {
          ensureObjectTokensIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, objectTokens_);
          onChanged();
        } else {
          objectTokensBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder clearObjectTokens() {
        if (objectTokensBuilder_ == null) {
          objectTokens_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          objectTokensBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public Builder removeObjectTokens(int index) {
        if (objectTokensBuilder_ == null) {
          ensureObjectTokensIsMutable();
          objectTokens_.remove(index);
          onChanged();
        } else {
          objectTokensBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder getObjectTokensBuilder(
          int index) {
        return getObjectTokensFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder getObjectTokensOrBuilder(
          int index) {
        if (objectTokensBuilder_ == null) {
          return objectTokens_.get(index);  } else {
          return objectTokensBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
           getObjectTokensOrBuilderList() {
        if (objectTokensBuilder_ != null) {
          return objectTokensBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(objectTokens_);
        }
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder addObjectTokensBuilder() {
        return getObjectTokensFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.getDefaultInstance());
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder addObjectTokensBuilder(
          int index) {
        return getObjectTokensFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.getDefaultInstance());
      }
      /**
       * <pre>
       * The tokens comprising the object of the triple
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.TokenLocation objectTokens = 15;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder> 
           getObjectTokensBuilderList() {
        return getObjectTokensFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder> 
          getObjectTokensFieldBuilder() {
        if (objectTokensBuilder_ == null) {
          objectTokensBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenLocationOrBuilder>(
                  objectTokens_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          objectTokens_ = null;
        }
        return objectTokensBuilder_;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph tree_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> treeBuilder_;
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       * @return Whether the tree field is set.
       */
      public boolean hasTree() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       * @return The tree.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getTree() {
        if (treeBuilder_ == null) {
          return tree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : tree_;
        } else {
          return treeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       */
      public Builder setTree(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (treeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tree_ = value;
          onChanged();
        } else {
          treeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       */
      public Builder setTree(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (treeBuilder_ == null) {
          tree_ = builderForValue.build();
          onChanged();
        } else {
          treeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       */
      public Builder mergeTree(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (treeBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
              tree_ != null &&
              tree_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
            tree_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(tree_).mergeFrom(value).buildPartial();
          } else {
            tree_ = value;
          }
          onChanged();
        } else {
          treeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       */
      public Builder clearTree() {
        if (treeBuilder_ == null) {
          tree_ = null;
          onChanged();
        } else {
          treeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getTreeBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getTreeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getTreeOrBuilder() {
        if (treeBuilder_ != null) {
          return treeBuilder_.getMessageOrBuilder();
        } else {
          return tree_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : tree_;
        }
      }
      /**
       * <pre>
       * The dependency graph fragment for this triple
       * </pre>
       *
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph tree = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getTreeFieldBuilder() {
        if (treeBuilder_ == null) {
          treeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  getTree(),
                  getParentForChildren(),
                  isClean());
          tree_ = null;
        }
        return treeBuilder_;
      }

      private boolean istmod_ ;
      /**
       * <pre>
       * If true, this expresses an implicit tmod relation
       * </pre>
       *
       * <code>optional bool istmod = 9;</code>
       * @return Whether the istmod field is set.
       */
      @java.lang.Override
      public boolean hasIstmod() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * If true, this expresses an implicit tmod relation
       * </pre>
       *
       * <code>optional bool istmod = 9;</code>
       * @return The istmod.
       */
      @java.lang.Override
      public boolean getIstmod() {
        return istmod_;
      }
      /**
       * <pre>
       * If true, this expresses an implicit tmod relation
       * </pre>
       *
       * <code>optional bool istmod = 9;</code>
       * @param value The istmod to set.
       * @return This builder for chaining.
       */
      public Builder setIstmod(boolean value) {
        bitField0_ |= 0x00000100;
        istmod_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, this expresses an implicit tmod relation
       * </pre>
       *
       * <code>optional bool istmod = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearIstmod() {
        bitField0_ = (bitField0_ & ~0x00000100);
        istmod_ = false;
        onChanged();
        return this;
      }

      private boolean prefixBe_ ;
      /**
       * <pre>
       * If true, this relation string is missing a 'be' prefix
       * </pre>
       *
       * <code>optional bool prefixBe = 10;</code>
       * @return Whether the prefixBe field is set.
       */
      @java.lang.Override
      public boolean hasPrefixBe() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'be' prefix
       * </pre>
       *
       * <code>optional bool prefixBe = 10;</code>
       * @return The prefixBe.
       */
      @java.lang.Override
      public boolean getPrefixBe() {
        return prefixBe_;
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'be' prefix
       * </pre>
       *
       * <code>optional bool prefixBe = 10;</code>
       * @param value The prefixBe to set.
       * @return This builder for chaining.
       */
      public Builder setPrefixBe(boolean value) {
        bitField0_ |= 0x00000200;
        prefixBe_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'be' prefix
       * </pre>
       *
       * <code>optional bool prefixBe = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearPrefixBe() {
        bitField0_ = (bitField0_ & ~0x00000200);
        prefixBe_ = false;
        onChanged();
        return this;
      }

      private boolean suffixBe_ ;
      /**
       * <pre>
       * If true, this relation string is missing a 'be' suffix
       * </pre>
       *
       * <code>optional bool suffixBe = 11;</code>
       * @return Whether the suffixBe field is set.
       */
      @java.lang.Override
      public boolean hasSuffixBe() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'be' suffix
       * </pre>
       *
       * <code>optional bool suffixBe = 11;</code>
       * @return The suffixBe.
       */
      @java.lang.Override
      public boolean getSuffixBe() {
        return suffixBe_;
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'be' suffix
       * </pre>
       *
       * <code>optional bool suffixBe = 11;</code>
       * @param value The suffixBe to set.
       * @return This builder for chaining.
       */
      public Builder setSuffixBe(boolean value) {
        bitField0_ |= 0x00000400;
        suffixBe_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'be' suffix
       * </pre>
       *
       * <code>optional bool suffixBe = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuffixBe() {
        bitField0_ = (bitField0_ & ~0x00000400);
        suffixBe_ = false;
        onChanged();
        return this;
      }

      private boolean suffixOf_ ;
      /**
       * <pre>
       * If true, this relation string is missing a 'of' prefix
       * </pre>
       *
       * <code>optional bool suffixOf = 12;</code>
       * @return Whether the suffixOf field is set.
       */
      @java.lang.Override
      public boolean hasSuffixOf() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'of' prefix
       * </pre>
       *
       * <code>optional bool suffixOf = 12;</code>
       * @return The suffixOf.
       */
      @java.lang.Override
      public boolean getSuffixOf() {
        return suffixOf_;
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'of' prefix
       * </pre>
       *
       * <code>optional bool suffixOf = 12;</code>
       * @param value The suffixOf to set.
       * @return This builder for chaining.
       */
      public Builder setSuffixOf(boolean value) {
        bitField0_ |= 0x00000800;
        suffixOf_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, this relation string is missing a 'of' prefix
       * </pre>
       *
       * <code>optional bool suffixOf = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuffixOf() {
        bitField0_ = (bitField0_ & ~0x00000800);
        suffixOf_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.RelationTriple)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.RelationTriple)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<RelationTriple>
        PARSER = new com.google.protobuf.AbstractParser<RelationTriple>() {
      @java.lang.Override
      public RelationTriple parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<RelationTriple> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RelationTriple> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.RelationTriple getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MapStringStringOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.MapStringString)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string key = 1;</code>
     * @return A list containing the key.
     */
    java.util.List<java.lang.String>
        getKeyList();
    /**
     * <code>repeated string key = 1;</code>
     * @return The count of key.
     */
    int getKeyCount();
    /**
     * <code>repeated string key = 1;</code>
     * @param index The index of the element to return.
     * @return The key at the given index.
     */
    java.lang.String getKey(int index);
    /**
     * <code>repeated string key = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the key at the given index.
     */
    com.google.protobuf.ByteString
        getKeyBytes(int index);

    /**
     * <code>repeated string value = 2;</code>
     * @return A list containing the value.
     */
    java.util.List<java.lang.String>
        getValueList();
    /**
     * <code>repeated string value = 2;</code>
     * @return The count of value.
     */
    int getValueCount();
    /**
     * <code>repeated string value = 2;</code>
     * @param index The index of the element to return.
     * @return The value at the given index.
     */
    java.lang.String getValue(int index);
    /**
     * <code>repeated string value = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the value at the given index.
     */
    com.google.protobuf.ByteString
        getValueBytes(int index);
  }
  /**
   * <pre>
   * A map from strings to strings.
   * Used, minimally, in the CoNLLU featurizer
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.MapStringString}
   */
  public static final class MapStringString extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.MapStringString)
      MapStringStringOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MapStringString.newBuilder() to construct.
    private MapStringString(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MapStringString() {
      key_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MapStringString();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapStringString_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapStringString_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder.class);
    }

    public static final int KEY_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList key_;
    /**
     * <code>repeated string key = 1;</code>
     * @return A list containing the key.
     */
    public com.google.protobuf.ProtocolStringList
        getKeyList() {
      return key_;
    }
    /**
     * <code>repeated string key = 1;</code>
     * @return The count of key.
     */
    public int getKeyCount() {
      return key_.size();
    }
    /**
     * <code>repeated string key = 1;</code>
     * @param index The index of the element to return.
     * @return The key at the given index.
     */
    public java.lang.String getKey(int index) {
      return key_.get(index);
    }
    /**
     * <code>repeated string key = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the key at the given index.
     */
    public com.google.protobuf.ByteString
        getKeyBytes(int index) {
      return key_.getByteString(index);
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList value_;
    /**
     * <code>repeated string value = 2;</code>
     * @return A list containing the value.
     */
    public com.google.protobuf.ProtocolStringList
        getValueList() {
      return value_;
    }
    /**
     * <code>repeated string value = 2;</code>
     * @return The count of value.
     */
    public int getValueCount() {
      return value_.size();
    }
    /**
     * <code>repeated string value = 2;</code>
     * @param index The index of the element to return.
     * @return The value at the given index.
     */
    public java.lang.String getValue(int index) {
      return value_.get(index);
    }
    /**
     * <code>repeated string value = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the value at the given index.
     */
    public com.google.protobuf.ByteString
        getValueBytes(int index) {
      return value_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < key_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_.getRaw(i));
      }
      for (int i = 0; i < value_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < key_.size(); i++) {
          dataSize += computeStringSizeNoTag(key_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getKeyList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < value_.size(); i++) {
          dataSize += computeStringSizeNoTag(value_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValueList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString other = (edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString) obj;

      if (!getKeyList()
          .equals(other.getKeyList())) return false;
      if (!getValueList()
          .equals(other.getValueList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getKeyCount() > 0) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKeyList().hashCode();
      }
      if (getValueCount() > 0) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValueList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A map from strings to strings.
     * Used, minimally, in the CoNLLU featurizer
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.MapStringString}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.MapStringString)
        edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringStringOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapStringString_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapStringString_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        key_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapStringString_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString result = new edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          key_ = key_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.key_ = key_;
        if (((bitField0_ & 0x00000002) != 0)) {
          value_ = value_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.value_ = value_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString.getDefaultInstance()) return this;
        if (!other.key_.isEmpty()) {
          if (key_.isEmpty()) {
            key_ = other.key_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureKeyIsMutable();
            key_.addAll(other.key_);
          }
          onChanged();
        }
        if (!other.value_.isEmpty()) {
          if (value_.isEmpty()) {
            value_ = other.value_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureValueIsMutable();
            value_.addAll(other.value_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureKeyIsMutable();
                key_.add(bs);
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureValueIsMutable();
                value_.add(bs);
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList key_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureKeyIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          key_ = new com.google.protobuf.LazyStringArrayList(key_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string key = 1;</code>
       * @return A list containing the key.
       */
      public com.google.protobuf.ProtocolStringList
          getKeyList() {
        return key_.getUnmodifiableView();
      }
      /**
       * <code>repeated string key = 1;</code>
       * @return The count of key.
       */
      public int getKeyCount() {
        return key_.size();
      }
      /**
       * <code>repeated string key = 1;</code>
       * @param index The index of the element to return.
       * @return The key at the given index.
       */
      public java.lang.String getKey(int index) {
        return key_.get(index);
      }
      /**
       * <code>repeated string key = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the key at the given index.
       */
      public com.google.protobuf.ByteString
          getKeyBytes(int index) {
        return key_.getByteString(index);
      }
      /**
       * <code>repeated string key = 1;</code>
       * @param index The index to set the value at.
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureKeyIsMutable();
        key_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string key = 1;</code>
       * @param value The key to add.
       * @return This builder for chaining.
       */
      public Builder addKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureKeyIsMutable();
        key_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string key = 1;</code>
       * @param values The key to add.
       * @return This builder for chaining.
       */
      public Builder addAllKey(
          java.lang.Iterable<java.lang.String> values) {
        ensureKeyIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, key_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string key = 1;</code>
       * @param value The bytes of the key to add.
       * @return This builder for chaining.
       */
      public Builder addKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureKeyIsMutable();
        key_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureValueIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          value_ = new com.google.protobuf.LazyStringArrayList(value_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string value = 2;</code>
       * @return A list containing the value.
       */
      public com.google.protobuf.ProtocolStringList
          getValueList() {
        return value_.getUnmodifiableView();
      }
      /**
       * <code>repeated string value = 2;</code>
       * @return The count of value.
       */
      public int getValueCount() {
        return value_.size();
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param index The index of the element to return.
       * @return The value at the given index.
       */
      public java.lang.String getValue(int index) {
        return value_.get(index);
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the value at the given index.
       */
      public com.google.protobuf.ByteString
          getValueBytes(int index) {
        return value_.getByteString(index);
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param index The index to set the value at.
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param value The value to add.
       * @return This builder for chaining.
       */
      public Builder addValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param values The value to add.
       * @return This builder for chaining.
       */
      public Builder addAllValue(
          java.lang.Iterable<java.lang.String> values) {
        ensureValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, value_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param value The bytes of the value to add.
       * @return This builder for chaining.
       */
      public Builder addValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.MapStringString)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.MapStringString)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<MapStringString>
        PARSER = new com.google.protobuf.AbstractParser<MapStringString>() {
      @java.lang.Override
      public MapStringString parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<MapStringString> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MapStringString> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MapStringString getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MapIntStringOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.MapIntString)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated uint32 key = 1;</code>
     * @return A list containing the key.
     */
    java.util.List<java.lang.Integer> getKeyList();
    /**
     * <code>repeated uint32 key = 1;</code>
     * @return The count of key.
     */
    int getKeyCount();
    /**
     * <code>repeated uint32 key = 1;</code>
     * @param index The index of the element to return.
     * @return The key at the given index.
     */
    int getKey(int index);

    /**
     * <code>repeated string value = 2;</code>
     * @return A list containing the value.
     */
    java.util.List<java.lang.String>
        getValueList();
    /**
     * <code>repeated string value = 2;</code>
     * @return The count of value.
     */
    int getValueCount();
    /**
     * <code>repeated string value = 2;</code>
     * @param index The index of the element to return.
     * @return The value at the given index.
     */
    java.lang.String getValue(int index);
    /**
     * <code>repeated string value = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the value at the given index.
     */
    com.google.protobuf.ByteString
        getValueBytes(int index);
  }
  /**
   * <pre>
   * A map from integers to strings.
   * Used, minimally, in the CoNLLU featurizer
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.MapIntString}
   */
  public static final class MapIntString extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.MapIntString)
      MapIntStringOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MapIntString.newBuilder() to construct.
    private MapIntString(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MapIntString() {
      key_ = emptyIntList();
      value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MapIntString();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapIntString_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapIntString_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString.Builder.class);
    }

    public static final int KEY_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList key_;
    /**
     * <code>repeated uint32 key = 1;</code>
     * @return A list containing the key.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getKeyList() {
      return key_;
    }
    /**
     * <code>repeated uint32 key = 1;</code>
     * @return The count of key.
     */
    public int getKeyCount() {
      return key_.size();
    }
    /**
     * <code>repeated uint32 key = 1;</code>
     * @param index The index of the element to return.
     * @return The key at the given index.
     */
    public int getKey(int index) {
      return key_.getInt(index);
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList value_;
    /**
     * <code>repeated string value = 2;</code>
     * @return A list containing the value.
     */
    public com.google.protobuf.ProtocolStringList
        getValueList() {
      return value_;
    }
    /**
     * <code>repeated string value = 2;</code>
     * @return The count of value.
     */
    public int getValueCount() {
      return value_.size();
    }
    /**
     * <code>repeated string value = 2;</code>
     * @param index The index of the element to return.
     * @return The value at the given index.
     */
    public java.lang.String getValue(int index) {
      return value_.get(index);
    }
    /**
     * <code>repeated string value = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the value at the given index.
     */
    public com.google.protobuf.ByteString
        getValueBytes(int index) {
      return value_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < key_.size(); i++) {
        output.writeUInt32(1, key_.getInt(i));
      }
      for (int i = 0; i < value_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < key_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(key_.getInt(i));
        }
        size += dataSize;
        size += 1 * getKeyList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < value_.size(); i++) {
          dataSize += computeStringSizeNoTag(value_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValueList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString other = (edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString) obj;

      if (!getKeyList()
          .equals(other.getKeyList())) return false;
      if (!getValueList()
          .equals(other.getValueList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getKeyCount() > 0) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKeyList().hashCode();
      }
      if (getValueCount() > 0) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValueList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A map from integers to strings.
     * Used, minimally, in the CoNLLU featurizer
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.MapIntString}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.MapIntString)
        edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntStringOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapIntString_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapIntString_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        key_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MapIntString_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString result = new edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          key_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.key_ = key_;
        if (((bitField0_ & 0x00000002) != 0)) {
          value_ = value_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.value_ = value_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString.getDefaultInstance()) return this;
        if (!other.key_.isEmpty()) {
          if (key_.isEmpty()) {
            key_ = other.key_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureKeyIsMutable();
            key_.addAll(other.key_);
          }
          onChanged();
        }
        if (!other.value_.isEmpty()) {
          if (value_.isEmpty()) {
            value_ = other.value_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureValueIsMutable();
            value_.addAll(other.value_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int v = input.readUInt32();
                ensureKeyIsMutable();
                key_.addInt(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureKeyIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  key_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureValueIsMutable();
                value_.add(bs);
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList key_ = emptyIntList();
      private void ensureKeyIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          key_ = mutableCopy(key_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated uint32 key = 1;</code>
       * @return A list containing the key.
       */
      public java.util.List<java.lang.Integer>
          getKeyList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(key_) : key_;
      }
      /**
       * <code>repeated uint32 key = 1;</code>
       * @return The count of key.
       */
      public int getKeyCount() {
        return key_.size();
      }
      /**
       * <code>repeated uint32 key = 1;</code>
       * @param index The index of the element to return.
       * @return The key at the given index.
       */
      public int getKey(int index) {
        return key_.getInt(index);
      }
      /**
       * <code>repeated uint32 key = 1;</code>
       * @param index The index to set the value at.
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          int index, int value) {
        ensureKeyIsMutable();
        key_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 key = 1;</code>
       * @param value The key to add.
       * @return This builder for chaining.
       */
      public Builder addKey(int value) {
        ensureKeyIsMutable();
        key_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 key = 1;</code>
       * @param values The key to add.
       * @return This builder for chaining.
       */
      public Builder addAllKey(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureKeyIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, key_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureValueIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          value_ = new com.google.protobuf.LazyStringArrayList(value_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string value = 2;</code>
       * @return A list containing the value.
       */
      public com.google.protobuf.ProtocolStringList
          getValueList() {
        return value_.getUnmodifiableView();
      }
      /**
       * <code>repeated string value = 2;</code>
       * @return The count of value.
       */
      public int getValueCount() {
        return value_.size();
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param index The index of the element to return.
       * @return The value at the given index.
       */
      public java.lang.String getValue(int index) {
        return value_.get(index);
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the value at the given index.
       */
      public com.google.protobuf.ByteString
          getValueBytes(int index) {
        return value_.getByteString(index);
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param index The index to set the value at.
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param value The value to add.
       * @return This builder for chaining.
       */
      public Builder addValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param values The value to add.
       * @return This builder for chaining.
       */
      public Builder addAllValue(
          java.lang.Iterable<java.lang.String> values) {
        ensureValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, value_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       * @param value The bytes of the value to add.
       * @return This builder for chaining.
       */
      public Builder addValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.MapIntString)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.MapIntString)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<MapIntString>
        PARSER = new com.google.protobuf.AbstractParser<MapIntString>() {
      @java.lang.Override
      public MapIntString parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<MapIntString> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MapIntString> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MapIntString getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.Section)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required uint32 charBegin = 1;</code>
     * @return Whether the charBegin field is set.
     */
    boolean hasCharBegin();
    /**
     * <code>required uint32 charBegin = 1;</code>
     * @return The charBegin.
     */
    int getCharBegin();

    /**
     * <code>required uint32 charEnd = 2;</code>
     * @return Whether the charEnd field is set.
     */
    boolean hasCharEnd();
    /**
     * <code>required uint32 charEnd = 2;</code>
     * @return The charEnd.
     */
    int getCharEnd();

    /**
     * <code>optional string author = 3;</code>
     * @return Whether the author field is set.
     */
    boolean hasAuthor();
    /**
     * <code>optional string author = 3;</code>
     * @return The author.
     */
    java.lang.String getAuthor();
    /**
     * <code>optional string author = 3;</code>
     * @return The bytes for author.
     */
    com.google.protobuf.ByteString
        getAuthorBytes();

    /**
     * <code>repeated uint32 sentenceIndexes = 4;</code>
     * @return A list containing the sentenceIndexes.
     */
    java.util.List<java.lang.Integer> getSentenceIndexesList();
    /**
     * <code>repeated uint32 sentenceIndexes = 4;</code>
     * @return The count of sentenceIndexes.
     */
    int getSentenceIndexesCount();
    /**
     * <code>repeated uint32 sentenceIndexes = 4;</code>
     * @param index The index of the element to return.
     * @return The sentenceIndexes at the given index.
     */
    int getSentenceIndexes(int index);

    /**
     * <code>optional string datetime = 5;</code>
     * @return Whether the datetime field is set.
     */
    boolean hasDatetime();
    /**
     * <code>optional string datetime = 5;</code>
     * @return The datetime.
     */
    java.lang.String getDatetime();
    /**
     * <code>optional string datetime = 5;</code>
     * @return The bytes for datetime.
     */
    com.google.protobuf.ByteString
        getDatetimeBytes();

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> 
        getQuotesList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getQuotes(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    int getQuotesCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> 
        getQuotesOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder getQuotesOrBuilder(
        int index);

    /**
     * <code>optional uint32 authorCharBegin = 7;</code>
     * @return Whether the authorCharBegin field is set.
     */
    boolean hasAuthorCharBegin();
    /**
     * <code>optional uint32 authorCharBegin = 7;</code>
     * @return The authorCharBegin.
     */
    int getAuthorCharBegin();

    /**
     * <code>optional uint32 authorCharEnd = 8;</code>
     * @return Whether the authorCharEnd field is set.
     */
    boolean hasAuthorCharEnd();
    /**
     * <code>optional uint32 authorCharEnd = 8;</code>
     * @return The authorCharEnd.
     */
    int getAuthorCharEnd();

    /**
     * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
     * @return Whether the xmlTag field is set.
     */
    boolean hasXmlTag();
    /**
     * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
     * @return The xmlTag.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Token getXmlTag();
    /**
     * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getXmlTagOrBuilder();
  }
  /**
   * Protobuf type {@code edu.stanford.nlp.pipeline.Section}
   */
  public static final class Section extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.Section)
      SectionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Section.newBuilder() to construct.
    private Section(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Section() {
      author_ = "";
      sentenceIndexes_ = emptyIntList();
      datetime_ = "";
      quotes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Section();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Section_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Section_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Section.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder.class);
    }

    private int bitField0_;
    public static final int CHARBEGIN_FIELD_NUMBER = 1;
    private int charBegin_;
    /**
     * <code>required uint32 charBegin = 1;</code>
     * @return Whether the charBegin field is set.
     */
    @java.lang.Override
    public boolean hasCharBegin() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required uint32 charBegin = 1;</code>
     * @return The charBegin.
     */
    @java.lang.Override
    public int getCharBegin() {
      return charBegin_;
    }

    public static final int CHAREND_FIELD_NUMBER = 2;
    private int charEnd_;
    /**
     * <code>required uint32 charEnd = 2;</code>
     * @return Whether the charEnd field is set.
     */
    @java.lang.Override
    public boolean hasCharEnd() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 charEnd = 2;</code>
     * @return The charEnd.
     */
    @java.lang.Override
    public int getCharEnd() {
      return charEnd_;
    }

    public static final int AUTHOR_FIELD_NUMBER = 3;
    private volatile java.lang.Object author_;
    /**
     * <code>optional string author = 3;</code>
     * @return Whether the author field is set.
     */
    @java.lang.Override
    public boolean hasAuthor() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string author = 3;</code>
     * @return The author.
     */
    @java.lang.Override
    public java.lang.String getAuthor() {
      java.lang.Object ref = author_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          author_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string author = 3;</code>
     * @return The bytes for author.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAuthorBytes() {
      java.lang.Object ref = author_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        author_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SENTENCEINDEXES_FIELD_NUMBER = 4;
    private com.google.protobuf.Internal.IntList sentenceIndexes_;
    /**
     * <code>repeated uint32 sentenceIndexes = 4;</code>
     * @return A list containing the sentenceIndexes.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getSentenceIndexesList() {
      return sentenceIndexes_;
    }
    /**
     * <code>repeated uint32 sentenceIndexes = 4;</code>
     * @return The count of sentenceIndexes.
     */
    public int getSentenceIndexesCount() {
      return sentenceIndexes_.size();
    }
    /**
     * <code>repeated uint32 sentenceIndexes = 4;</code>
     * @param index The index of the element to return.
     * @return The sentenceIndexes at the given index.
     */
    public int getSentenceIndexes(int index) {
      return sentenceIndexes_.getInt(index);
    }

    public static final int DATETIME_FIELD_NUMBER = 5;
    private volatile java.lang.Object datetime_;
    /**
     * <code>optional string datetime = 5;</code>
     * @return Whether the datetime field is set.
     */
    @java.lang.Override
    public boolean hasDatetime() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string datetime = 5;</code>
     * @return The datetime.
     */
    @java.lang.Override
    public java.lang.String getDatetime() {
      java.lang.Object ref = datetime_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          datetime_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string datetime = 5;</code>
     * @return The bytes for datetime.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDatetimeBytes() {
      java.lang.Object ref = datetime_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        datetime_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int QUOTES_FIELD_NUMBER = 6;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> quotes_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> getQuotesList() {
      return quotes_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> 
        getQuotesOrBuilderList() {
      return quotes_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    @java.lang.Override
    public int getQuotesCount() {
      return quotes_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getQuotes(int index) {
      return quotes_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder getQuotesOrBuilder(
        int index) {
      return quotes_.get(index);
    }

    public static final int AUTHORCHARBEGIN_FIELD_NUMBER = 7;
    private int authorCharBegin_;
    /**
     * <code>optional uint32 authorCharBegin = 7;</code>
     * @return Whether the authorCharBegin field is set.
     */
    @java.lang.Override
    public boolean hasAuthorCharBegin() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional uint32 authorCharBegin = 7;</code>
     * @return The authorCharBegin.
     */
    @java.lang.Override
    public int getAuthorCharBegin() {
      return authorCharBegin_;
    }

    public static final int AUTHORCHAREND_FIELD_NUMBER = 8;
    private int authorCharEnd_;
    /**
     * <code>optional uint32 authorCharEnd = 8;</code>
     * @return Whether the authorCharEnd field is set.
     */
    @java.lang.Override
    public boolean hasAuthorCharEnd() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional uint32 authorCharEnd = 8;</code>
     * @return The authorCharEnd.
     */
    @java.lang.Override
    public int getAuthorCharEnd() {
      return authorCharEnd_;
    }

    public static final int XMLTAG_FIELD_NUMBER = 9;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Token xmlTag_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
     * @return Whether the xmlTag field is set.
     */
    @java.lang.Override
    public boolean hasXmlTag() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
     * @return The xmlTag.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getXmlTag() {
      return xmlTag_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance() : xmlTag_;
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getXmlTagOrBuilder() {
      return xmlTag_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance() : xmlTag_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasCharBegin()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCharEnd()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasXmlTag()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getQuotesCount(); i++) {
        if (!getQuotes(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getXmlTag().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, charBegin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, charEnd_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, author_);
      }
      for (int i = 0; i < sentenceIndexes_.size(); i++) {
        output.writeUInt32(4, sentenceIndexes_.getInt(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, datetime_);
      }
      for (int i = 0; i < quotes_.size(); i++) {
        output.writeMessage(6, quotes_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt32(7, authorCharBegin_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeUInt32(8, authorCharEnd_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(9, getXmlTag());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, charBegin_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, charEnd_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, author_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sentenceIndexes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(sentenceIndexes_.getInt(i));
        }
        size += dataSize;
        size += 1 * getSentenceIndexesList().size();
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, datetime_);
      }
      for (int i = 0; i < quotes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, quotes_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, authorCharBegin_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(8, authorCharEnd_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getXmlTag());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Section)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.Section other = (edu.stanford.nlp.pipeline.CoreNLPProtos.Section) obj;

      if (hasCharBegin() != other.hasCharBegin()) return false;
      if (hasCharBegin()) {
        if (getCharBegin()
            != other.getCharBegin()) return false;
      }
      if (hasCharEnd() != other.hasCharEnd()) return false;
      if (hasCharEnd()) {
        if (getCharEnd()
            != other.getCharEnd()) return false;
      }
      if (hasAuthor() != other.hasAuthor()) return false;
      if (hasAuthor()) {
        if (!getAuthor()
            .equals(other.getAuthor())) return false;
      }
      if (!getSentenceIndexesList()
          .equals(other.getSentenceIndexesList())) return false;
      if (hasDatetime() != other.hasDatetime()) return false;
      if (hasDatetime()) {
        if (!getDatetime()
            .equals(other.getDatetime())) return false;
      }
      if (!getQuotesList()
          .equals(other.getQuotesList())) return false;
      if (hasAuthorCharBegin() != other.hasAuthorCharBegin()) return false;
      if (hasAuthorCharBegin()) {
        if (getAuthorCharBegin()
            != other.getAuthorCharBegin()) return false;
      }
      if (hasAuthorCharEnd() != other.hasAuthorCharEnd()) return false;
      if (hasAuthorCharEnd()) {
        if (getAuthorCharEnd()
            != other.getAuthorCharEnd()) return false;
      }
      if (hasXmlTag() != other.hasXmlTag()) return false;
      if (hasXmlTag()) {
        if (!getXmlTag()
            .equals(other.getXmlTag())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasCharBegin()) {
        hash = (37 * hash) + CHARBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getCharBegin();
      }
      if (hasCharEnd()) {
        hash = (37 * hash) + CHAREND_FIELD_NUMBER;
        hash = (53 * hash) + getCharEnd();
      }
      if (hasAuthor()) {
        hash = (37 * hash) + AUTHOR_FIELD_NUMBER;
        hash = (53 * hash) + getAuthor().hashCode();
      }
      if (getSentenceIndexesCount() > 0) {
        hash = (37 * hash) + SENTENCEINDEXES_FIELD_NUMBER;
        hash = (53 * hash) + getSentenceIndexesList().hashCode();
      }
      if (hasDatetime()) {
        hash = (37 * hash) + DATETIME_FIELD_NUMBER;
        hash = (53 * hash) + getDatetime().hashCode();
      }
      if (getQuotesCount() > 0) {
        hash = (37 * hash) + QUOTES_FIELD_NUMBER;
        hash = (53 * hash) + getQuotesList().hashCode();
      }
      if (hasAuthorCharBegin()) {
        hash = (37 * hash) + AUTHORCHARBEGIN_FIELD_NUMBER;
        hash = (53 * hash) + getAuthorCharBegin();
      }
      if (hasAuthorCharEnd()) {
        hash = (37 * hash) + AUTHORCHAREND_FIELD_NUMBER;
        hash = (53 * hash) + getAuthorCharEnd();
      }
      if (hasXmlTag()) {
        hash = (37 * hash) + XMLTAG_FIELD_NUMBER;
        hash = (53 * hash) + getXmlTag().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.Section prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.Section}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.Section)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Section_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Section_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.Section.class, edu.stanford.nlp.pipeline.CoreNLPProtos.Section.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.Section.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getQuotesFieldBuilder();
          getXmlTagFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        charBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        charEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        author_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        sentenceIndexes_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000008);
        datetime_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        if (quotesBuilder_ == null) {
          quotes_ = java.util.Collections.emptyList();
        } else {
          quotes_ = null;
          quotesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        authorCharBegin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        authorCharEnd_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        if (xmlTagBuilder_ == null) {
          xmlTag_ = null;
        } else {
          xmlTagBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_Section_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Section getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Section.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Section build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Section result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Section buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.Section result = new edu.stanford.nlp.pipeline.CoreNLPProtos.Section(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.charBegin_ = charBegin_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.charEnd_ = charEnd_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.author_ = author_;
        if (((bitField0_ & 0x00000008) != 0)) {
          sentenceIndexes_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.sentenceIndexes_ = sentenceIndexes_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.datetime_ = datetime_;
        if (quotesBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            quotes_ = java.util.Collections.unmodifiableList(quotes_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.quotes_ = quotes_;
        } else {
          result.quotes_ = quotesBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.authorCharBegin_ = authorCharBegin_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.authorCharEnd_ = authorCharEnd_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          if (xmlTagBuilder_ == null) {
            result.xmlTag_ = xmlTag_;
          } else {
            result.xmlTag_ = xmlTagBuilder_.build();
          }
          to_bitField0_ |= 0x00000040;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.Section) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.Section)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.Section other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.Section.getDefaultInstance()) return this;
        if (other.hasCharBegin()) {
          setCharBegin(other.getCharBegin());
        }
        if (other.hasCharEnd()) {
          setCharEnd(other.getCharEnd());
        }
        if (other.hasAuthor()) {
          bitField0_ |= 0x00000004;
          author_ = other.author_;
          onChanged();
        }
        if (!other.sentenceIndexes_.isEmpty()) {
          if (sentenceIndexes_.isEmpty()) {
            sentenceIndexes_ = other.sentenceIndexes_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureSentenceIndexesIsMutable();
            sentenceIndexes_.addAll(other.sentenceIndexes_);
          }
          onChanged();
        }
        if (other.hasDatetime()) {
          bitField0_ |= 0x00000010;
          datetime_ = other.datetime_;
          onChanged();
        }
        if (quotesBuilder_ == null) {
          if (!other.quotes_.isEmpty()) {
            if (quotes_.isEmpty()) {
              quotes_ = other.quotes_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureQuotesIsMutable();
              quotes_.addAll(other.quotes_);
            }
            onChanged();
          }
        } else {
          if (!other.quotes_.isEmpty()) {
            if (quotesBuilder_.isEmpty()) {
              quotesBuilder_.dispose();
              quotesBuilder_ = null;
              quotes_ = other.quotes_;
              bitField0_ = (bitField0_ & ~0x00000020);
              quotesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getQuotesFieldBuilder() : null;
            } else {
              quotesBuilder_.addAllMessages(other.quotes_);
            }
          }
        }
        if (other.hasAuthorCharBegin()) {
          setAuthorCharBegin(other.getAuthorCharBegin());
        }
        if (other.hasAuthorCharEnd()) {
          setAuthorCharEnd(other.getAuthorCharEnd());
        }
        if (other.hasXmlTag()) {
          mergeXmlTag(other.getXmlTag());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasCharBegin()) {
          return false;
        }
        if (!hasCharEnd()) {
          return false;
        }
        if (!hasXmlTag()) {
          return false;
        }
        for (int i = 0; i < getQuotesCount(); i++) {
          if (!getQuotes(i).isInitialized()) {
            return false;
          }
        }
        if (!getXmlTag().isInitialized()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                charBegin_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                charEnd_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                author_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                int v = input.readUInt32();
                ensureSentenceIndexesIsMutable();
                sentenceIndexes_.addInt(v);
                break;
              } // case 32
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureSentenceIndexesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  sentenceIndexes_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 42: {
                datetime_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.Quote m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.PARSER,
                        extensionRegistry);
                if (quotesBuilder_ == null) {
                  ensureQuotesIsMutable();
                  quotes_.add(m);
                } else {
                  quotesBuilder_.addMessage(m);
                }
                break;
              } // case 50
              case 56: {
                authorCharBegin_ = input.readUInt32();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 64: {
                authorCharEnd_ = input.readUInt32();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 74: {
                input.readMessage(
                    getXmlTagFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int charBegin_ ;
      /**
       * <code>required uint32 charBegin = 1;</code>
       * @return Whether the charBegin field is set.
       */
      @java.lang.Override
      public boolean hasCharBegin() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required uint32 charBegin = 1;</code>
       * @return The charBegin.
       */
      @java.lang.Override
      public int getCharBegin() {
        return charBegin_;
      }
      /**
       * <code>required uint32 charBegin = 1;</code>
       * @param value The charBegin to set.
       * @return This builder for chaining.
       */
      public Builder setCharBegin(int value) {
        bitField0_ |= 0x00000001;
        charBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 charBegin = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCharBegin() {
        bitField0_ = (bitField0_ & ~0x00000001);
        charBegin_ = 0;
        onChanged();
        return this;
      }

      private int charEnd_ ;
      /**
       * <code>required uint32 charEnd = 2;</code>
       * @return Whether the charEnd field is set.
       */
      @java.lang.Override
      public boolean hasCharEnd() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint32 charEnd = 2;</code>
       * @return The charEnd.
       */
      @java.lang.Override
      public int getCharEnd() {
        return charEnd_;
      }
      /**
       * <code>required uint32 charEnd = 2;</code>
       * @param value The charEnd to set.
       * @return This builder for chaining.
       */
      public Builder setCharEnd(int value) {
        bitField0_ |= 0x00000002;
        charEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 charEnd = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCharEnd() {
        bitField0_ = (bitField0_ & ~0x00000002);
        charEnd_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object author_ = "";
      /**
       * <code>optional string author = 3;</code>
       * @return Whether the author field is set.
       */
      public boolean hasAuthor() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string author = 3;</code>
       * @return The author.
       */
      public java.lang.String getAuthor() {
        java.lang.Object ref = author_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            author_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string author = 3;</code>
       * @return The bytes for author.
       */
      public com.google.protobuf.ByteString
          getAuthorBytes() {
        java.lang.Object ref = author_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          author_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string author = 3;</code>
       * @param value The author to set.
       * @return This builder for chaining.
       */
      public Builder setAuthor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        author_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string author = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAuthor() {
        bitField0_ = (bitField0_ & ~0x00000004);
        author_ = getDefaultInstance().getAuthor();
        onChanged();
        return this;
      }
      /**
       * <code>optional string author = 3;</code>
       * @param value The bytes for author to set.
       * @return This builder for chaining.
       */
      public Builder setAuthorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        author_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList sentenceIndexes_ = emptyIntList();
      private void ensureSentenceIndexesIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          sentenceIndexes_ = mutableCopy(sentenceIndexes_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated uint32 sentenceIndexes = 4;</code>
       * @return A list containing the sentenceIndexes.
       */
      public java.util.List<java.lang.Integer>
          getSentenceIndexesList() {
        return ((bitField0_ & 0x00000008) != 0) ?
                 java.util.Collections.unmodifiableList(sentenceIndexes_) : sentenceIndexes_;
      }
      /**
       * <code>repeated uint32 sentenceIndexes = 4;</code>
       * @return The count of sentenceIndexes.
       */
      public int getSentenceIndexesCount() {
        return sentenceIndexes_.size();
      }
      /**
       * <code>repeated uint32 sentenceIndexes = 4;</code>
       * @param index The index of the element to return.
       * @return The sentenceIndexes at the given index.
       */
      public int getSentenceIndexes(int index) {
        return sentenceIndexes_.getInt(index);
      }
      /**
       * <code>repeated uint32 sentenceIndexes = 4;</code>
       * @param index The index to set the value at.
       * @param value The sentenceIndexes to set.
       * @return This builder for chaining.
       */
      public Builder setSentenceIndexes(
          int index, int value) {
        ensureSentenceIndexesIsMutable();
        sentenceIndexes_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 sentenceIndexes = 4;</code>
       * @param value The sentenceIndexes to add.
       * @return This builder for chaining.
       */
      public Builder addSentenceIndexes(int value) {
        ensureSentenceIndexesIsMutable();
        sentenceIndexes_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 sentenceIndexes = 4;</code>
       * @param values The sentenceIndexes to add.
       * @return This builder for chaining.
       */
      public Builder addAllSentenceIndexes(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSentenceIndexesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sentenceIndexes_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 sentenceIndexes = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSentenceIndexes() {
        sentenceIndexes_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private java.lang.Object datetime_ = "";
      /**
       * <code>optional string datetime = 5;</code>
       * @return Whether the datetime field is set.
       */
      public boolean hasDatetime() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string datetime = 5;</code>
       * @return The datetime.
       */
      public java.lang.String getDatetime() {
        java.lang.Object ref = datetime_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            datetime_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string datetime = 5;</code>
       * @return The bytes for datetime.
       */
      public com.google.protobuf.ByteString
          getDatetimeBytes() {
        java.lang.Object ref = datetime_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          datetime_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string datetime = 5;</code>
       * @param value The datetime to set.
       * @return This builder for chaining.
       */
      public Builder setDatetime(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        datetime_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string datetime = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatetime() {
        bitField0_ = (bitField0_ & ~0x00000010);
        datetime_ = getDefaultInstance().getDatetime();
        onChanged();
        return this;
      }
      /**
       * <code>optional string datetime = 5;</code>
       * @param value The bytes for datetime to set.
       * @return This builder for chaining.
       */
      public Builder setDatetimeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        datetime_ = value;
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> quotes_ =
        java.util.Collections.emptyList();
      private void ensureQuotesIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          quotes_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote>(quotes_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Quote, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> quotesBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> getQuotesList() {
        if (quotesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(quotes_);
        } else {
          return quotesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public int getQuotesCount() {
        if (quotesBuilder_ == null) {
          return quotes_.size();
        } else {
          return quotesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote getQuotes(int index) {
        if (quotesBuilder_ == null) {
          return quotes_.get(index);
        } else {
          return quotesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder setQuotes(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote value) {
        if (quotesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQuotesIsMutable();
          quotes_.set(index, value);
          onChanged();
        } else {
          quotesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder setQuotes(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder builderForValue) {
        if (quotesBuilder_ == null) {
          ensureQuotesIsMutable();
          quotes_.set(index, builderForValue.build());
          onChanged();
        } else {
          quotesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder addQuotes(edu.stanford.nlp.pipeline.CoreNLPProtos.Quote value) {
        if (quotesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQuotesIsMutable();
          quotes_.add(value);
          onChanged();
        } else {
          quotesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder addQuotes(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote value) {
        if (quotesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQuotesIsMutable();
          quotes_.add(index, value);
          onChanged();
        } else {
          quotesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder addQuotes(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder builderForValue) {
        if (quotesBuilder_ == null) {
          ensureQuotesIsMutable();
          quotes_.add(builderForValue.build());
          onChanged();
        } else {
          quotesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder addQuotes(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder builderForValue) {
        if (quotesBuilder_ == null) {
          ensureQuotesIsMutable();
          quotes_.add(index, builderForValue.build());
          onChanged();
        } else {
          quotesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder addAllQuotes(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Quote> values) {
        if (quotesBuilder_ == null) {
          ensureQuotesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, quotes_);
          onChanged();
        } else {
          quotesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder clearQuotes() {
        if (quotesBuilder_ == null) {
          quotes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          quotesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public Builder removeQuotes(int index) {
        if (quotesBuilder_ == null) {
          ensureQuotesIsMutable();
          quotes_.remove(index);
          onChanged();
        } else {
          quotesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder getQuotesBuilder(
          int index) {
        return getQuotesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder getQuotesOrBuilder(
          int index) {
        if (quotesBuilder_ == null) {
          return quotes_.get(index);  } else {
          return quotesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> 
           getQuotesOrBuilderList() {
        if (quotesBuilder_ != null) {
          return quotesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(quotes_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder addQuotesBuilder() {
        return getQuotesFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder addQuotesBuilder(
          int index) {
        return getQuotesFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Quote quotes = 6;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder> 
           getQuotesBuilderList() {
        return getQuotesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Quote, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder> 
          getQuotesFieldBuilder() {
        if (quotesBuilder_ == null) {
          quotesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Quote, edu.stanford.nlp.pipeline.CoreNLPProtos.Quote.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.QuoteOrBuilder>(
                  quotes_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          quotes_ = null;
        }
        return quotesBuilder_;
      }

      private int authorCharBegin_ ;
      /**
       * <code>optional uint32 authorCharBegin = 7;</code>
       * @return Whether the authorCharBegin field is set.
       */
      @java.lang.Override
      public boolean hasAuthorCharBegin() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional uint32 authorCharBegin = 7;</code>
       * @return The authorCharBegin.
       */
      @java.lang.Override
      public int getAuthorCharBegin() {
        return authorCharBegin_;
      }
      /**
       * <code>optional uint32 authorCharBegin = 7;</code>
       * @param value The authorCharBegin to set.
       * @return This builder for chaining.
       */
      public Builder setAuthorCharBegin(int value) {
        bitField0_ |= 0x00000040;
        authorCharBegin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 authorCharBegin = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearAuthorCharBegin() {
        bitField0_ = (bitField0_ & ~0x00000040);
        authorCharBegin_ = 0;
        onChanged();
        return this;
      }

      private int authorCharEnd_ ;
      /**
       * <code>optional uint32 authorCharEnd = 8;</code>
       * @return Whether the authorCharEnd field is set.
       */
      @java.lang.Override
      public boolean hasAuthorCharEnd() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional uint32 authorCharEnd = 8;</code>
       * @return The authorCharEnd.
       */
      @java.lang.Override
      public int getAuthorCharEnd() {
        return authorCharEnd_;
      }
      /**
       * <code>optional uint32 authorCharEnd = 8;</code>
       * @param value The authorCharEnd to set.
       * @return This builder for chaining.
       */
      public Builder setAuthorCharEnd(int value) {
        bitField0_ |= 0x00000080;
        authorCharEnd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint32 authorCharEnd = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearAuthorCharEnd() {
        bitField0_ = (bitField0_ & ~0x00000080);
        authorCharEnd_ = 0;
        onChanged();
        return this;
      }

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Token xmlTag_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> xmlTagBuilder_;
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       * @return Whether the xmlTag field is set.
       */
      public boolean hasXmlTag() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       * @return The xmlTag.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getXmlTag() {
        if (xmlTagBuilder_ == null) {
          return xmlTag_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance() : xmlTag_;
        } else {
          return xmlTagBuilder_.getMessage();
        }
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       */
      public Builder setXmlTag(edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (xmlTagBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          xmlTag_ = value;
          onChanged();
        } else {
          xmlTagBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       */
      public Builder setXmlTag(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
        if (xmlTagBuilder_ == null) {
          xmlTag_ = builderForValue.build();
          onChanged();
        } else {
          xmlTagBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       */
      public Builder mergeXmlTag(edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
        if (xmlTagBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
              xmlTag_ != null &&
              xmlTag_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance()) {
            xmlTag_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token.newBuilder(xmlTag_).mergeFrom(value).buildPartial();
          } else {
            xmlTag_ = value;
          }
          onChanged();
        } else {
          xmlTagBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       */
      public Builder clearXmlTag() {
        if (xmlTagBuilder_ == null) {
          xmlTag_ = null;
          onChanged();
        } else {
          xmlTagBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder getXmlTagBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getXmlTagFieldBuilder().getBuilder();
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getXmlTagOrBuilder() {
        if (xmlTagBuilder_ != null) {
          return xmlTagBuilder_.getMessageOrBuilder();
        } else {
          return xmlTag_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance() : xmlTag_;
        }
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Token xmlTag = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
          getXmlTagFieldBuilder() {
        if (xmlTagBuilder_ == null) {
          xmlTagBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder>(
                  getXmlTag(),
                  getParentForChildren(),
                  isClean());
          xmlTag_ = null;
        }
        return xmlTagBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.Section)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.Section)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.Section DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.Section();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.Section getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Section>
        PARSER = new com.google.protobuf.AbstractParser<Section>() {
      @java.lang.Override
      public Section parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Section> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Section> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Section getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SemgrexRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string semgrex = 1;</code>
     * @return A list containing the semgrex.
     */
    java.util.List<java.lang.String>
        getSemgrexList();
    /**
     * <code>repeated string semgrex = 1;</code>
     * @return The count of semgrex.
     */
    int getSemgrexCount();
    /**
     * <code>repeated string semgrex = 1;</code>
     * @param index The index of the element to return.
     * @return The semgrex at the given index.
     */
    java.lang.String getSemgrex(int index);
    /**
     * <code>repeated string semgrex = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the semgrex at the given index.
     */
    com.google.protobuf.ByteString
        getSemgrexBytes(int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies> 
        getQueryList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies getQuery(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    int getQueryCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder> 
        getQueryOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder getQueryOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A message for requesting a semgrex
   * Each sentence stores information about the tokens making up the
   * corresponding graph
   * An alternative would have been to use the existing Document or
   * Sentence classes, but the problem with that is it would be
   * ambiguous which dependency object to use.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexRequest}
   */
  public static final class SemgrexRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexRequest)
      SemgrexRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SemgrexRequest.newBuilder() to construct.
    private SemgrexRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SemgrexRequest() {
      semgrex_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      query_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SemgrexRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Builder.class);
    }

    public interface DependenciesOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> 
          getTokenList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index);
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      int getTokenCount();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
          getTokenOrBuilderList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
          int index);

      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       * @return Whether the graph field is set.
       */
      boolean hasGraph();
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       * @return The graph.
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph();
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies}
     */
    public static final class Dependencies extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies)
        DependenciesOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Dependencies.newBuilder() to construct.
      private Dependencies(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Dependencies() {
        token_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Dependencies();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder.class);
      }

      private int bitField0_;
      public static final int TOKEN_FIELD_NUMBER = 1;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> token_;
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getTokenList() {
        return token_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
          getTokenOrBuilderList() {
        return token_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      @java.lang.Override
      public int getTokenCount() {
        return token_.size();
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index) {
        return token_.get(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
          int index) {
        return token_.get(index);
      }

      public static final int GRAPH_FIELD_NUMBER = 2;
      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph graph_;
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       * @return Whether the graph field is set.
       */
      @java.lang.Override
      public boolean hasGraph() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       * @return The graph.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph() {
        return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder() {
        return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasGraph()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getTokenCount(); i++) {
          if (!getToken(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (!getGraph().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < token_.size(); i++) {
          output.writeMessage(1, token_.get(i));
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(2, getGraph());
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        for (int i = 0; i < token_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, token_.get(i));
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getGraph());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies) obj;

        if (!getTokenList()
            .equals(other.getTokenList())) return false;
        if (hasGraph() != other.hasGraph()) return false;
        if (hasGraph()) {
          if (!getGraph()
              .equals(other.getGraph())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getTokenCount() > 0) {
          hash = (37 * hash) + TOKEN_FIELD_NUMBER;
          hash = (53 * hash) + getTokenList().hashCode();
        }
        if (hasGraph()) {
          hash = (37 * hash) + GRAPH_FIELD_NUMBER;
          hash = (53 * hash) + getGraph().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getTokenFieldBuilder();
            getGraphFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (tokenBuilder_ == null) {
            token_ = java.util.Collections.emptyList();
          } else {
            token_ = null;
            tokenBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (graphBuilder_ == null) {
            graph_ = null;
          } else {
            graphBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (tokenBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              token_ = java.util.Collections.unmodifiableList(token_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.token_ = token_;
          } else {
            result.token_ = tokenBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            if (graphBuilder_ == null) {
              result.graph_ = graph_;
            } else {
              result.graph_ = graphBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.getDefaultInstance()) return this;
          if (tokenBuilder_ == null) {
            if (!other.token_.isEmpty()) {
              if (token_.isEmpty()) {
                token_ = other.token_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureTokenIsMutable();
                token_.addAll(other.token_);
              }
              onChanged();
            }
          } else {
            if (!other.token_.isEmpty()) {
              if (tokenBuilder_.isEmpty()) {
                tokenBuilder_.dispose();
                tokenBuilder_ = null;
                token_ = other.token_;
                bitField0_ = (bitField0_ & ~0x00000001);
                tokenBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getTokenFieldBuilder() : null;
              } else {
                tokenBuilder_.addAllMessages(other.token_);
              }
            }
          }
          if (other.hasGraph()) {
            mergeGraph(other.getGraph());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasGraph()) {
            return false;
          }
          for (int i = 0; i < getTokenCount(); i++) {
            if (!getToken(i).isInitialized()) {
              return false;
            }
          }
          if (!getGraph().isInitialized()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.Token m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.Token.PARSER,
                          extensionRegistry);
                  if (tokenBuilder_ == null) {
                    ensureTokenIsMutable();
                    token_.add(m);
                  } else {
                    tokenBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getGraphFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> token_ =
          java.util.Collections.emptyList();
        private void ensureTokenIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            token_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.Token>(token_);
            bitField0_ |= 0x00000001;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> tokenBuilder_;

        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token> getTokenList() {
          if (tokenBuilder_ == null) {
            return java.util.Collections.unmodifiableList(token_);
          } else {
            return tokenBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public int getTokenCount() {
          if (tokenBuilder_ == null) {
            return token_.size();
          } else {
            return tokenBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.Token getToken(int index) {
          if (tokenBuilder_ == null) {
            return token_.get(index);
          } else {
            return tokenBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder setToken(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
          if (tokenBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTokenIsMutable();
            token_.set(index, value);
            onChanged();
          } else {
            tokenBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder setToken(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
          if (tokenBuilder_ == null) {
            ensureTokenIsMutable();
            token_.set(index, builderForValue.build());
            onChanged();
          } else {
            tokenBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder addToken(edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
          if (tokenBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTokenIsMutable();
            token_.add(value);
            onChanged();
          } else {
            tokenBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder addToken(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token value) {
          if (tokenBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTokenIsMutable();
            token_.add(index, value);
            onChanged();
          } else {
            tokenBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder addToken(
            edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
          if (tokenBuilder_ == null) {
            ensureTokenIsMutable();
            token_.add(builderForValue.build());
            onChanged();
          } else {
            tokenBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder addToken(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder builderForValue) {
          if (tokenBuilder_ == null) {
            ensureTokenIsMutable();
            token_.add(index, builderForValue.build());
            onChanged();
          } else {
            tokenBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder addAllToken(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.Token> values) {
          if (tokenBuilder_ == null) {
            ensureTokenIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, token_);
            onChanged();
          } else {
            tokenBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder clearToken() {
          if (tokenBuilder_ == null) {
            token_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            tokenBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public Builder removeToken(int index) {
          if (tokenBuilder_ == null) {
            ensureTokenIsMutable();
            token_.remove(index);
            onChanged();
          } else {
            tokenBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder getTokenBuilder(
            int index) {
          return getTokenFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder getTokenOrBuilder(
            int index) {
          if (tokenBuilder_ == null) {
            return token_.get(index);  } else {
            return tokenBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
             getTokenOrBuilderList() {
          if (tokenBuilder_ != null) {
            return tokenBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(token_);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addTokenBuilder() {
          return getTokenFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder addTokenBuilder(
            int index) {
          return getTokenFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.Token token = 1;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder> 
             getTokenBuilderList() {
          return getTokenFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder> 
            getTokenFieldBuilder() {
          if (tokenBuilder_ == null) {
            tokenBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.Token, edu.stanford.nlp.pipeline.CoreNLPProtos.Token.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokenOrBuilder>(
                    token_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            token_ = null;
          }
          return tokenBuilder_;
        }

        private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph graph_;
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> graphBuilder_;
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         * @return Whether the graph field is set.
         */
        public boolean hasGraph() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         * @return The graph.
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph() {
          if (graphBuilder_ == null) {
            return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
          } else {
            return graphBuilder_.getMessage();
          }
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         */
        public Builder setGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
          if (graphBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            graph_ = value;
            onChanged();
          } else {
            graphBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         */
        public Builder setGraph(
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
          if (graphBuilder_ == null) {
            graph_ = builderForValue.build();
            onChanged();
          } else {
            graphBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         */
        public Builder mergeGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
          if (graphBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
                graph_ != null &&
                graph_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
              graph_ =
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(graph_).mergeFrom(value).buildPartial();
            } else {
              graph_ = value;
            }
            onChanged();
          } else {
            graphBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         */
        public Builder clearGraph() {
          if (graphBuilder_ == null) {
            graph_ = null;
            onChanged();
          } else {
            graphBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getGraphBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getGraphFieldBuilder().getBuilder();
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder() {
          if (graphBuilder_ != null) {
            return graphBuilder_.getMessageOrBuilder();
          } else {
            return graph_ == null ?
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
          }
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
            getGraphFieldBuilder() {
          if (graphBuilder_ == null) {
            graphBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                    getGraph(),
                    getParentForChildren(),
                    isClean());
            graph_ = null;
          }
          return graphBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Dependencies>
          PARSER = new com.google.protobuf.AbstractParser<Dependencies>() {
        @java.lang.Override
        public Dependencies parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Dependencies> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Dependencies> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int SEMGREX_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList semgrex_;
    /**
     * <code>repeated string semgrex = 1;</code>
     * @return A list containing the semgrex.
     */
    public com.google.protobuf.ProtocolStringList
        getSemgrexList() {
      return semgrex_;
    }
    /**
     * <code>repeated string semgrex = 1;</code>
     * @return The count of semgrex.
     */
    public int getSemgrexCount() {
      return semgrex_.size();
    }
    /**
     * <code>repeated string semgrex = 1;</code>
     * @param index The index of the element to return.
     * @return The semgrex at the given index.
     */
    public java.lang.String getSemgrex(int index) {
      return semgrex_.get(index);
    }
    /**
     * <code>repeated string semgrex = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the semgrex at the given index.
     */
    public com.google.protobuf.ByteString
        getSemgrexBytes(int index) {
      return semgrex_.getByteString(index);
    }

    public static final int QUERY_FIELD_NUMBER = 2;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies> query_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies> getQueryList() {
      return query_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder> 
        getQueryOrBuilderList() {
      return query_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    @java.lang.Override
    public int getQueryCount() {
      return query_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies getQuery(int index) {
      return query_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder getQueryOrBuilder(
        int index) {
      return query_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getQueryCount(); i++) {
        if (!getQuery(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < semgrex_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, semgrex_.getRaw(i));
      }
      for (int i = 0; i < query_.size(); i++) {
        output.writeMessage(2, query_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < semgrex_.size(); i++) {
          dataSize += computeStringSizeNoTag(semgrex_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getSemgrexList().size();
      }
      for (int i = 0; i < query_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, query_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest) obj;

      if (!getSemgrexList()
          .equals(other.getSemgrexList())) return false;
      if (!getQueryList()
          .equals(other.getQueryList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getSemgrexCount() > 0) {
        hash = (37 * hash) + SEMGREX_FIELD_NUMBER;
        hash = (53 * hash) + getSemgrexList().hashCode();
      }
      if (getQueryCount() > 0) {
        hash = (37 * hash) + QUERY_FIELD_NUMBER;
        hash = (53 * hash) + getQueryList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A message for requesting a semgrex
     * Each sentence stores information about the tokens making up the
     * corresponding graph
     * An alternative would have been to use the existing Document or
     * Sentence classes, but the problem with that is it would be
     * ambiguous which dependency object to use.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexRequest)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        semgrex_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (queryBuilder_ == null) {
          query_ = java.util.Collections.emptyList();
        } else {
          query_ = null;
          queryBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          semgrex_ = semgrex_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.semgrex_ = semgrex_;
        if (queryBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            query_ = java.util.Collections.unmodifiableList(query_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.query_ = query_;
        } else {
          result.query_ = queryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.getDefaultInstance()) return this;
        if (!other.semgrex_.isEmpty()) {
          if (semgrex_.isEmpty()) {
            semgrex_ = other.semgrex_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSemgrexIsMutable();
            semgrex_.addAll(other.semgrex_);
          }
          onChanged();
        }
        if (queryBuilder_ == null) {
          if (!other.query_.isEmpty()) {
            if (query_.isEmpty()) {
              query_ = other.query_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureQueryIsMutable();
              query_.addAll(other.query_);
            }
            onChanged();
          }
        } else {
          if (!other.query_.isEmpty()) {
            if (queryBuilder_.isEmpty()) {
              queryBuilder_.dispose();
              queryBuilder_ = null;
              query_ = other.query_;
              bitField0_ = (bitField0_ & ~0x00000002);
              queryBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getQueryFieldBuilder() : null;
            } else {
              queryBuilder_.addAllMessages(other.query_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getQueryCount(); i++) {
          if (!getQuery(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureSemgrexIsMutable();
                semgrex_.add(bs);
                break;
              } // case 10
              case 18: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.PARSER,
                        extensionRegistry);
                if (queryBuilder_ == null) {
                  ensureQueryIsMutable();
                  query_.add(m);
                } else {
                  queryBuilder_.addMessage(m);
                }
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList semgrex_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSemgrexIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          semgrex_ = new com.google.protobuf.LazyStringArrayList(semgrex_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @return A list containing the semgrex.
       */
      public com.google.protobuf.ProtocolStringList
          getSemgrexList() {
        return semgrex_.getUnmodifiableView();
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @return The count of semgrex.
       */
      public int getSemgrexCount() {
        return semgrex_.size();
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @param index The index of the element to return.
       * @return The semgrex at the given index.
       */
      public java.lang.String getSemgrex(int index) {
        return semgrex_.get(index);
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the semgrex at the given index.
       */
      public com.google.protobuf.ByteString
          getSemgrexBytes(int index) {
        return semgrex_.getByteString(index);
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @param index The index to set the value at.
       * @param value The semgrex to set.
       * @return This builder for chaining.
       */
      public Builder setSemgrex(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSemgrexIsMutable();
        semgrex_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @param value The semgrex to add.
       * @return This builder for chaining.
       */
      public Builder addSemgrex(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSemgrexIsMutable();
        semgrex_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @param values The semgrex to add.
       * @return This builder for chaining.
       */
      public Builder addAllSemgrex(
          java.lang.Iterable<java.lang.String> values) {
        ensureSemgrexIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, semgrex_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSemgrex() {
        semgrex_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string semgrex = 1;</code>
       * @param value The bytes of the semgrex to add.
       * @return This builder for chaining.
       */
      public Builder addSemgrexBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSemgrexIsMutable();
        semgrex_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies> query_ =
        java.util.Collections.emptyList();
      private void ensureQueryIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          query_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies>(query_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder> queryBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies> getQueryList() {
        if (queryBuilder_ == null) {
          return java.util.Collections.unmodifiableList(query_);
        } else {
          return queryBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public int getQueryCount() {
        if (queryBuilder_ == null) {
          return query_.size();
        } else {
          return queryBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies getQuery(int index) {
        if (queryBuilder_ == null) {
          return query_.get(index);
        } else {
          return queryBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder setQuery(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies value) {
        if (queryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQueryIsMutable();
          query_.set(index, value);
          onChanged();
        } else {
          queryBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder setQuery(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder builderForValue) {
        if (queryBuilder_ == null) {
          ensureQueryIsMutable();
          query_.set(index, builderForValue.build());
          onChanged();
        } else {
          queryBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder addQuery(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies value) {
        if (queryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQueryIsMutable();
          query_.add(value);
          onChanged();
        } else {
          queryBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder addQuery(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies value) {
        if (queryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQueryIsMutable();
          query_.add(index, value);
          onChanged();
        } else {
          queryBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder addQuery(
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder builderForValue) {
        if (queryBuilder_ == null) {
          ensureQueryIsMutable();
          query_.add(builderForValue.build());
          onChanged();
        } else {
          queryBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder addQuery(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder builderForValue) {
        if (queryBuilder_ == null) {
          ensureQueryIsMutable();
          query_.add(index, builderForValue.build());
          onChanged();
        } else {
          queryBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder addAllQuery(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies> values) {
        if (queryBuilder_ == null) {
          ensureQueryIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, query_);
          onChanged();
        } else {
          queryBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder clearQuery() {
        if (queryBuilder_ == null) {
          query_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          queryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public Builder removeQuery(int index) {
        if (queryBuilder_ == null) {
          ensureQueryIsMutable();
          query_.remove(index);
          onChanged();
        } else {
          queryBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder getQueryBuilder(
          int index) {
        return getQueryFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder getQueryOrBuilder(
          int index) {
        if (queryBuilder_ == null) {
          return query_.get(index);  } else {
          return queryBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder> 
           getQueryOrBuilderList() {
        if (queryBuilder_ != null) {
          return queryBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(query_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder addQueryBuilder() {
        return getQueryFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder addQueryBuilder(
          int index) {
        return getQueryFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexRequest.Dependencies query = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder> 
           getQueryBuilderList() {
        return getQueryFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder> 
          getQueryFieldBuilder() {
        if (queryBuilder_ == null) {
          queryBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.Dependencies.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest.DependenciesOrBuilder>(
                  query_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          query_ = null;
        }
        return queryBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexRequest)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexRequest)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SemgrexRequest>
        PARSER = new com.google.protobuf.AbstractParser<SemgrexRequest>() {
      @java.lang.Override
      public SemgrexRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SemgrexRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SemgrexRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SemgrexResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult> 
        getResultList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult getResult(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    int getResultCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder> 
        getResultOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder getResultOrBuilder(
        int index);
  }
  /**
   * <pre>
   * The response from running a semgrex
   * If you pass in M semgrex expressions and N dependency graphs,
   * this returns MxN nested results.  Each SemgrexResult can match
   * multiple times in one graph
   * You may want to send multiple semgrexes per query because
   * translating large numbers of dependency graphs to protobufs
   * will be expensive, so doing several queries at once will save time
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse}
   */
  public static final class SemgrexResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexResponse)
      SemgrexResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SemgrexResponse.newBuilder() to construct.
    private SemgrexResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SemgrexResponse() {
      result_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SemgrexResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Builder.class);
    }

    public interface NamedNodeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      boolean hasName();
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      java.lang.String getName();
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <code>required int32 matchIndex = 2;</code>
       * @return Whether the matchIndex field is set.
       */
      boolean hasMatchIndex();
      /**
       * <code>required int32 matchIndex = 2;</code>
       * @return The matchIndex.
       */
      int getMatchIndex();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode}
     */
    public static final class NamedNode extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode)
        NamedNodeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use NamedNode.newBuilder() to construct.
      private NamedNode(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private NamedNode() {
        name_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new NamedNode();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder.class);
      }

      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object name_;
      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      @java.lang.Override
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      @java.lang.Override
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int MATCHINDEX_FIELD_NUMBER = 2;
      private int matchIndex_;
      /**
       * <code>required int32 matchIndex = 2;</code>
       * @return Whether the matchIndex field is set.
       */
      @java.lang.Override
      public boolean hasMatchIndex() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required int32 matchIndex = 2;</code>
       * @return The matchIndex.
       */
      @java.lang.Override
      public int getMatchIndex() {
        return matchIndex_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasMatchIndex()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt32(2, matchIndex_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, matchIndex_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode) obj;

        if (hasName() != other.hasName()) return false;
        if (hasName()) {
          if (!getName()
              .equals(other.getName())) return false;
        }
        if (hasMatchIndex() != other.hasMatchIndex()) return false;
        if (hasMatchIndex()) {
          if (getMatchIndex()
              != other.getMatchIndex()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        if (hasMatchIndex()) {
          hash = (37 * hash) + MATCHINDEX_FIELD_NUMBER;
          hash = (53 * hash) + getMatchIndex();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          matchIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.matchIndex_ = matchIndex_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.getDefaultInstance()) return this;
          if (other.hasName()) {
            bitField0_ |= 0x00000001;
            name_ = other.name_;
            onChanged();
          }
          if (other.hasMatchIndex()) {
            setMatchIndex(other.getMatchIndex());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasName()) {
            return false;
          }
          if (!hasMatchIndex()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  name_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 16: {
                  matchIndex_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object name_ = "";
        /**
         * <code>required string name = 1;</code>
         * @return Whether the name field is set.
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string name = 1;</code>
         * @return The name.
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string name = 1;</code>
         * @return The bytes for name.
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string name = 1;</code>
         * @param value The name to set.
         * @return This builder for chaining.
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>required string name = 1;</code>
         * @param value The bytes for name to set.
         * @return This builder for chaining.
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }

        private int matchIndex_ ;
        /**
         * <code>required int32 matchIndex = 2;</code>
         * @return Whether the matchIndex field is set.
         */
        @java.lang.Override
        public boolean hasMatchIndex() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required int32 matchIndex = 2;</code>
         * @return The matchIndex.
         */
        @java.lang.Override
        public int getMatchIndex() {
          return matchIndex_;
        }
        /**
         * <code>required int32 matchIndex = 2;</code>
         * @param value The matchIndex to set.
         * @return This builder for chaining.
         */
        public Builder setMatchIndex(int value) {
          bitField0_ |= 0x00000002;
          matchIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 matchIndex = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearMatchIndex() {
          bitField0_ = (bitField0_ & ~0x00000002);
          matchIndex_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<NamedNode>
          PARSER = new com.google.protobuf.AbstractParser<NamedNode>() {
        @java.lang.Override
        public NamedNode parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<NamedNode> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<NamedNode> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface NamedRelationOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      boolean hasName();
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      java.lang.String getName();
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <code>required string reln = 2;</code>
       * @return Whether the reln field is set.
       */
      boolean hasReln();
      /**
       * <code>required string reln = 2;</code>
       * @return The reln.
       */
      java.lang.String getReln();
      /**
       * <code>required string reln = 2;</code>
       * @return The bytes for reln.
       */
      com.google.protobuf.ByteString
          getRelnBytes();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation}
     */
    public static final class NamedRelation extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation)
        NamedRelationOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use NamedRelation.newBuilder() to construct.
      private NamedRelation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private NamedRelation() {
        name_ = "";
        reln_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new NamedRelation();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder.class);
      }

      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object name_;
      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      @java.lang.Override
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      @java.lang.Override
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int RELN_FIELD_NUMBER = 2;
      private volatile java.lang.Object reln_;
      /**
       * <code>required string reln = 2;</code>
       * @return Whether the reln field is set.
       */
      @java.lang.Override
      public boolean hasReln() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string reln = 2;</code>
       * @return The reln.
       */
      @java.lang.Override
      public java.lang.String getReln() {
        java.lang.Object ref = reln_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            reln_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string reln = 2;</code>
       * @return The bytes for reln.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getRelnBytes() {
        java.lang.Object ref = reln_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reln_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasReln()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, reln_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, reln_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation) obj;

        if (hasName() != other.hasName()) return false;
        if (hasName()) {
          if (!getName()
              .equals(other.getName())) return false;
        }
        if (hasReln() != other.hasReln()) return false;
        if (hasReln()) {
          if (!getReln()
              .equals(other.getReln())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        if (hasReln()) {
          hash = (37 * hash) + RELN_FIELD_NUMBER;
          hash = (53 * hash) + getReln().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          reln_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.reln_ = reln_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.getDefaultInstance()) return this;
          if (other.hasName()) {
            bitField0_ |= 0x00000001;
            name_ = other.name_;
            onChanged();
          }
          if (other.hasReln()) {
            bitField0_ |= 0x00000002;
            reln_ = other.reln_;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasName()) {
            return false;
          }
          if (!hasReln()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  name_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  reln_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object name_ = "";
        /**
         * <code>required string name = 1;</code>
         * @return Whether the name field is set.
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string name = 1;</code>
         * @return The name.
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string name = 1;</code>
         * @return The bytes for name.
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string name = 1;</code>
         * @param value The name to set.
         * @return This builder for chaining.
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>required string name = 1;</code>
         * @param value The bytes for name to set.
         * @return This builder for chaining.
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object reln_ = "";
        /**
         * <code>required string reln = 2;</code>
         * @return Whether the reln field is set.
         */
        public boolean hasReln() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required string reln = 2;</code>
         * @return The reln.
         */
        public java.lang.String getReln() {
          java.lang.Object ref = reln_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              reln_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string reln = 2;</code>
         * @return The bytes for reln.
         */
        public com.google.protobuf.ByteString
            getRelnBytes() {
          java.lang.Object ref = reln_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            reln_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string reln = 2;</code>
         * @param value The reln to set.
         * @return This builder for chaining.
         */
        public Builder setReln(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          reln_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string reln = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearReln() {
          bitField0_ = (bitField0_ & ~0x00000002);
          reln_ = getDefaultInstance().getReln();
          onChanged();
          return this;
        }
        /**
         * <code>required string reln = 2;</code>
         * @param value The bytes for reln to set.
         * @return This builder for chaining.
         */
        public Builder setRelnBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          reln_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<NamedRelation>
          PARSER = new com.google.protobuf.AbstractParser<NamedRelation>() {
        @java.lang.Override
        public NamedRelation parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<NamedRelation> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<NamedRelation> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface NamedEdgeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      boolean hasName();
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      java.lang.String getName();
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <code>required int32 source = 2;</code>
       * @return Whether the source field is set.
       */
      boolean hasSource();
      /**
       * <code>required int32 source = 2;</code>
       * @return The source.
       */
      int getSource();

      /**
       * <code>required int32 target = 3;</code>
       * @return Whether the target field is set.
       */
      boolean hasTarget();
      /**
       * <code>required int32 target = 3;</code>
       * @return The target.
       */
      int getTarget();

      /**
       * <code>optional string reln = 4;</code>
       * @return Whether the reln field is set.
       */
      boolean hasReln();
      /**
       * <code>optional string reln = 4;</code>
       * @return The reln.
       */
      java.lang.String getReln();
      /**
       * <code>optional string reln = 4;</code>
       * @return The bytes for reln.
       */
      com.google.protobuf.ByteString
          getRelnBytes();

      /**
       * <code>optional bool isExtra = 5;</code>
       * @return Whether the isExtra field is set.
       */
      boolean hasIsExtra();
      /**
       * <code>optional bool isExtra = 5;</code>
       * @return The isExtra.
       */
      boolean getIsExtra();

      /**
       * <code>optional uint32 sourceCopy = 6;</code>
       * @return Whether the sourceCopy field is set.
       */
      boolean hasSourceCopy();
      /**
       * <code>optional uint32 sourceCopy = 6;</code>
       * @return The sourceCopy.
       */
      int getSourceCopy();

      /**
       * <code>optional uint32 targetCopy = 7;</code>
       * @return Whether the targetCopy field is set.
       */
      boolean hasTargetCopy();
      /**
       * <code>optional uint32 targetCopy = 7;</code>
       * @return The targetCopy.
       */
      int getTargetCopy();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge}
     */
    public static final class NamedEdge extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge)
        NamedEdgeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use NamedEdge.newBuilder() to construct.
      private NamedEdge(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private NamedEdge() {
        name_ = "";
        reln_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new NamedEdge();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder.class);
      }

      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object name_;
      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      @java.lang.Override
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      @java.lang.Override
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SOURCE_FIELD_NUMBER = 2;
      private int source_;
      /**
       * <code>required int32 source = 2;</code>
       * @return Whether the source field is set.
       */
      @java.lang.Override
      public boolean hasSource() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required int32 source = 2;</code>
       * @return The source.
       */
      @java.lang.Override
      public int getSource() {
        return source_;
      }

      public static final int TARGET_FIELD_NUMBER = 3;
      private int target_;
      /**
       * <code>required int32 target = 3;</code>
       * @return Whether the target field is set.
       */
      @java.lang.Override
      public boolean hasTarget() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required int32 target = 3;</code>
       * @return The target.
       */
      @java.lang.Override
      public int getTarget() {
        return target_;
      }

      public static final int RELN_FIELD_NUMBER = 4;
      private volatile java.lang.Object reln_;
      /**
       * <code>optional string reln = 4;</code>
       * @return Whether the reln field is set.
       */
      @java.lang.Override
      public boolean hasReln() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string reln = 4;</code>
       * @return The reln.
       */
      @java.lang.Override
      public java.lang.String getReln() {
        java.lang.Object ref = reln_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            reln_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string reln = 4;</code>
       * @return The bytes for reln.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getRelnBytes() {
        java.lang.Object ref = reln_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reln_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int ISEXTRA_FIELD_NUMBER = 5;
      private boolean isExtra_;
      /**
       * <code>optional bool isExtra = 5;</code>
       * @return Whether the isExtra field is set.
       */
      @java.lang.Override
      public boolean hasIsExtra() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional bool isExtra = 5;</code>
       * @return The isExtra.
       */
      @java.lang.Override
      public boolean getIsExtra() {
        return isExtra_;
      }

      public static final int SOURCECOPY_FIELD_NUMBER = 6;
      private int sourceCopy_;
      /**
       * <code>optional uint32 sourceCopy = 6;</code>
       * @return Whether the sourceCopy field is set.
       */
      @java.lang.Override
      public boolean hasSourceCopy() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional uint32 sourceCopy = 6;</code>
       * @return The sourceCopy.
       */
      @java.lang.Override
      public int getSourceCopy() {
        return sourceCopy_;
      }

      public static final int TARGETCOPY_FIELD_NUMBER = 7;
      private int targetCopy_;
      /**
       * <code>optional uint32 targetCopy = 7;</code>
       * @return Whether the targetCopy field is set.
       */
      @java.lang.Override
      public boolean hasTargetCopy() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional uint32 targetCopy = 7;</code>
       * @return The targetCopy.
       */
      @java.lang.Override
      public int getTargetCopy() {
        return targetCopy_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasSource()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTarget()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt32(2, source_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeInt32(3, target_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 4, reln_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeBool(5, isExtra_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          output.writeUInt32(6, sourceCopy_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          output.writeUInt32(7, targetCopy_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, source_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, target_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, reln_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, isExtra_);
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, sourceCopy_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, targetCopy_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge) obj;

        if (hasName() != other.hasName()) return false;
        if (hasName()) {
          if (!getName()
              .equals(other.getName())) return false;
        }
        if (hasSource() != other.hasSource()) return false;
        if (hasSource()) {
          if (getSource()
              != other.getSource()) return false;
        }
        if (hasTarget() != other.hasTarget()) return false;
        if (hasTarget()) {
          if (getTarget()
              != other.getTarget()) return false;
        }
        if (hasReln() != other.hasReln()) return false;
        if (hasReln()) {
          if (!getReln()
              .equals(other.getReln())) return false;
        }
        if (hasIsExtra() != other.hasIsExtra()) return false;
        if (hasIsExtra()) {
          if (getIsExtra()
              != other.getIsExtra()) return false;
        }
        if (hasSourceCopy() != other.hasSourceCopy()) return false;
        if (hasSourceCopy()) {
          if (getSourceCopy()
              != other.getSourceCopy()) return false;
        }
        if (hasTargetCopy() != other.hasTargetCopy()) return false;
        if (hasTargetCopy()) {
          if (getTargetCopy()
              != other.getTargetCopy()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        if (hasSource()) {
          hash = (37 * hash) + SOURCE_FIELD_NUMBER;
          hash = (53 * hash) + getSource();
        }
        if (hasTarget()) {
          hash = (37 * hash) + TARGET_FIELD_NUMBER;
          hash = (53 * hash) + getTarget();
        }
        if (hasReln()) {
          hash = (37 * hash) + RELN_FIELD_NUMBER;
          hash = (53 * hash) + getReln().hashCode();
        }
        if (hasIsExtra()) {
          hash = (37 * hash) + ISEXTRA_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getIsExtra());
        }
        if (hasSourceCopy()) {
          hash = (37 * hash) + SOURCECOPY_FIELD_NUMBER;
          hash = (53 * hash) + getSourceCopy();
        }
        if (hasTargetCopy()) {
          hash = (37 * hash) + TARGETCOPY_FIELD_NUMBER;
          hash = (53 * hash) + getTargetCopy();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          source_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          target_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          reln_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          isExtra_ = false;
          bitField0_ = (bitField0_ & ~0x00000010);
          sourceCopy_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          targetCopy_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.source_ = source_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.target_ = target_;
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            to_bitField0_ |= 0x00000008;
          }
          result.reln_ = reln_;
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.isExtra_ = isExtra_;
            to_bitField0_ |= 0x00000010;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.sourceCopy_ = sourceCopy_;
            to_bitField0_ |= 0x00000020;
          }
          if (((from_bitField0_ & 0x00000040) != 0)) {
            result.targetCopy_ = targetCopy_;
            to_bitField0_ |= 0x00000040;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.getDefaultInstance()) return this;
          if (other.hasName()) {
            bitField0_ |= 0x00000001;
            name_ = other.name_;
            onChanged();
          }
          if (other.hasSource()) {
            setSource(other.getSource());
          }
          if (other.hasTarget()) {
            setTarget(other.getTarget());
          }
          if (other.hasReln()) {
            bitField0_ |= 0x00000008;
            reln_ = other.reln_;
            onChanged();
          }
          if (other.hasIsExtra()) {
            setIsExtra(other.getIsExtra());
          }
          if (other.hasSourceCopy()) {
            setSourceCopy(other.getSourceCopy());
          }
          if (other.hasTargetCopy()) {
            setTargetCopy(other.getTargetCopy());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasName()) {
            return false;
          }
          if (!hasSource()) {
            return false;
          }
          if (!hasTarget()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  name_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 16: {
                  source_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 24: {
                  target_ = input.readInt32();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                case 34: {
                  reln_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
                case 40: {
                  isExtra_ = input.readBool();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 40
                case 48: {
                  sourceCopy_ = input.readUInt32();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 48
                case 56: {
                  targetCopy_ = input.readUInt32();
                  bitField0_ |= 0x00000040;
                  break;
                } // case 56
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object name_ = "";
        /**
         * <code>required string name = 1;</code>
         * @return Whether the name field is set.
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string name = 1;</code>
         * @return The name.
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string name = 1;</code>
         * @return The bytes for name.
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string name = 1;</code>
         * @param value The name to set.
         * @return This builder for chaining.
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>required string name = 1;</code>
         * @param value The bytes for name to set.
         * @return This builder for chaining.
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }

        private int source_ ;
        /**
         * <code>required int32 source = 2;</code>
         * @return Whether the source field is set.
         */
        @java.lang.Override
        public boolean hasSource() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required int32 source = 2;</code>
         * @return The source.
         */
        @java.lang.Override
        public int getSource() {
          return source_;
        }
        /**
         * <code>required int32 source = 2;</code>
         * @param value The source to set.
         * @return This builder for chaining.
         */
        public Builder setSource(int value) {
          bitField0_ |= 0x00000002;
          source_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 source = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearSource() {
          bitField0_ = (bitField0_ & ~0x00000002);
          source_ = 0;
          onChanged();
          return this;
        }

        private int target_ ;
        /**
         * <code>required int32 target = 3;</code>
         * @return Whether the target field is set.
         */
        @java.lang.Override
        public boolean hasTarget() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>required int32 target = 3;</code>
         * @return The target.
         */
        @java.lang.Override
        public int getTarget() {
          return target_;
        }
        /**
         * <code>required int32 target = 3;</code>
         * @param value The target to set.
         * @return This builder for chaining.
         */
        public Builder setTarget(int value) {
          bitField0_ |= 0x00000004;
          target_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 target = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTarget() {
          bitField0_ = (bitField0_ & ~0x00000004);
          target_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object reln_ = "";
        /**
         * <code>optional string reln = 4;</code>
         * @return Whether the reln field is set.
         */
        public boolean hasReln() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional string reln = 4;</code>
         * @return The reln.
         */
        public java.lang.String getReln() {
          java.lang.Object ref = reln_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              reln_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string reln = 4;</code>
         * @return The bytes for reln.
         */
        public com.google.protobuf.ByteString
            getRelnBytes() {
          java.lang.Object ref = reln_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            reln_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string reln = 4;</code>
         * @param value The reln to set.
         * @return This builder for chaining.
         */
        public Builder setReln(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          reln_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string reln = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearReln() {
          bitField0_ = (bitField0_ & ~0x00000008);
          reln_ = getDefaultInstance().getReln();
          onChanged();
          return this;
        }
        /**
         * <code>optional string reln = 4;</code>
         * @param value The bytes for reln to set.
         * @return This builder for chaining.
         */
        public Builder setRelnBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          reln_ = value;
          onChanged();
          return this;
        }

        private boolean isExtra_ ;
        /**
         * <code>optional bool isExtra = 5;</code>
         * @return Whether the isExtra field is set.
         */
        @java.lang.Override
        public boolean hasIsExtra() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <code>optional bool isExtra = 5;</code>
         * @return The isExtra.
         */
        @java.lang.Override
        public boolean getIsExtra() {
          return isExtra_;
        }
        /**
         * <code>optional bool isExtra = 5;</code>
         * @param value The isExtra to set.
         * @return This builder for chaining.
         */
        public Builder setIsExtra(boolean value) {
          bitField0_ |= 0x00000010;
          isExtra_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool isExtra = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsExtra() {
          bitField0_ = (bitField0_ & ~0x00000010);
          isExtra_ = false;
          onChanged();
          return this;
        }

        private int sourceCopy_ ;
        /**
         * <code>optional uint32 sourceCopy = 6;</code>
         * @return Whether the sourceCopy field is set.
         */
        @java.lang.Override
        public boolean hasSourceCopy() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <code>optional uint32 sourceCopy = 6;</code>
         * @return The sourceCopy.
         */
        @java.lang.Override
        public int getSourceCopy() {
          return sourceCopy_;
        }
        /**
         * <code>optional uint32 sourceCopy = 6;</code>
         * @param value The sourceCopy to set.
         * @return This builder for chaining.
         */
        public Builder setSourceCopy(int value) {
          bitField0_ |= 0x00000020;
          sourceCopy_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 sourceCopy = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearSourceCopy() {
          bitField0_ = (bitField0_ & ~0x00000020);
          sourceCopy_ = 0;
          onChanged();
          return this;
        }

        private int targetCopy_ ;
        /**
         * <code>optional uint32 targetCopy = 7;</code>
         * @return Whether the targetCopy field is set.
         */
        @java.lang.Override
        public boolean hasTargetCopy() {
          return ((bitField0_ & 0x00000040) != 0);
        }
        /**
         * <code>optional uint32 targetCopy = 7;</code>
         * @return The targetCopy.
         */
        @java.lang.Override
        public int getTargetCopy() {
          return targetCopy_;
        }
        /**
         * <code>optional uint32 targetCopy = 7;</code>
         * @param value The targetCopy to set.
         * @return This builder for chaining.
         */
        public Builder setTargetCopy(int value) {
          bitField0_ |= 0x00000040;
          targetCopy_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 targetCopy = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearTargetCopy() {
          bitField0_ = (bitField0_ & ~0x00000040);
          targetCopy_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<NamedEdge>
          PARSER = new com.google.protobuf.AbstractParser<NamedEdge>() {
        @java.lang.Override
        public NamedEdge parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<NamedEdge> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<NamedEdge> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface MatchOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexResponse.Match)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required int32 matchIndex = 1;</code>
       * @return Whether the matchIndex field is set.
       */
      boolean hasMatchIndex();
      /**
       * <code>required int32 matchIndex = 1;</code>
       * @return The matchIndex.
       */
      int getMatchIndex();

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode> 
          getNodeList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode getNode(int index);
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      int getNodeCount();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder> 
          getNodeOrBuilderList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder getNodeOrBuilder(
          int index);

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation> 
          getRelnList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation getReln(int index);
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      int getRelnCount();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder> 
          getRelnOrBuilderList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder getRelnOrBuilder(
          int index);

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge> 
          getEdgeList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge getEdge(int index);
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      int getEdgeCount();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder> 
          getEdgeOrBuilderList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder getEdgeOrBuilder(
          int index);

      /**
       * <pre>
       * when processing multiple dependency graphs at once,
       * which dependency graph this applies to
       * indexed from 0
       * </pre>
       *
       * <code>optional int32 graphIndex = 4;</code>
       * @return Whether the graphIndex field is set.
       */
      boolean hasGraphIndex();
      /**
       * <pre>
       * when processing multiple dependency graphs at once,
       * which dependency graph this applies to
       * indexed from 0
       * </pre>
       *
       * <code>optional int32 graphIndex = 4;</code>
       * @return The graphIndex.
       */
      int getGraphIndex();

      /**
       * <pre>
       * index of the semgrex expression this match applies to
       * indexed from 0
       * </pre>
       *
       * <code>optional int32 semgrexIndex = 5;</code>
       * @return Whether the semgrexIndex field is set.
       */
      boolean hasSemgrexIndex();
      /**
       * <pre>
       * index of the semgrex expression this match applies to
       * indexed from 0
       * </pre>
       *
       * <code>optional int32 semgrexIndex = 5;</code>
       * @return The semgrexIndex.
       */
      int getSemgrexIndex();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.Match}
     */
    public static final class Match extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexResponse.Match)
        MatchOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Match.newBuilder() to construct.
      private Match(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Match() {
        node_ = java.util.Collections.emptyList();
        reln_ = java.util.Collections.emptyList();
        edge_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Match();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder.class);
      }

      private int bitField0_;
      public static final int MATCHINDEX_FIELD_NUMBER = 1;
      private int matchIndex_;
      /**
       * <code>required int32 matchIndex = 1;</code>
       * @return Whether the matchIndex field is set.
       */
      @java.lang.Override
      public boolean hasMatchIndex() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 matchIndex = 1;</code>
       * @return The matchIndex.
       */
      @java.lang.Override
      public int getMatchIndex() {
        return matchIndex_;
      }

      public static final int NODE_FIELD_NUMBER = 2;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode> node_;
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode> getNodeList() {
        return node_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder> 
          getNodeOrBuilderList() {
        return node_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      @java.lang.Override
      public int getNodeCount() {
        return node_.size();
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode getNode(int index) {
        return node_.get(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder getNodeOrBuilder(
          int index) {
        return node_.get(index);
      }

      public static final int RELN_FIELD_NUMBER = 3;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation> reln_;
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation> getRelnList() {
        return reln_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder> 
          getRelnOrBuilderList() {
        return reln_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      @java.lang.Override
      public int getRelnCount() {
        return reln_.size();
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation getReln(int index) {
        return reln_.get(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder getRelnOrBuilder(
          int index) {
        return reln_.get(index);
      }

      public static final int EDGE_FIELD_NUMBER = 6;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge> edge_;
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge> getEdgeList() {
        return edge_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder> 
          getEdgeOrBuilderList() {
        return edge_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      @java.lang.Override
      public int getEdgeCount() {
        return edge_.size();
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge getEdge(int index) {
        return edge_.get(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder getEdgeOrBuilder(
          int index) {
        return edge_.get(index);
      }

      public static final int GRAPHINDEX_FIELD_NUMBER = 4;
      private int graphIndex_;
      /**
       * <pre>
       * when processing multiple dependency graphs at once,
       * which dependency graph this applies to
       * indexed from 0
       * </pre>
       *
       * <code>optional int32 graphIndex = 4;</code>
       * @return Whether the graphIndex field is set.
       */
      @java.lang.Override
      public boolean hasGraphIndex() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * when processing multiple dependency graphs at once,
       * which dependency graph this applies to
       * indexed from 0
       * </pre>
       *
       * <code>optional int32 graphIndex = 4;</code>
       * @return The graphIndex.
       */
      @java.lang.Override
      public int getGraphIndex() {
        return graphIndex_;
      }

      public static final int SEMGREXINDEX_FIELD_NUMBER = 5;
      private int semgrexIndex_;
      /**
       * <pre>
       * index of the semgrex expression this match applies to
       * indexed from 0
       * </pre>
       *
       * <code>optional int32 semgrexIndex = 5;</code>
       * @return Whether the semgrexIndex field is set.
       */
      @java.lang.Override
      public boolean hasSemgrexIndex() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * index of the semgrex expression this match applies to
       * indexed from 0
       * </pre>
       *
       * <code>optional int32 semgrexIndex = 5;</code>
       * @return The semgrexIndex.
       */
      @java.lang.Override
      public int getSemgrexIndex() {
        return semgrexIndex_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasMatchIndex()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getNodeCount(); i++) {
          if (!getNode(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getRelnCount(); i++) {
          if (!getReln(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getEdgeCount(); i++) {
          if (!getEdge(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, matchIndex_);
        }
        for (int i = 0; i < node_.size(); i++) {
          output.writeMessage(2, node_.get(i));
        }
        for (int i = 0; i < reln_.size(); i++) {
          output.writeMessage(3, reln_.get(i));
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt32(4, graphIndex_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeInt32(5, semgrexIndex_);
        }
        for (int i = 0; i < edge_.size(); i++) {
          output.writeMessage(6, edge_.get(i));
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, matchIndex_);
        }
        for (int i = 0; i < node_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, node_.get(i));
        }
        for (int i = 0; i < reln_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, reln_.get(i));
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(4, graphIndex_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(5, semgrexIndex_);
        }
        for (int i = 0; i < edge_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, edge_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match) obj;

        if (hasMatchIndex() != other.hasMatchIndex()) return false;
        if (hasMatchIndex()) {
          if (getMatchIndex()
              != other.getMatchIndex()) return false;
        }
        if (!getNodeList()
            .equals(other.getNodeList())) return false;
        if (!getRelnList()
            .equals(other.getRelnList())) return false;
        if (!getEdgeList()
            .equals(other.getEdgeList())) return false;
        if (hasGraphIndex() != other.hasGraphIndex()) return false;
        if (hasGraphIndex()) {
          if (getGraphIndex()
              != other.getGraphIndex()) return false;
        }
        if (hasSemgrexIndex() != other.hasSemgrexIndex()) return false;
        if (hasSemgrexIndex()) {
          if (getSemgrexIndex()
              != other.getSemgrexIndex()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasMatchIndex()) {
          hash = (37 * hash) + MATCHINDEX_FIELD_NUMBER;
          hash = (53 * hash) + getMatchIndex();
        }
        if (getNodeCount() > 0) {
          hash = (37 * hash) + NODE_FIELD_NUMBER;
          hash = (53 * hash) + getNodeList().hashCode();
        }
        if (getRelnCount() > 0) {
          hash = (37 * hash) + RELN_FIELD_NUMBER;
          hash = (53 * hash) + getRelnList().hashCode();
        }
        if (getEdgeCount() > 0) {
          hash = (37 * hash) + EDGE_FIELD_NUMBER;
          hash = (53 * hash) + getEdgeList().hashCode();
        }
        if (hasGraphIndex()) {
          hash = (37 * hash) + GRAPHINDEX_FIELD_NUMBER;
          hash = (53 * hash) + getGraphIndex();
        }
        if (hasSemgrexIndex()) {
          hash = (37 * hash) + SEMGREXINDEX_FIELD_NUMBER;
          hash = (53 * hash) + getSemgrexIndex();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.Match}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexResponse.Match)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          matchIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (nodeBuilder_ == null) {
            node_ = java.util.Collections.emptyList();
          } else {
            node_ = null;
            nodeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (relnBuilder_ == null) {
            reln_ = java.util.Collections.emptyList();
          } else {
            reln_ = null;
            relnBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (edgeBuilder_ == null) {
            edge_ = java.util.Collections.emptyList();
          } else {
            edge_ = null;
            edgeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          graphIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          semgrexIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.matchIndex_ = matchIndex_;
            to_bitField0_ |= 0x00000001;
          }
          if (nodeBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)) {
              node_ = java.util.Collections.unmodifiableList(node_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.node_ = node_;
          } else {
            result.node_ = nodeBuilder_.build();
          }
          if (relnBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0)) {
              reln_ = java.util.Collections.unmodifiableList(reln_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.reln_ = reln_;
          } else {
            result.reln_ = relnBuilder_.build();
          }
          if (edgeBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0)) {
              edge_ = java.util.Collections.unmodifiableList(edge_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.edge_ = edge_;
          } else {
            result.edge_ = edgeBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.graphIndex_ = graphIndex_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.semgrexIndex_ = semgrexIndex_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.getDefaultInstance()) return this;
          if (other.hasMatchIndex()) {
            setMatchIndex(other.getMatchIndex());
          }
          if (nodeBuilder_ == null) {
            if (!other.node_.isEmpty()) {
              if (node_.isEmpty()) {
                node_ = other.node_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureNodeIsMutable();
                node_.addAll(other.node_);
              }
              onChanged();
            }
          } else {
            if (!other.node_.isEmpty()) {
              if (nodeBuilder_.isEmpty()) {
                nodeBuilder_.dispose();
                nodeBuilder_ = null;
                node_ = other.node_;
                bitField0_ = (bitField0_ & ~0x00000002);
                nodeBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getNodeFieldBuilder() : null;
              } else {
                nodeBuilder_.addAllMessages(other.node_);
              }
            }
          }
          if (relnBuilder_ == null) {
            if (!other.reln_.isEmpty()) {
              if (reln_.isEmpty()) {
                reln_ = other.reln_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureRelnIsMutable();
                reln_.addAll(other.reln_);
              }
              onChanged();
            }
          } else {
            if (!other.reln_.isEmpty()) {
              if (relnBuilder_.isEmpty()) {
                relnBuilder_.dispose();
                relnBuilder_ = null;
                reln_ = other.reln_;
                bitField0_ = (bitField0_ & ~0x00000004);
                relnBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getRelnFieldBuilder() : null;
              } else {
                relnBuilder_.addAllMessages(other.reln_);
              }
            }
          }
          if (edgeBuilder_ == null) {
            if (!other.edge_.isEmpty()) {
              if (edge_.isEmpty()) {
                edge_ = other.edge_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureEdgeIsMutable();
                edge_.addAll(other.edge_);
              }
              onChanged();
            }
          } else {
            if (!other.edge_.isEmpty()) {
              if (edgeBuilder_.isEmpty()) {
                edgeBuilder_.dispose();
                edgeBuilder_ = null;
                edge_ = other.edge_;
                bitField0_ = (bitField0_ & ~0x00000008);
                edgeBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getEdgeFieldBuilder() : null;
              } else {
                edgeBuilder_.addAllMessages(other.edge_);
              }
            }
          }
          if (other.hasGraphIndex()) {
            setGraphIndex(other.getGraphIndex());
          }
          if (other.hasSemgrexIndex()) {
            setSemgrexIndex(other.getSemgrexIndex());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasMatchIndex()) {
            return false;
          }
          for (int i = 0; i < getNodeCount(); i++) {
            if (!getNode(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getRelnCount(); i++) {
            if (!getReln(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getEdgeCount(); i++) {
            if (!getEdge(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  matchIndex_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 18: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.PARSER,
                          extensionRegistry);
                  if (nodeBuilder_ == null) {
                    ensureNodeIsMutable();
                    node_.add(m);
                  } else {
                    nodeBuilder_.addMessage(m);
                  }
                  break;
                } // case 18
                case 26: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.PARSER,
                          extensionRegistry);
                  if (relnBuilder_ == null) {
                    ensureRelnIsMutable();
                    reln_.add(m);
                  } else {
                    relnBuilder_.addMessage(m);
                  }
                  break;
                } // case 26
                case 32: {
                  graphIndex_ = input.readInt32();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 32
                case 40: {
                  semgrexIndex_ = input.readInt32();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 40
                case 50: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.PARSER,
                          extensionRegistry);
                  if (edgeBuilder_ == null) {
                    ensureEdgeIsMutable();
                    edge_.add(m);
                  } else {
                    edgeBuilder_.addMessage(m);
                  }
                  break;
                } // case 50
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int matchIndex_ ;
        /**
         * <code>required int32 matchIndex = 1;</code>
         * @return Whether the matchIndex field is set.
         */
        @java.lang.Override
        public boolean hasMatchIndex() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required int32 matchIndex = 1;</code>
         * @return The matchIndex.
         */
        @java.lang.Override
        public int getMatchIndex() {
          return matchIndex_;
        }
        /**
         * <code>required int32 matchIndex = 1;</code>
         * @param value The matchIndex to set.
         * @return This builder for chaining.
         */
        public Builder setMatchIndex(int value) {
          bitField0_ |= 0x00000001;
          matchIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 matchIndex = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearMatchIndex() {
          bitField0_ = (bitField0_ & ~0x00000001);
          matchIndex_ = 0;
          onChanged();
          return this;
        }

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode> node_ =
          java.util.Collections.emptyList();
        private void ensureNodeIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            node_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode>(node_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder> nodeBuilder_;

        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode> getNodeList() {
          if (nodeBuilder_ == null) {
            return java.util.Collections.unmodifiableList(node_);
          } else {
            return nodeBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public int getNodeCount() {
          if (nodeBuilder_ == null) {
            return node_.size();
          } else {
            return nodeBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode getNode(int index) {
          if (nodeBuilder_ == null) {
            return node_.get(index);
          } else {
            return nodeBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder setNode(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode value) {
          if (nodeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNodeIsMutable();
            node_.set(index, value);
            onChanged();
          } else {
            nodeBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder setNode(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder builderForValue) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            node_.set(index, builderForValue.build());
            onChanged();
          } else {
            nodeBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder addNode(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode value) {
          if (nodeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNodeIsMutable();
            node_.add(value);
            onChanged();
          } else {
            nodeBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder addNode(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode value) {
          if (nodeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNodeIsMutable();
            node_.add(index, value);
            onChanged();
          } else {
            nodeBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder addNode(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder builderForValue) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            node_.add(builderForValue.build());
            onChanged();
          } else {
            nodeBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder addNode(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder builderForValue) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            node_.add(index, builderForValue.build());
            onChanged();
          } else {
            nodeBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder addAllNode(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode> values) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, node_);
            onChanged();
          } else {
            nodeBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder clearNode() {
          if (nodeBuilder_ == null) {
            node_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            nodeBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public Builder removeNode(int index) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            node_.remove(index);
            onChanged();
          } else {
            nodeBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder getNodeBuilder(
            int index) {
          return getNodeFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder getNodeOrBuilder(
            int index) {
          if (nodeBuilder_ == null) {
            return node_.get(index);  } else {
            return nodeBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder> 
             getNodeOrBuilderList() {
          if (nodeBuilder_ != null) {
            return nodeBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(node_);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder addNodeBuilder() {
          return getNodeFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder addNodeBuilder(
            int index) {
          return getNodeFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedNode node = 2;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder> 
             getNodeBuilderList() {
          return getNodeFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder> 
            getNodeFieldBuilder() {
          if (nodeBuilder_ == null) {
            nodeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNode.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedNodeOrBuilder>(
                    node_,
                    ((bitField0_ & 0x00000002) != 0),
                    getParentForChildren(),
                    isClean());
            node_ = null;
          }
          return nodeBuilder_;
        }

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation> reln_ =
          java.util.Collections.emptyList();
        private void ensureRelnIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            reln_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation>(reln_);
            bitField0_ |= 0x00000004;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder> relnBuilder_;

        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation> getRelnList() {
          if (relnBuilder_ == null) {
            return java.util.Collections.unmodifiableList(reln_);
          } else {
            return relnBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public int getRelnCount() {
          if (relnBuilder_ == null) {
            return reln_.size();
          } else {
            return relnBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation getReln(int index) {
          if (relnBuilder_ == null) {
            return reln_.get(index);
          } else {
            return relnBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder setReln(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation value) {
          if (relnBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRelnIsMutable();
            reln_.set(index, value);
            onChanged();
          } else {
            relnBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder setReln(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder builderForValue) {
          if (relnBuilder_ == null) {
            ensureRelnIsMutable();
            reln_.set(index, builderForValue.build());
            onChanged();
          } else {
            relnBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder addReln(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation value) {
          if (relnBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRelnIsMutable();
            reln_.add(value);
            onChanged();
          } else {
            relnBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder addReln(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation value) {
          if (relnBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRelnIsMutable();
            reln_.add(index, value);
            onChanged();
          } else {
            relnBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder addReln(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder builderForValue) {
          if (relnBuilder_ == null) {
            ensureRelnIsMutable();
            reln_.add(builderForValue.build());
            onChanged();
          } else {
            relnBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder addReln(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder builderForValue) {
          if (relnBuilder_ == null) {
            ensureRelnIsMutable();
            reln_.add(index, builderForValue.build());
            onChanged();
          } else {
            relnBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder addAllReln(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation> values) {
          if (relnBuilder_ == null) {
            ensureRelnIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, reln_);
            onChanged();
          } else {
            relnBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder clearReln() {
          if (relnBuilder_ == null) {
            reln_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            relnBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public Builder removeReln(int index) {
          if (relnBuilder_ == null) {
            ensureRelnIsMutable();
            reln_.remove(index);
            onChanged();
          } else {
            relnBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder getRelnBuilder(
            int index) {
          return getRelnFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder getRelnOrBuilder(
            int index) {
          if (relnBuilder_ == null) {
            return reln_.get(index);  } else {
            return relnBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder> 
             getRelnOrBuilderList() {
          if (relnBuilder_ != null) {
            return relnBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(reln_);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder addRelnBuilder() {
          return getRelnFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder addRelnBuilder(
            int index) {
          return getRelnFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedRelation reln = 3;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder> 
             getRelnBuilderList() {
          return getRelnFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder> 
            getRelnFieldBuilder() {
          if (relnBuilder_ == null) {
            relnBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedRelationOrBuilder>(
                    reln_,
                    ((bitField0_ & 0x00000004) != 0),
                    getParentForChildren(),
                    isClean());
            reln_ = null;
          }
          return relnBuilder_;
        }

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge> edge_ =
          java.util.Collections.emptyList();
        private void ensureEdgeIsMutable() {
          if (!((bitField0_ & 0x00000008) != 0)) {
            edge_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge>(edge_);
            bitField0_ |= 0x00000008;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder> edgeBuilder_;

        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge> getEdgeList() {
          if (edgeBuilder_ == null) {
            return java.util.Collections.unmodifiableList(edge_);
          } else {
            return edgeBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public int getEdgeCount() {
          if (edgeBuilder_ == null) {
            return edge_.size();
          } else {
            return edgeBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge getEdge(int index) {
          if (edgeBuilder_ == null) {
            return edge_.get(index);
          } else {
            return edgeBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder setEdge(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge value) {
          if (edgeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEdgeIsMutable();
            edge_.set(index, value);
            onChanged();
          } else {
            edgeBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder setEdge(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder builderForValue) {
          if (edgeBuilder_ == null) {
            ensureEdgeIsMutable();
            edge_.set(index, builderForValue.build());
            onChanged();
          } else {
            edgeBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder addEdge(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge value) {
          if (edgeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEdgeIsMutable();
            edge_.add(value);
            onChanged();
          } else {
            edgeBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder addEdge(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge value) {
          if (edgeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEdgeIsMutable();
            edge_.add(index, value);
            onChanged();
          } else {
            edgeBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder addEdge(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder builderForValue) {
          if (edgeBuilder_ == null) {
            ensureEdgeIsMutable();
            edge_.add(builderForValue.build());
            onChanged();
          } else {
            edgeBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder addEdge(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder builderForValue) {
          if (edgeBuilder_ == null) {
            ensureEdgeIsMutable();
            edge_.add(index, builderForValue.build());
            onChanged();
          } else {
            edgeBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder addAllEdge(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge> values) {
          if (edgeBuilder_ == null) {
            ensureEdgeIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, edge_);
            onChanged();
          } else {
            edgeBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder clearEdge() {
          if (edgeBuilder_ == null) {
            edge_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            edgeBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public Builder removeEdge(int index) {
          if (edgeBuilder_ == null) {
            ensureEdgeIsMutable();
            edge_.remove(index);
            onChanged();
          } else {
            edgeBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder getEdgeBuilder(
            int index) {
          return getEdgeFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder getEdgeOrBuilder(
            int index) {
          if (edgeBuilder_ == null) {
            return edge_.get(index);  } else {
            return edgeBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder> 
             getEdgeOrBuilderList() {
          if (edgeBuilder_ != null) {
            return edgeBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(edge_);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder addEdgeBuilder() {
          return getEdgeFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder addEdgeBuilder(
            int index) {
          return getEdgeFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.NamedEdge edge = 6;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder> 
             getEdgeBuilderList() {
          return getEdgeFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder> 
            getEdgeFieldBuilder() {
          if (edgeBuilder_ == null) {
            edgeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdge.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.NamedEdgeOrBuilder>(
                    edge_,
                    ((bitField0_ & 0x00000008) != 0),
                    getParentForChildren(),
                    isClean());
            edge_ = null;
          }
          return edgeBuilder_;
        }

        private int graphIndex_ ;
        /**
         * <pre>
         * when processing multiple dependency graphs at once,
         * which dependency graph this applies to
         * indexed from 0
         * </pre>
         *
         * <code>optional int32 graphIndex = 4;</code>
         * @return Whether the graphIndex field is set.
         */
        @java.lang.Override
        public boolean hasGraphIndex() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <pre>
         * when processing multiple dependency graphs at once,
         * which dependency graph this applies to
         * indexed from 0
         * </pre>
         *
         * <code>optional int32 graphIndex = 4;</code>
         * @return The graphIndex.
         */
        @java.lang.Override
        public int getGraphIndex() {
          return graphIndex_;
        }
        /**
         * <pre>
         * when processing multiple dependency graphs at once,
         * which dependency graph this applies to
         * indexed from 0
         * </pre>
         *
         * <code>optional int32 graphIndex = 4;</code>
         * @param value The graphIndex to set.
         * @return This builder for chaining.
         */
        public Builder setGraphIndex(int value) {
          bitField0_ |= 0x00000010;
          graphIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * when processing multiple dependency graphs at once,
         * which dependency graph this applies to
         * indexed from 0
         * </pre>
         *
         * <code>optional int32 graphIndex = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearGraphIndex() {
          bitField0_ = (bitField0_ & ~0x00000010);
          graphIndex_ = 0;
          onChanged();
          return this;
        }

        private int semgrexIndex_ ;
        /**
         * <pre>
         * index of the semgrex expression this match applies to
         * indexed from 0
         * </pre>
         *
         * <code>optional int32 semgrexIndex = 5;</code>
         * @return Whether the semgrexIndex field is set.
         */
        @java.lang.Override
        public boolean hasSemgrexIndex() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <pre>
         * index of the semgrex expression this match applies to
         * indexed from 0
         * </pre>
         *
         * <code>optional int32 semgrexIndex = 5;</code>
         * @return The semgrexIndex.
         */
        @java.lang.Override
        public int getSemgrexIndex() {
          return semgrexIndex_;
        }
        /**
         * <pre>
         * index of the semgrex expression this match applies to
         * indexed from 0
         * </pre>
         *
         * <code>optional int32 semgrexIndex = 5;</code>
         * @param value The semgrexIndex to set.
         * @return This builder for chaining.
         */
        public Builder setSemgrexIndex(int value) {
          bitField0_ |= 0x00000020;
          semgrexIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * index of the semgrex expression this match applies to
         * indexed from 0
         * </pre>
         *
         * <code>optional int32 semgrexIndex = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearSemgrexIndex() {
          bitField0_ = (bitField0_ & ~0x00000020);
          semgrexIndex_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexResponse.Match)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexResponse.Match)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Match>
          PARSER = new com.google.protobuf.AbstractParser<Match>() {
        @java.lang.Override
        public Match parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Match> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Match> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface SemgrexResultOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match> 
          getMatchList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match getMatch(int index);
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      int getMatchCount();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder> 
          getMatchOrBuilderList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder getMatchOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult}
     */
    public static final class SemgrexResult extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult)
        SemgrexResultOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SemgrexResult.newBuilder() to construct.
      private SemgrexResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SemgrexResult() {
        match_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new SemgrexResult();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder.class);
      }

      public static final int MATCH_FIELD_NUMBER = 1;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match> match_;
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match> getMatchList() {
        return match_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder> 
          getMatchOrBuilderList() {
        return match_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public int getMatchCount() {
        return match_.size();
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match getMatch(int index) {
        return match_.get(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder getMatchOrBuilder(
          int index) {
        return match_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        for (int i = 0; i < getMatchCount(); i++) {
          if (!getMatch(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < match_.size(); i++) {
          output.writeMessage(1, match_.get(i));
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        for (int i = 0; i < match_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, match_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult) obj;

        if (!getMatchList()
            .equals(other.getMatchList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getMatchCount() > 0) {
          hash = (37 * hash) + MATCH_FIELD_NUMBER;
          hash = (53 * hash) + getMatchList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (matchBuilder_ == null) {
            match_ = java.util.Collections.emptyList();
          } else {
            match_ = null;
            matchBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult(this);
          int from_bitField0_ = bitField0_;
          if (matchBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              match_ = java.util.Collections.unmodifiableList(match_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.match_ = match_;
          } else {
            result.match_ = matchBuilder_.build();
          }
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.getDefaultInstance()) return this;
          if (matchBuilder_ == null) {
            if (!other.match_.isEmpty()) {
              if (match_.isEmpty()) {
                match_ = other.match_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureMatchIsMutable();
                match_.addAll(other.match_);
              }
              onChanged();
            }
          } else {
            if (!other.match_.isEmpty()) {
              if (matchBuilder_.isEmpty()) {
                matchBuilder_.dispose();
                matchBuilder_ = null;
                match_ = other.match_;
                bitField0_ = (bitField0_ & ~0x00000001);
                matchBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getMatchFieldBuilder() : null;
              } else {
                matchBuilder_.addAllMessages(other.match_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          for (int i = 0; i < getMatchCount(); i++) {
            if (!getMatch(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.PARSER,
                          extensionRegistry);
                  if (matchBuilder_ == null) {
                    ensureMatchIsMutable();
                    match_.add(m);
                  } else {
                    matchBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match> match_ =
          java.util.Collections.emptyList();
        private void ensureMatchIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            match_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match>(match_);
            bitField0_ |= 0x00000001;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder> matchBuilder_;

        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match> getMatchList() {
          if (matchBuilder_ == null) {
            return java.util.Collections.unmodifiableList(match_);
          } else {
            return matchBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public int getMatchCount() {
          if (matchBuilder_ == null) {
            return match_.size();
          } else {
            return matchBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match getMatch(int index) {
          if (matchBuilder_ == null) {
            return match_.get(index);
          } else {
            return matchBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder setMatch(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match value) {
          if (matchBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMatchIsMutable();
            match_.set(index, value);
            onChanged();
          } else {
            matchBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder setMatch(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder builderForValue) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            match_.set(index, builderForValue.build());
            onChanged();
          } else {
            matchBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder addMatch(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match value) {
          if (matchBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMatchIsMutable();
            match_.add(value);
            onChanged();
          } else {
            matchBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder addMatch(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match value) {
          if (matchBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMatchIsMutable();
            match_.add(index, value);
            onChanged();
          } else {
            matchBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder addMatch(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder builderForValue) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            match_.add(builderForValue.build());
            onChanged();
          } else {
            matchBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder addMatch(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder builderForValue) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            match_.add(index, builderForValue.build());
            onChanged();
          } else {
            matchBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder addAllMatch(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match> values) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, match_);
            onChanged();
          } else {
            matchBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder clearMatch() {
          if (matchBuilder_ == null) {
            match_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            matchBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public Builder removeMatch(int index) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            match_.remove(index);
            onChanged();
          } else {
            matchBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder getMatchBuilder(
            int index) {
          return getMatchFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder getMatchOrBuilder(
            int index) {
          if (matchBuilder_ == null) {
            return match_.get(index);  } else {
            return matchBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder> 
             getMatchOrBuilderList() {
          if (matchBuilder_ != null) {
            return matchBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(match_);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder addMatchBuilder() {
          return getMatchFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder addMatchBuilder(
            int index) {
          return getMatchFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.Match match = 1;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder> 
             getMatchBuilderList() {
          return getMatchFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder> 
            getMatchFieldBuilder() {
          if (matchBuilder_ == null) {
            matchBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Match.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.MatchOrBuilder>(
                    match_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            match_ = null;
          }
          return matchBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<SemgrexResult>
          PARSER = new com.google.protobuf.AbstractParser<SemgrexResult>() {
        @java.lang.Override
        public SemgrexResult parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<SemgrexResult> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<SemgrexResult> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface GraphResultOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult> 
          getResultList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult getResult(int index);
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      int getResultCount();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder> 
          getResultOrBuilderList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder getResultOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult}
     */
    public static final class GraphResult extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult)
        GraphResultOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use GraphResult.newBuilder() to construct.
      private GraphResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private GraphResult() {
        result_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new GraphResult();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder.class);
      }

      public static final int RESULT_FIELD_NUMBER = 1;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult> result_;
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult> getResultList() {
        return result_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder> 
          getResultOrBuilderList() {
        return result_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      @java.lang.Override
      public int getResultCount() {
        return result_.size();
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult getResult(int index) {
        return result_.get(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder getResultOrBuilder(
          int index) {
        return result_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        for (int i = 0; i < getResultCount(); i++) {
          if (!getResult(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < result_.size(); i++) {
          output.writeMessage(1, result_.get(i));
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        for (int i = 0; i < result_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, result_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult) obj;

        if (!getResultList()
            .equals(other.getResultList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getResultCount() > 0) {
          hash = (37 * hash) + RESULT_FIELD_NUMBER;
          hash = (53 * hash) + getResultList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (resultBuilder_ == null) {
            result_ = java.util.Collections.emptyList();
          } else {
            result_ = null;
            resultBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult(this);
          int from_bitField0_ = bitField0_;
          if (resultBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              result_ = java.util.Collections.unmodifiableList(result_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.result_ = result_;
          } else {
            result.result_ = resultBuilder_.build();
          }
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.getDefaultInstance()) return this;
          if (resultBuilder_ == null) {
            if (!other.result_.isEmpty()) {
              if (result_.isEmpty()) {
                result_ = other.result_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureResultIsMutable();
                result_.addAll(other.result_);
              }
              onChanged();
            }
          } else {
            if (!other.result_.isEmpty()) {
              if (resultBuilder_.isEmpty()) {
                resultBuilder_.dispose();
                resultBuilder_ = null;
                result_ = other.result_;
                bitField0_ = (bitField0_ & ~0x00000001);
                resultBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getResultFieldBuilder() : null;
              } else {
                resultBuilder_.addAllMessages(other.result_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          for (int i = 0; i < getResultCount(); i++) {
            if (!getResult(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.PARSER,
                          extensionRegistry);
                  if (resultBuilder_ == null) {
                    ensureResultIsMutable();
                    result_.add(m);
                  } else {
                    resultBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult> result_ =
          java.util.Collections.emptyList();
        private void ensureResultIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            result_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult>(result_);
            bitField0_ |= 0x00000001;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder> resultBuilder_;

        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult> getResultList() {
          if (resultBuilder_ == null) {
            return java.util.Collections.unmodifiableList(result_);
          } else {
            return resultBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public int getResultCount() {
          if (resultBuilder_ == null) {
            return result_.size();
          } else {
            return resultBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult getResult(int index) {
          if (resultBuilder_ == null) {
            return result_.get(index);
          } else {
            return resultBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder setResult(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult value) {
          if (resultBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResultIsMutable();
            result_.set(index, value);
            onChanged();
          } else {
            resultBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder setResult(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder builderForValue) {
          if (resultBuilder_ == null) {
            ensureResultIsMutable();
            result_.set(index, builderForValue.build());
            onChanged();
          } else {
            resultBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder addResult(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult value) {
          if (resultBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResultIsMutable();
            result_.add(value);
            onChanged();
          } else {
            resultBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder addResult(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult value) {
          if (resultBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResultIsMutable();
            result_.add(index, value);
            onChanged();
          } else {
            resultBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder addResult(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder builderForValue) {
          if (resultBuilder_ == null) {
            ensureResultIsMutable();
            result_.add(builderForValue.build());
            onChanged();
          } else {
            resultBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder addResult(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder builderForValue) {
          if (resultBuilder_ == null) {
            ensureResultIsMutable();
            result_.add(index, builderForValue.build());
            onChanged();
          } else {
            resultBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder addAllResult(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult> values) {
          if (resultBuilder_ == null) {
            ensureResultIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, result_);
            onChanged();
          } else {
            resultBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder clearResult() {
          if (resultBuilder_ == null) {
            result_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            resultBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public Builder removeResult(int index) {
          if (resultBuilder_ == null) {
            ensureResultIsMutable();
            result_.remove(index);
            onChanged();
          } else {
            resultBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder getResultBuilder(
            int index) {
          return getResultFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder getResultOrBuilder(
            int index) {
          if (resultBuilder_ == null) {
            return result_.get(index);  } else {
            return resultBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder> 
             getResultOrBuilderList() {
          if (resultBuilder_ != null) {
            return resultBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(result_);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder addResultBuilder() {
          return getResultFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder addResultBuilder(
            int index) {
          return getResultFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.SemgrexResult result = 1;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder> 
             getResultBuilderList() {
          return getResultFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder> 
            getResultFieldBuilder() {
          if (resultBuilder_ == null) {
            resultBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.SemgrexResultOrBuilder>(
                    result_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            result_ = null;
          }
          return resultBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<GraphResult>
          PARSER = new com.google.protobuf.AbstractParser<GraphResult>() {
        @java.lang.Override
        public GraphResult parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<GraphResult> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<GraphResult> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int RESULT_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult> result_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult> getResultList() {
      return result_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder> 
        getResultOrBuilderList() {
      return result_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    @java.lang.Override
    public int getResultCount() {
      return result_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult getResult(int index) {
      return result_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder getResultOrBuilder(
        int index) {
      return result_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getResultCount(); i++) {
        if (!getResult(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < result_.size(); i++) {
        output.writeMessage(1, result_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < result_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, result_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse) obj;

      if (!getResultList()
          .equals(other.getResultList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getResultCount() > 0) {
        hash = (37 * hash) + RESULT_FIELD_NUMBER;
        hash = (53 * hash) + getResultList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The response from running a semgrex
     * If you pass in M semgrex expressions and N dependency graphs,
     * this returns MxN nested results.  Each SemgrexResult can match
     * multiple times in one graph
     * You may want to send multiple semgrexes per query because
     * translating large numbers of dependency graphs to protobufs
     * will be expensive, so doing several queries at once will save time
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.SemgrexResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SemgrexResponse)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (resultBuilder_ == null) {
          result_ = java.util.Collections.emptyList();
        } else {
          result_ = null;
          resultBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse(this);
        int from_bitField0_ = bitField0_;
        if (resultBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            result_ = java.util.Collections.unmodifiableList(result_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.result_ = result_;
        } else {
          result.result_ = resultBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.getDefaultInstance()) return this;
        if (resultBuilder_ == null) {
          if (!other.result_.isEmpty()) {
            if (result_.isEmpty()) {
              result_ = other.result_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureResultIsMutable();
              result_.addAll(other.result_);
            }
            onChanged();
          }
        } else {
          if (!other.result_.isEmpty()) {
            if (resultBuilder_.isEmpty()) {
              resultBuilder_.dispose();
              resultBuilder_ = null;
              result_ = other.result_;
              bitField0_ = (bitField0_ & ~0x00000001);
              resultBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getResultFieldBuilder() : null;
            } else {
              resultBuilder_.addAllMessages(other.result_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getResultCount(); i++) {
          if (!getResult(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.PARSER,
                        extensionRegistry);
                if (resultBuilder_ == null) {
                  ensureResultIsMutable();
                  result_.add(m);
                } else {
                  resultBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult> result_ =
        java.util.Collections.emptyList();
      private void ensureResultIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          result_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult>(result_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder> resultBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult> getResultList() {
        if (resultBuilder_ == null) {
          return java.util.Collections.unmodifiableList(result_);
        } else {
          return resultBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public int getResultCount() {
        if (resultBuilder_ == null) {
          return result_.size();
        } else {
          return resultBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult getResult(int index) {
        if (resultBuilder_ == null) {
          return result_.get(index);
        } else {
          return resultBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder setResult(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.set(index, value);
          onChanged();
        } else {
          resultBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder setResult(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.set(index, builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder addResult(edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.add(value);
          onChanged();
        } else {
          resultBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder addResult(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.add(index, value);
          onChanged();
        } else {
          resultBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder addResult(
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.add(builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder addResult(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.add(index, builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder addAllResult(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult> values) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, result_);
          onChanged();
        } else {
          resultBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder clearResult() {
        if (resultBuilder_ == null) {
          result_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          resultBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public Builder removeResult(int index) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.remove(index);
          onChanged();
        } else {
          resultBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder getResultBuilder(
          int index) {
        return getResultFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder getResultOrBuilder(
          int index) {
        if (resultBuilder_ == null) {
          return result_.get(index);  } else {
          return resultBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder> 
           getResultOrBuilderList() {
        if (resultBuilder_ != null) {
          return resultBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(result_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder addResultBuilder() {
        return getResultFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder addResultBuilder(
          int index) {
        return getResultFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SemgrexResponse.GraphResult result = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder> 
           getResultBuilderList() {
        return getResultFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder> 
          getResultFieldBuilder() {
        if (resultBuilder_ == null) {
          resultBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse.GraphResultOrBuilder>(
                  result_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          result_ = null;
        }
        return resultBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SemgrexResponse)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SemgrexResponse)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SemgrexResponse>
        PARSER = new com.google.protobuf.AbstractParser<SemgrexResponse>() {
      @java.lang.Override
      public SemgrexResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SemgrexResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SemgrexResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SemgrexResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SsurgeonRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SsurgeonRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon> 
        getSsurgeonList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon getSsurgeon(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    int getSsurgeonCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder> 
        getSsurgeonOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder getSsurgeonOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph> 
        getGraphList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    int getGraphCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
        getGraphOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A message for processing an Ssurgeon
   * Each sentence stores information about the tokens making up the
   * corresponding graph
   * An alternative would have been to use the existing Document or
   * Sentence classes, but the problem with that is it would be
   * ambiguous which dependency object to use.
   * The Ssurgeon is composed of two pieces, the semgrex and the
   * ssurgeon operations, along with some optional documentation.
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.SsurgeonRequest}
   */
  public static final class SsurgeonRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SsurgeonRequest)
      SsurgeonRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SsurgeonRequest.newBuilder() to construct.
    private SsurgeonRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SsurgeonRequest() {
      ssurgeon_ = java.util.Collections.emptyList();
      graph_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SsurgeonRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Builder.class);
    }

    public interface SsurgeonOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>optional string semgrex = 1;</code>
       * @return Whether the semgrex field is set.
       */
      boolean hasSemgrex();
      /**
       * <code>optional string semgrex = 1;</code>
       * @return The semgrex.
       */
      java.lang.String getSemgrex();
      /**
       * <code>optional string semgrex = 1;</code>
       * @return The bytes for semgrex.
       */
      com.google.protobuf.ByteString
          getSemgrexBytes();

      /**
       * <code>repeated string operation = 2;</code>
       * @return A list containing the operation.
       */
      java.util.List<java.lang.String>
          getOperationList();
      /**
       * <code>repeated string operation = 2;</code>
       * @return The count of operation.
       */
      int getOperationCount();
      /**
       * <code>repeated string operation = 2;</code>
       * @param index The index of the element to return.
       * @return The operation at the given index.
       */
      java.lang.String getOperation(int index);
      /**
       * <code>repeated string operation = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the operation at the given index.
       */
      com.google.protobuf.ByteString
          getOperationBytes(int index);

      /**
       * <code>optional string id = 3;</code>
       * @return Whether the id field is set.
       */
      boolean hasId();
      /**
       * <code>optional string id = 3;</code>
       * @return The id.
       */
      java.lang.String getId();
      /**
       * <code>optional string id = 3;</code>
       * @return The bytes for id.
       */
      com.google.protobuf.ByteString
          getIdBytes();

      /**
       * <code>optional string notes = 4;</code>
       * @return Whether the notes field is set.
       */
      boolean hasNotes();
      /**
       * <code>optional string notes = 4;</code>
       * @return The notes.
       */
      java.lang.String getNotes();
      /**
       * <code>optional string notes = 4;</code>
       * @return The bytes for notes.
       */
      com.google.protobuf.ByteString
          getNotesBytes();

      /**
       * <code>optional string language = 5;</code>
       * @return Whether the language field is set.
       */
      boolean hasLanguage();
      /**
       * <code>optional string language = 5;</code>
       * @return The language.
       */
      java.lang.String getLanguage();
      /**
       * <code>optional string language = 5;</code>
       * @return The bytes for language.
       */
      com.google.protobuf.ByteString
          getLanguageBytes();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon}
     */
    public static final class Ssurgeon extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon)
        SsurgeonOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Ssurgeon.newBuilder() to construct.
      private Ssurgeon(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Ssurgeon() {
        semgrex_ = "";
        operation_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        id_ = "";
        notes_ = "";
        language_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Ssurgeon();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder.class);
      }

      private int bitField0_;
      public static final int SEMGREX_FIELD_NUMBER = 1;
      private volatile java.lang.Object semgrex_;
      /**
       * <code>optional string semgrex = 1;</code>
       * @return Whether the semgrex field is set.
       */
      @java.lang.Override
      public boolean hasSemgrex() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string semgrex = 1;</code>
       * @return The semgrex.
       */
      @java.lang.Override
      public java.lang.String getSemgrex() {
        java.lang.Object ref = semgrex_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            semgrex_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string semgrex = 1;</code>
       * @return The bytes for semgrex.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSemgrexBytes() {
        java.lang.Object ref = semgrex_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          semgrex_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int OPERATION_FIELD_NUMBER = 2;
      private com.google.protobuf.LazyStringList operation_;
      /**
       * <code>repeated string operation = 2;</code>
       * @return A list containing the operation.
       */
      public com.google.protobuf.ProtocolStringList
          getOperationList() {
        return operation_;
      }
      /**
       * <code>repeated string operation = 2;</code>
       * @return The count of operation.
       */
      public int getOperationCount() {
        return operation_.size();
      }
      /**
       * <code>repeated string operation = 2;</code>
       * @param index The index of the element to return.
       * @return The operation at the given index.
       */
      public java.lang.String getOperation(int index) {
        return operation_.get(index);
      }
      /**
       * <code>repeated string operation = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the operation at the given index.
       */
      public com.google.protobuf.ByteString
          getOperationBytes(int index) {
        return operation_.getByteString(index);
      }

      public static final int ID_FIELD_NUMBER = 3;
      private volatile java.lang.Object id_;
      /**
       * <code>optional string id = 3;</code>
       * @return Whether the id field is set.
       */
      @java.lang.Override
      public boolean hasId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string id = 3;</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            id_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string id = 3;</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int NOTES_FIELD_NUMBER = 4;
      private volatile java.lang.Object notes_;
      /**
       * <code>optional string notes = 4;</code>
       * @return Whether the notes field is set.
       */
      @java.lang.Override
      public boolean hasNotes() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string notes = 4;</code>
       * @return The notes.
       */
      @java.lang.Override
      public java.lang.String getNotes() {
        java.lang.Object ref = notes_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            notes_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string notes = 4;</code>
       * @return The bytes for notes.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getNotesBytes() {
        java.lang.Object ref = notes_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          notes_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int LANGUAGE_FIELD_NUMBER = 5;
      private volatile java.lang.Object language_;
      /**
       * <code>optional string language = 5;</code>
       * @return Whether the language field is set.
       */
      @java.lang.Override
      public boolean hasLanguage() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string language = 5;</code>
       * @return The language.
       */
      @java.lang.Override
      public java.lang.String getLanguage() {
        java.lang.Object ref = language_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            language_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string language = 5;</code>
       * @return The bytes for language.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getLanguageBytes() {
        java.lang.Object ref = language_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          language_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, semgrex_);
        }
        for (int i = 0; i < operation_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, operation_.getRaw(i));
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, id_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 4, notes_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 5, language_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, semgrex_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < operation_.size(); i++) {
            dataSize += computeStringSizeNoTag(operation_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getOperationList().size();
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, id_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, notes_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, language_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon) obj;

        if (hasSemgrex() != other.hasSemgrex()) return false;
        if (hasSemgrex()) {
          if (!getSemgrex()
              .equals(other.getSemgrex())) return false;
        }
        if (!getOperationList()
            .equals(other.getOperationList())) return false;
        if (hasId() != other.hasId()) return false;
        if (hasId()) {
          if (!getId()
              .equals(other.getId())) return false;
        }
        if (hasNotes() != other.hasNotes()) return false;
        if (hasNotes()) {
          if (!getNotes()
              .equals(other.getNotes())) return false;
        }
        if (hasLanguage() != other.hasLanguage()) return false;
        if (hasLanguage()) {
          if (!getLanguage()
              .equals(other.getLanguage())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSemgrex()) {
          hash = (37 * hash) + SEMGREX_FIELD_NUMBER;
          hash = (53 * hash) + getSemgrex().hashCode();
        }
        if (getOperationCount() > 0) {
          hash = (37 * hash) + OPERATION_FIELD_NUMBER;
          hash = (53 * hash) + getOperationList().hashCode();
        }
        if (hasId()) {
          hash = (37 * hash) + ID_FIELD_NUMBER;
          hash = (53 * hash) + getId().hashCode();
        }
        if (hasNotes()) {
          hash = (37 * hash) + NOTES_FIELD_NUMBER;
          hash = (53 * hash) + getNotes().hashCode();
        }
        if (hasLanguage()) {
          hash = (37 * hash) + LANGUAGE_FIELD_NUMBER;
          hash = (53 * hash) + getLanguage().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          semgrex_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          operation_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          id_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          notes_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          language_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.semgrex_ = semgrex_;
          if (((bitField0_ & 0x00000002) != 0)) {
            operation_ = operation_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.operation_ = operation_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000008) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.notes_ = notes_;
          if (((from_bitField0_ & 0x00000010) != 0)) {
            to_bitField0_ |= 0x00000008;
          }
          result.language_ = language_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.getDefaultInstance()) return this;
          if (other.hasSemgrex()) {
            bitField0_ |= 0x00000001;
            semgrex_ = other.semgrex_;
            onChanged();
          }
          if (!other.operation_.isEmpty()) {
            if (operation_.isEmpty()) {
              operation_ = other.operation_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureOperationIsMutable();
              operation_.addAll(other.operation_);
            }
            onChanged();
          }
          if (other.hasId()) {
            bitField0_ |= 0x00000004;
            id_ = other.id_;
            onChanged();
          }
          if (other.hasNotes()) {
            bitField0_ |= 0x00000008;
            notes_ = other.notes_;
            onChanged();
          }
          if (other.hasLanguage()) {
            bitField0_ |= 0x00000010;
            language_ = other.language_;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  semgrex_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  ensureOperationIsMutable();
                  operation_.add(bs);
                  break;
                } // case 18
                case 26: {
                  id_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                case 34: {
                  notes_ = input.readBytes();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
                case 42: {
                  language_ = input.readBytes();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 42
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object semgrex_ = "";
        /**
         * <code>optional string semgrex = 1;</code>
         * @return Whether the semgrex field is set.
         */
        public boolean hasSemgrex() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional string semgrex = 1;</code>
         * @return The semgrex.
         */
        public java.lang.String getSemgrex() {
          java.lang.Object ref = semgrex_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              semgrex_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string semgrex = 1;</code>
         * @return The bytes for semgrex.
         */
        public com.google.protobuf.ByteString
            getSemgrexBytes() {
          java.lang.Object ref = semgrex_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            semgrex_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string semgrex = 1;</code>
         * @param value The semgrex to set.
         * @return This builder for chaining.
         */
        public Builder setSemgrex(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          semgrex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string semgrex = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSemgrex() {
          bitField0_ = (bitField0_ & ~0x00000001);
          semgrex_ = getDefaultInstance().getSemgrex();
          onChanged();
          return this;
        }
        /**
         * <code>optional string semgrex = 1;</code>
         * @param value The bytes for semgrex to set.
         * @return This builder for chaining.
         */
        public Builder setSemgrexBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          semgrex_ = value;
          onChanged();
          return this;
        }

        private com.google.protobuf.LazyStringList operation_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureOperationIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            operation_ = new com.google.protobuf.LazyStringArrayList(operation_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @return A list containing the operation.
         */
        public com.google.protobuf.ProtocolStringList
            getOperationList() {
          return operation_.getUnmodifiableView();
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @return The count of operation.
         */
        public int getOperationCount() {
          return operation_.size();
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @param index The index of the element to return.
         * @return The operation at the given index.
         */
        public java.lang.String getOperation(int index) {
          return operation_.get(index);
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @param index The index of the value to return.
         * @return The bytes of the operation at the given index.
         */
        public com.google.protobuf.ByteString
            getOperationBytes(int index) {
          return operation_.getByteString(index);
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @param index The index to set the value at.
         * @param value The operation to set.
         * @return This builder for chaining.
         */
        public Builder setOperation(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureOperationIsMutable();
          operation_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @param value The operation to add.
         * @return This builder for chaining.
         */
        public Builder addOperation(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureOperationIsMutable();
          operation_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @param values The operation to add.
         * @return This builder for chaining.
         */
        public Builder addAllOperation(
            java.lang.Iterable<java.lang.String> values) {
          ensureOperationIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, operation_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearOperation() {
          operation_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string operation = 2;</code>
         * @param value The bytes of the operation to add.
         * @return This builder for chaining.
         */
        public Builder addOperationBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureOperationIsMutable();
          operation_.add(value);
          onChanged();
          return this;
        }

        private java.lang.Object id_ = "";
        /**
         * <code>optional string id = 3;</code>
         * @return Whether the id field is set.
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional string id = 3;</code>
         * @return The id.
         */
        public java.lang.String getId() {
          java.lang.Object ref = id_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              id_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string id = 3;</code>
         * @return The bytes for id.
         */
        public com.google.protobuf.ByteString
            getIdBytes() {
          java.lang.Object ref = id_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            id_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string id = 3;</code>
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string id = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000004);
          id_ = getDefaultInstance().getId();
          onChanged();
          return this;
        }
        /**
         * <code>optional string id = 3;</code>
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          id_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object notes_ = "";
        /**
         * <code>optional string notes = 4;</code>
         * @return Whether the notes field is set.
         */
        public boolean hasNotes() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional string notes = 4;</code>
         * @return The notes.
         */
        public java.lang.String getNotes() {
          java.lang.Object ref = notes_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              notes_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string notes = 4;</code>
         * @return The bytes for notes.
         */
        public com.google.protobuf.ByteString
            getNotesBytes() {
          java.lang.Object ref = notes_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            notes_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string notes = 4;</code>
         * @param value The notes to set.
         * @return This builder for chaining.
         */
        public Builder setNotes(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          notes_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string notes = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearNotes() {
          bitField0_ = (bitField0_ & ~0x00000008);
          notes_ = getDefaultInstance().getNotes();
          onChanged();
          return this;
        }
        /**
         * <code>optional string notes = 4;</code>
         * @param value The bytes for notes to set.
         * @return This builder for chaining.
         */
        public Builder setNotesBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          notes_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object language_ = "";
        /**
         * <code>optional string language = 5;</code>
         * @return Whether the language field is set.
         */
        public boolean hasLanguage() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <code>optional string language = 5;</code>
         * @return The language.
         */
        public java.lang.String getLanguage() {
          java.lang.Object ref = language_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              language_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string language = 5;</code>
         * @return The bytes for language.
         */
        public com.google.protobuf.ByteString
            getLanguageBytes() {
          java.lang.Object ref = language_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            language_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string language = 5;</code>
         * @param value The language to set.
         * @return This builder for chaining.
         */
        public Builder setLanguage(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
          language_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string language = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearLanguage() {
          bitField0_ = (bitField0_ & ~0x00000010);
          language_ = getDefaultInstance().getLanguage();
          onChanged();
          return this;
        }
        /**
         * <code>optional string language = 5;</code>
         * @param value The bytes for language to set.
         * @return This builder for chaining.
         */
        public Builder setLanguageBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
          language_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Ssurgeon>
          PARSER = new com.google.protobuf.AbstractParser<Ssurgeon>() {
        @java.lang.Override
        public Ssurgeon parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Ssurgeon> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Ssurgeon> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int SSURGEON_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon> ssurgeon_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon> getSsurgeonList() {
      return ssurgeon_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder> 
        getSsurgeonOrBuilderList() {
      return ssurgeon_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    @java.lang.Override
    public int getSsurgeonCount() {
      return ssurgeon_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon getSsurgeon(int index) {
      return ssurgeon_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder getSsurgeonOrBuilder(
        int index) {
      return ssurgeon_.get(index);
    }

    public static final int GRAPH_FIELD_NUMBER = 2;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph> graph_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph> getGraphList() {
      return graph_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
        getGraphOrBuilderList() {
      return graph_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    @java.lang.Override
    public int getGraphCount() {
      return graph_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph(int index) {
      return graph_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder(
        int index) {
      return graph_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getGraphCount(); i++) {
        if (!getGraph(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < ssurgeon_.size(); i++) {
        output.writeMessage(1, ssurgeon_.get(i));
      }
      for (int i = 0; i < graph_.size(); i++) {
        output.writeMessage(2, graph_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < ssurgeon_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, ssurgeon_.get(i));
      }
      for (int i = 0; i < graph_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, graph_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest) obj;

      if (!getSsurgeonList()
          .equals(other.getSsurgeonList())) return false;
      if (!getGraphList()
          .equals(other.getGraphList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getSsurgeonCount() > 0) {
        hash = (37 * hash) + SSURGEON_FIELD_NUMBER;
        hash = (53 * hash) + getSsurgeonList().hashCode();
      }
      if (getGraphCount() > 0) {
        hash = (37 * hash) + GRAPH_FIELD_NUMBER;
        hash = (53 * hash) + getGraphList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A message for processing an Ssurgeon
     * Each sentence stores information about the tokens making up the
     * corresponding graph
     * An alternative would have been to use the existing Document or
     * Sentence classes, but the problem with that is it would be
     * ambiguous which dependency object to use.
     * The Ssurgeon is composed of two pieces, the semgrex and the
     * ssurgeon operations, along with some optional documentation.
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.SsurgeonRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SsurgeonRequest)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (ssurgeonBuilder_ == null) {
          ssurgeon_ = java.util.Collections.emptyList();
        } else {
          ssurgeon_ = null;
          ssurgeonBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (graphBuilder_ == null) {
          graph_ = java.util.Collections.emptyList();
        } else {
          graph_ = null;
          graphBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest(this);
        int from_bitField0_ = bitField0_;
        if (ssurgeonBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            ssurgeon_ = java.util.Collections.unmodifiableList(ssurgeon_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.ssurgeon_ = ssurgeon_;
        } else {
          result.ssurgeon_ = ssurgeonBuilder_.build();
        }
        if (graphBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            graph_ = java.util.Collections.unmodifiableList(graph_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.graph_ = graph_;
        } else {
          result.graph_ = graphBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.getDefaultInstance()) return this;
        if (ssurgeonBuilder_ == null) {
          if (!other.ssurgeon_.isEmpty()) {
            if (ssurgeon_.isEmpty()) {
              ssurgeon_ = other.ssurgeon_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSsurgeonIsMutable();
              ssurgeon_.addAll(other.ssurgeon_);
            }
            onChanged();
          }
        } else {
          if (!other.ssurgeon_.isEmpty()) {
            if (ssurgeonBuilder_.isEmpty()) {
              ssurgeonBuilder_.dispose();
              ssurgeonBuilder_ = null;
              ssurgeon_ = other.ssurgeon_;
              bitField0_ = (bitField0_ & ~0x00000001);
              ssurgeonBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSsurgeonFieldBuilder() : null;
            } else {
              ssurgeonBuilder_.addAllMessages(other.ssurgeon_);
            }
          }
        }
        if (graphBuilder_ == null) {
          if (!other.graph_.isEmpty()) {
            if (graph_.isEmpty()) {
              graph_ = other.graph_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureGraphIsMutable();
              graph_.addAll(other.graph_);
            }
            onChanged();
          }
        } else {
          if (!other.graph_.isEmpty()) {
            if (graphBuilder_.isEmpty()) {
              graphBuilder_.dispose();
              graphBuilder_ = null;
              graph_ = other.graph_;
              bitField0_ = (bitField0_ & ~0x00000002);
              graphBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getGraphFieldBuilder() : null;
            } else {
              graphBuilder_.addAllMessages(other.graph_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getGraphCount(); i++) {
          if (!getGraph(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.PARSER,
                        extensionRegistry);
                if (ssurgeonBuilder_ == null) {
                  ensureSsurgeonIsMutable();
                  ssurgeon_.add(m);
                } else {
                  ssurgeonBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.PARSER,
                        extensionRegistry);
                if (graphBuilder_ == null) {
                  ensureGraphIsMutable();
                  graph_.add(m);
                } else {
                  graphBuilder_.addMessage(m);
                }
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon> ssurgeon_ =
        java.util.Collections.emptyList();
      private void ensureSsurgeonIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          ssurgeon_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon>(ssurgeon_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder> ssurgeonBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon> getSsurgeonList() {
        if (ssurgeonBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ssurgeon_);
        } else {
          return ssurgeonBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public int getSsurgeonCount() {
        if (ssurgeonBuilder_ == null) {
          return ssurgeon_.size();
        } else {
          return ssurgeonBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon getSsurgeon(int index) {
        if (ssurgeonBuilder_ == null) {
          return ssurgeon_.get(index);
        } else {
          return ssurgeonBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder setSsurgeon(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon value) {
        if (ssurgeonBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSsurgeonIsMutable();
          ssurgeon_.set(index, value);
          onChanged();
        } else {
          ssurgeonBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder setSsurgeon(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder builderForValue) {
        if (ssurgeonBuilder_ == null) {
          ensureSsurgeonIsMutable();
          ssurgeon_.set(index, builderForValue.build());
          onChanged();
        } else {
          ssurgeonBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder addSsurgeon(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon value) {
        if (ssurgeonBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSsurgeonIsMutable();
          ssurgeon_.add(value);
          onChanged();
        } else {
          ssurgeonBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder addSsurgeon(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon value) {
        if (ssurgeonBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSsurgeonIsMutable();
          ssurgeon_.add(index, value);
          onChanged();
        } else {
          ssurgeonBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder addSsurgeon(
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder builderForValue) {
        if (ssurgeonBuilder_ == null) {
          ensureSsurgeonIsMutable();
          ssurgeon_.add(builderForValue.build());
          onChanged();
        } else {
          ssurgeonBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder addSsurgeon(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder builderForValue) {
        if (ssurgeonBuilder_ == null) {
          ensureSsurgeonIsMutable();
          ssurgeon_.add(index, builderForValue.build());
          onChanged();
        } else {
          ssurgeonBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder addAllSsurgeon(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon> values) {
        if (ssurgeonBuilder_ == null) {
          ensureSsurgeonIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ssurgeon_);
          onChanged();
        } else {
          ssurgeonBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder clearSsurgeon() {
        if (ssurgeonBuilder_ == null) {
          ssurgeon_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          ssurgeonBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public Builder removeSsurgeon(int index) {
        if (ssurgeonBuilder_ == null) {
          ensureSsurgeonIsMutable();
          ssurgeon_.remove(index);
          onChanged();
        } else {
          ssurgeonBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder getSsurgeonBuilder(
          int index) {
        return getSsurgeonFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder getSsurgeonOrBuilder(
          int index) {
        if (ssurgeonBuilder_ == null) {
          return ssurgeon_.get(index);  } else {
          return ssurgeonBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder> 
           getSsurgeonOrBuilderList() {
        if (ssurgeonBuilder_ != null) {
          return ssurgeonBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ssurgeon_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder addSsurgeonBuilder() {
        return getSsurgeonFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder addSsurgeonBuilder(
          int index) {
        return getSsurgeonFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonRequest.Ssurgeon ssurgeon = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder> 
           getSsurgeonBuilderList() {
        return getSsurgeonFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder> 
          getSsurgeonFieldBuilder() {
        if (ssurgeonBuilder_ == null) {
          ssurgeonBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.Ssurgeon.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest.SsurgeonOrBuilder>(
                  ssurgeon_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          ssurgeon_ = null;
        }
        return ssurgeonBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph> graph_ =
        java.util.Collections.emptyList();
      private void ensureGraphIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          graph_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph>(graph_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> graphBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph> getGraphList() {
        if (graphBuilder_ == null) {
          return java.util.Collections.unmodifiableList(graph_);
        } else {
          return graphBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public int getGraphCount() {
        if (graphBuilder_ == null) {
          return graph_.size();
        } else {
          return graphBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph(int index) {
        if (graphBuilder_ == null) {
          return graph_.get(index);
        } else {
          return graphBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder setGraph(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (graphBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGraphIsMutable();
          graph_.set(index, value);
          onChanged();
        } else {
          graphBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder setGraph(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (graphBuilder_ == null) {
          ensureGraphIsMutable();
          graph_.set(index, builderForValue.build());
          onChanged();
        } else {
          graphBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder addGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (graphBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGraphIsMutable();
          graph_.add(value);
          onChanged();
        } else {
          graphBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder addGraph(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
        if (graphBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGraphIsMutable();
          graph_.add(index, value);
          onChanged();
        } else {
          graphBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder addGraph(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (graphBuilder_ == null) {
          ensureGraphIsMutable();
          graph_.add(builderForValue.build());
          onChanged();
        } else {
          graphBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder addGraph(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
        if (graphBuilder_ == null) {
          ensureGraphIsMutable();
          graph_.add(index, builderForValue.build());
          onChanged();
        } else {
          graphBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder addAllGraph(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph> values) {
        if (graphBuilder_ == null) {
          ensureGraphIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, graph_);
          onChanged();
        } else {
          graphBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder clearGraph() {
        if (graphBuilder_ == null) {
          graph_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          graphBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public Builder removeGraph(int index) {
        if (graphBuilder_ == null) {
          ensureGraphIsMutable();
          graph_.remove(index);
          onChanged();
        } else {
          graphBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getGraphBuilder(
          int index) {
        return getGraphFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder(
          int index) {
        if (graphBuilder_ == null) {
          return graph_.get(index);  } else {
          return graphBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
           getGraphOrBuilderList() {
        if (graphBuilder_ != null) {
          return graphBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(graph_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder addGraphBuilder() {
        return getGraphFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder addGraphBuilder(
          int index) {
        return getGraphFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyGraph graph = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder> 
           getGraphBuilderList() {
        return getGraphFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
          getGraphFieldBuilder() {
        if (graphBuilder_ == null) {
          graphBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                  graph_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          graph_ = null;
        }
        return graphBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SsurgeonRequest)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SsurgeonRequest)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SsurgeonRequest>
        PARSER = new com.google.protobuf.AbstractParser<SsurgeonRequest>() {
      @java.lang.Override
      public SsurgeonRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SsurgeonRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SsurgeonRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SsurgeonResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SsurgeonResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult> 
        getResultList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult getResult(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    int getResultCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder> 
        getResultOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder getResultOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code edu.stanford.nlp.pipeline.SsurgeonResponse}
   */
  public static final class SsurgeonResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SsurgeonResponse)
      SsurgeonResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SsurgeonResponse.newBuilder() to construct.
    private SsurgeonResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SsurgeonResponse() {
      result_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SsurgeonResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.Builder.class);
    }

    public interface SsurgeonResultOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       * @return Whether the graph field is set.
       */
      boolean hasGraph();
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       * @return The graph.
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph();
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder();

      /**
       * <code>optional bool changed = 2;</code>
       * @return Whether the changed field is set.
       */
      boolean hasChanged();
      /**
       * <code>optional bool changed = 2;</code>
       * @return The changed.
       */
      boolean getChanged();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult}
     */
    public static final class SsurgeonResult extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult)
        SsurgeonResultOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SsurgeonResult.newBuilder() to construct.
      private SsurgeonResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SsurgeonResult() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new SsurgeonResult();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder.class);
      }

      private int bitField0_;
      public static final int GRAPH_FIELD_NUMBER = 1;
      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph graph_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       * @return Whether the graph field is set.
       */
      @java.lang.Override
      public boolean hasGraph() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       * @return The graph.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph() {
        return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder() {
        return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
      }

      public static final int CHANGED_FIELD_NUMBER = 2;
      private boolean changed_;
      /**
       * <code>optional bool changed = 2;</code>
       * @return Whether the changed field is set.
       */
      @java.lang.Override
      public boolean hasChanged() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional bool changed = 2;</code>
       * @return The changed.
       */
      @java.lang.Override
      public boolean getChanged() {
        return changed_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (hasGraph()) {
          if (!getGraph().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getGraph());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeBool(2, changed_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getGraph());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, changed_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult) obj;

        if (hasGraph() != other.hasGraph()) return false;
        if (hasGraph()) {
          if (!getGraph()
              .equals(other.getGraph())) return false;
        }
        if (hasChanged() != other.hasChanged()) return false;
        if (hasChanged()) {
          if (getChanged()
              != other.getChanged()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasGraph()) {
          hash = (37 * hash) + GRAPH_FIELD_NUMBER;
          hash = (53 * hash) + getGraph().hashCode();
        }
        if (hasChanged()) {
          hash = (37 * hash) + CHANGED_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getChanged());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult)
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getGraphFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (graphBuilder_ == null) {
            graph_ = null;
          } else {
            graphBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          changed_ = false;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (graphBuilder_ == null) {
              result.graph_ = graph_;
            } else {
              result.graph_ = graphBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.changed_ = changed_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.getDefaultInstance()) return this;
          if (other.hasGraph()) {
            mergeGraph(other.getGraph());
          }
          if (other.hasChanged()) {
            setChanged(other.getChanged());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (hasGraph()) {
            if (!getGraph().isInitialized()) {
              return false;
            }
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getGraphFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 16: {
                  changed_ = input.readBool();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph graph_;
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> graphBuilder_;
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         * @return Whether the graph field is set.
         */
        public boolean hasGraph() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         * @return The graph.
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph() {
          if (graphBuilder_ == null) {
            return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
          } else {
            return graphBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public Builder setGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
          if (graphBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            graph_ = value;
            onChanged();
          } else {
            graphBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public Builder setGraph(
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
          if (graphBuilder_ == null) {
            graph_ = builderForValue.build();
            onChanged();
          } else {
            graphBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public Builder mergeGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
          if (graphBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                graph_ != null &&
                graph_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
              graph_ =
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(graph_).mergeFrom(value).buildPartial();
            } else {
              graph_ = value;
            }
            onChanged();
          } else {
            graphBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public Builder clearGraph() {
          if (graphBuilder_ == null) {
            graph_ = null;
            onChanged();
          } else {
            graphBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getGraphBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getGraphFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder() {
          if (graphBuilder_ != null) {
            return graphBuilder_.getMessageOrBuilder();
          } else {
            return graph_ == null ?
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
          }
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
            getGraphFieldBuilder() {
          if (graphBuilder_ == null) {
            graphBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                    getGraph(),
                    getParentForChildren(),
                    isClean());
            graph_ = null;
          }
          return graphBuilder_;
        }

        private boolean changed_ ;
        /**
         * <code>optional bool changed = 2;</code>
         * @return Whether the changed field is set.
         */
        @java.lang.Override
        public boolean hasChanged() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional bool changed = 2;</code>
         * @return The changed.
         */
        @java.lang.Override
        public boolean getChanged() {
          return changed_;
        }
        /**
         * <code>optional bool changed = 2;</code>
         * @param value The changed to set.
         * @return This builder for chaining.
         */
        public Builder setChanged(boolean value) {
          bitField0_ |= 0x00000002;
          changed_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool changed = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearChanged() {
          bitField0_ = (bitField0_ & ~0x00000002);
          changed_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<SsurgeonResult>
          PARSER = new com.google.protobuf.AbstractParser<SsurgeonResult>() {
        @java.lang.Override
        public SsurgeonResult parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<SsurgeonResult> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<SsurgeonResult> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int RESULT_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult> result_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult> getResultList() {
      return result_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder> 
        getResultOrBuilderList() {
      return result_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    @java.lang.Override
    public int getResultCount() {
      return result_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult getResult(int index) {
      return result_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder getResultOrBuilder(
        int index) {
      return result_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getResultCount(); i++) {
        if (!getResult(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < result_.size(); i++) {
        output.writeMessage(1, result_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < result_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, result_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse other = (edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse) obj;

      if (!getResultList()
          .equals(other.getResultList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getResultCount() > 0) {
        hash = (37 * hash) + RESULT_FIELD_NUMBER;
        hash = (53 * hash) + getResultList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.SsurgeonResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.SsurgeonResponse)
        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (resultBuilder_ == null) {
          result_ = java.util.Collections.emptyList();
        } else {
          result_ = null;
          resultBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse result = new edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse(this);
        int from_bitField0_ = bitField0_;
        if (resultBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            result_ = java.util.Collections.unmodifiableList(result_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.result_ = result_;
        } else {
          result.result_ = resultBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.getDefaultInstance()) return this;
        if (resultBuilder_ == null) {
          if (!other.result_.isEmpty()) {
            if (result_.isEmpty()) {
              result_ = other.result_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureResultIsMutable();
              result_.addAll(other.result_);
            }
            onChanged();
          }
        } else {
          if (!other.result_.isEmpty()) {
            if (resultBuilder_.isEmpty()) {
              resultBuilder_.dispose();
              resultBuilder_ = null;
              result_ = other.result_;
              bitField0_ = (bitField0_ & ~0x00000001);
              resultBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getResultFieldBuilder() : null;
            } else {
              resultBuilder_.addAllMessages(other.result_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getResultCount(); i++) {
          if (!getResult(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.PARSER,
                        extensionRegistry);
                if (resultBuilder_ == null) {
                  ensureResultIsMutable();
                  result_.add(m);
                } else {
                  resultBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult> result_ =
        java.util.Collections.emptyList();
      private void ensureResultIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          result_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult>(result_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder> resultBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult> getResultList() {
        if (resultBuilder_ == null) {
          return java.util.Collections.unmodifiableList(result_);
        } else {
          return resultBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public int getResultCount() {
        if (resultBuilder_ == null) {
          return result_.size();
        } else {
          return resultBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult getResult(int index) {
        if (resultBuilder_ == null) {
          return result_.get(index);
        } else {
          return resultBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder setResult(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.set(index, value);
          onChanged();
        } else {
          resultBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder setResult(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.set(index, builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder addResult(edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.add(value);
          onChanged();
        } else {
          resultBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder addResult(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultIsMutable();
          result_.add(index, value);
          onChanged();
        } else {
          resultBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder addResult(
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.add(builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder addResult(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.add(index, builderForValue.build());
          onChanged();
        } else {
          resultBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder addAllResult(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult> values) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, result_);
          onChanged();
        } else {
          resultBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder clearResult() {
        if (resultBuilder_ == null) {
          result_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          resultBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public Builder removeResult(int index) {
        if (resultBuilder_ == null) {
          ensureResultIsMutable();
          result_.remove(index);
          onChanged();
        } else {
          resultBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder getResultBuilder(
          int index) {
        return getResultFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder getResultOrBuilder(
          int index) {
        if (resultBuilder_ == null) {
          return result_.get(index);  } else {
          return resultBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder> 
           getResultOrBuilderList() {
        if (resultBuilder_ != null) {
          return resultBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(result_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder addResultBuilder() {
        return getResultFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder addResultBuilder(
          int index) {
        return getResultFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.SsurgeonResponse.SsurgeonResult result = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder> 
           getResultBuilderList() {
        return getResultFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder> 
          getResultFieldBuilder() {
        if (resultBuilder_ == null) {
          resultBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse.SsurgeonResultOrBuilder>(
                  result_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          result_ = null;
        }
        return resultBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.SsurgeonResponse)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.SsurgeonResponse)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SsurgeonResponse>
        PARSER = new com.google.protobuf.AbstractParser<SsurgeonResponse>() {
      @java.lang.Override
      public SsurgeonResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SsurgeonResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SsurgeonResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.SsurgeonResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TokensRegexRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TokensRegexRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
     * @return Whether the doc field is set.
     */
    boolean hasDoc();
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
     * @return The doc.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDoc();
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder getDocOrBuilder();

    /**
     * <code>repeated string pattern = 2;</code>
     * @return A list containing the pattern.
     */
    java.util.List<java.lang.String>
        getPatternList();
    /**
     * <code>repeated string pattern = 2;</code>
     * @return The count of pattern.
     */
    int getPatternCount();
    /**
     * <code>repeated string pattern = 2;</code>
     * @param index The index of the element to return.
     * @return The pattern at the given index.
     */
    java.lang.String getPattern(int index);
    /**
     * <code>repeated string pattern = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the pattern at the given index.
     */
    com.google.protobuf.ByteString
        getPatternBytes(int index);
  }
  /**
   * <pre>
   * It's possible to send in a whole document, but we
   * only care about the Sentences and Tokens
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexRequest}
   */
  public static final class TokensRegexRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TokensRegexRequest)
      TokensRegexRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TokensRegexRequest.newBuilder() to construct.
    private TokensRegexRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TokensRegexRequest() {
      pattern_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TokensRegexRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest.Builder.class);
    }

    private int bitField0_;
    public static final int DOC_FIELD_NUMBER = 1;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Document doc_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
     * @return Whether the doc field is set.
     */
    @java.lang.Override
    public boolean hasDoc() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
     * @return The doc.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDoc() {
      return doc_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance() : doc_;
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder getDocOrBuilder() {
      return doc_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance() : doc_;
    }

    public static final int PATTERN_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList pattern_;
    /**
     * <code>repeated string pattern = 2;</code>
     * @return A list containing the pattern.
     */
    public com.google.protobuf.ProtocolStringList
        getPatternList() {
      return pattern_;
    }
    /**
     * <code>repeated string pattern = 2;</code>
     * @return The count of pattern.
     */
    public int getPatternCount() {
      return pattern_.size();
    }
    /**
     * <code>repeated string pattern = 2;</code>
     * @param index The index of the element to return.
     * @return The pattern at the given index.
     */
    public java.lang.String getPattern(int index) {
      return pattern_.get(index);
    }
    /**
     * <code>repeated string pattern = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the pattern at the given index.
     */
    public com.google.protobuf.ByteString
        getPatternBytes(int index) {
      return pattern_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasDoc()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getDoc().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getDoc());
      }
      for (int i = 0; i < pattern_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, pattern_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getDoc());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < pattern_.size(); i++) {
          dataSize += computeStringSizeNoTag(pattern_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPatternList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest) obj;

      if (hasDoc() != other.hasDoc()) return false;
      if (hasDoc()) {
        if (!getDoc()
            .equals(other.getDoc())) return false;
      }
      if (!getPatternList()
          .equals(other.getPatternList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDoc()) {
        hash = (37 * hash) + DOC_FIELD_NUMBER;
        hash = (53 * hash) + getDoc().hashCode();
      }
      if (getPatternCount() > 0) {
        hash = (37 * hash) + PATTERN_FIELD_NUMBER;
        hash = (53 * hash) + getPatternList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * It's possible to send in a whole document, but we
     * only care about the Sentences and Tokens
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TokensRegexRequest)
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDocFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (docBuilder_ == null) {
          doc_ = null;
        } else {
          docBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        pattern_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (docBuilder_ == null) {
            result.doc_ = doc_;
          } else {
            result.doc_ = docBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          pattern_ = pattern_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.pattern_ = pattern_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest.getDefaultInstance()) return this;
        if (other.hasDoc()) {
          mergeDoc(other.getDoc());
        }
        if (!other.pattern_.isEmpty()) {
          if (pattern_.isEmpty()) {
            pattern_ = other.pattern_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensurePatternIsMutable();
            pattern_.addAll(other.pattern_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasDoc()) {
          return false;
        }
        if (!getDoc().isInitialized()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getDocFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensurePatternIsMutable();
                pattern_.add(bs);
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Document doc_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Document, edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder> docBuilder_;
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       * @return Whether the doc field is set.
       */
      public boolean hasDoc() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       * @return The doc.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDoc() {
        if (docBuilder_ == null) {
          return doc_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance() : doc_;
        } else {
          return docBuilder_.getMessage();
        }
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       */
      public Builder setDoc(edu.stanford.nlp.pipeline.CoreNLPProtos.Document value) {
        if (docBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          doc_ = value;
          onChanged();
        } else {
          docBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       */
      public Builder setDoc(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder builderForValue) {
        if (docBuilder_ == null) {
          doc_ = builderForValue.build();
          onChanged();
        } else {
          docBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       */
      public Builder mergeDoc(edu.stanford.nlp.pipeline.CoreNLPProtos.Document value) {
        if (docBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              doc_ != null &&
              doc_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance()) {
            doc_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document.newBuilder(doc_).mergeFrom(value).buildPartial();
          } else {
            doc_ = value;
          }
          onChanged();
        } else {
          docBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       */
      public Builder clearDoc() {
        if (docBuilder_ == null) {
          doc_ = null;
          onChanged();
        } else {
          docBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder getDocBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDocFieldBuilder().getBuilder();
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder getDocOrBuilder() {
        if (docBuilder_ != null) {
          return docBuilder_.getMessageOrBuilder();
        } else {
          return doc_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance() : doc_;
        }
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document doc = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Document, edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder> 
          getDocFieldBuilder() {
        if (docBuilder_ == null) {
          docBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document, edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder>(
                  getDoc(),
                  getParentForChildren(),
                  isClean());
          doc_ = null;
        }
        return docBuilder_;
      }

      private com.google.protobuf.LazyStringList pattern_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensurePatternIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          pattern_ = new com.google.protobuf.LazyStringArrayList(pattern_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @return A list containing the pattern.
       */
      public com.google.protobuf.ProtocolStringList
          getPatternList() {
        return pattern_.getUnmodifiableView();
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @return The count of pattern.
       */
      public int getPatternCount() {
        return pattern_.size();
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @param index The index of the element to return.
       * @return The pattern at the given index.
       */
      public java.lang.String getPattern(int index) {
        return pattern_.get(index);
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the pattern at the given index.
       */
      public com.google.protobuf.ByteString
          getPatternBytes(int index) {
        return pattern_.getByteString(index);
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @param index The index to set the value at.
       * @param value The pattern to set.
       * @return This builder for chaining.
       */
      public Builder setPattern(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePatternIsMutable();
        pattern_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @param value The pattern to add.
       * @return This builder for chaining.
       */
      public Builder addPattern(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePatternIsMutable();
        pattern_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @param values The pattern to add.
       * @return This builder for chaining.
       */
      public Builder addAllPattern(
          java.lang.Iterable<java.lang.String> values) {
        ensurePatternIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, pattern_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPattern() {
        pattern_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string pattern = 2;</code>
       * @param value The bytes of the pattern to add.
       * @return This builder for chaining.
       */
      public Builder addPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePatternIsMutable();
        pattern_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TokensRegexRequest)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TokensRegexRequest)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<TokensRegexRequest>
        PARSER = new com.google.protobuf.AbstractParser<TokensRegexRequest>() {
      @java.lang.Override
      public TokensRegexRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<TokensRegexRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TokensRegexRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TokensRegexResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TokensRegexResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch> 
        getMatchList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch getMatch(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    int getMatchCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder> 
        getMatchOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder getMatchOrBuilder(
        int index);
  }
  /**
   * <pre>
   * The result will be a nested structure:
   * repeated PatternMatch, one for each pattern
   * each PatternMatch has a repeated Match,
   * which tells you which sentence matched and where
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexResponse}
   */
  public static final class TokensRegexResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TokensRegexResponse)
      TokensRegexResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TokensRegexResponse.newBuilder() to construct.
    private TokensRegexResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TokensRegexResponse() {
      match_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TokensRegexResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Builder.class);
    }

    public interface MatchLocationOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>optional string text = 1;</code>
       * @return Whether the text field is set.
       */
      boolean hasText();
      /**
       * <code>optional string text = 1;</code>
       * @return The text.
       */
      java.lang.String getText();
      /**
       * <code>optional string text = 1;</code>
       * @return The bytes for text.
       */
      com.google.protobuf.ByteString
          getTextBytes();

      /**
       * <code>optional int32 begin = 2;</code>
       * @return Whether the begin field is set.
       */
      boolean hasBegin();
      /**
       * <code>optional int32 begin = 2;</code>
       * @return The begin.
       */
      int getBegin();

      /**
       * <code>optional int32 end = 3;</code>
       * @return Whether the end field is set.
       */
      boolean hasEnd();
      /**
       * <code>optional int32 end = 3;</code>
       * @return The end.
       */
      int getEnd();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation}
     */
    public static final class MatchLocation extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation)
        MatchLocationOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use MatchLocation.newBuilder() to construct.
      private MatchLocation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private MatchLocation() {
        text_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new MatchLocation();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder.class);
      }

      private int bitField0_;
      public static final int TEXT_FIELD_NUMBER = 1;
      private volatile java.lang.Object text_;
      /**
       * <code>optional string text = 1;</code>
       * @return Whether the text field is set.
       */
      @java.lang.Override
      public boolean hasText() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string text = 1;</code>
       * @return The text.
       */
      @java.lang.Override
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            text_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string text = 1;</code>
       * @return The bytes for text.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int BEGIN_FIELD_NUMBER = 2;
      private int begin_;
      /**
       * <code>optional int32 begin = 2;</code>
       * @return Whether the begin field is set.
       */
      @java.lang.Override
      public boolean hasBegin() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int32 begin = 2;</code>
       * @return The begin.
       */
      @java.lang.Override
      public int getBegin() {
        return begin_;
      }

      public static final int END_FIELD_NUMBER = 3;
      private int end_;
      /**
       * <code>optional int32 end = 3;</code>
       * @return Whether the end field is set.
       */
      @java.lang.Override
      public boolean hasEnd() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional int32 end = 3;</code>
       * @return The end.
       */
      @java.lang.Override
      public int getEnd() {
        return end_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, text_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeInt32(2, begin_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeInt32(3, end_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, text_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, begin_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, end_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation) obj;

        if (hasText() != other.hasText()) return false;
        if (hasText()) {
          if (!getText()
              .equals(other.getText())) return false;
        }
        if (hasBegin() != other.hasBegin()) return false;
        if (hasBegin()) {
          if (getBegin()
              != other.getBegin()) return false;
        }
        if (hasEnd() != other.hasEnd()) return false;
        if (hasEnd()) {
          if (getEnd()
              != other.getEnd()) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasText()) {
          hash = (37 * hash) + TEXT_FIELD_NUMBER;
          hash = (53 * hash) + getText().hashCode();
        }
        if (hasBegin()) {
          hash = (37 * hash) + BEGIN_FIELD_NUMBER;
          hash = (53 * hash) + getBegin();
        }
        if (hasEnd()) {
          hash = (37 * hash) + END_FIELD_NUMBER;
          hash = (53 * hash) + getEnd();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation)
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          text_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          begin_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          end_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.text_ = text_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.begin_ = begin_;
            to_bitField0_ |= 0x00000002;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.end_ = end_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance()) return this;
          if (other.hasText()) {
            bitField0_ |= 0x00000001;
            text_ = other.text_;
            onChanged();
          }
          if (other.hasBegin()) {
            setBegin(other.getBegin());
          }
          if (other.hasEnd()) {
            setEnd(other.getEnd());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  text_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 16: {
                  begin_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 24: {
                  end_ = input.readInt32();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object text_ = "";
        /**
         * <code>optional string text = 1;</code>
         * @return Whether the text field is set.
         */
        public boolean hasText() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional string text = 1;</code>
         * @return The text.
         */
        public java.lang.String getText() {
          java.lang.Object ref = text_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              text_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string text = 1;</code>
         * @return The bytes for text.
         */
        public com.google.protobuf.ByteString
            getTextBytes() {
          java.lang.Object ref = text_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            text_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string text = 1;</code>
         * @param value The text to set.
         * @return This builder for chaining.
         */
        public Builder setText(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          text_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string text = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearText() {
          bitField0_ = (bitField0_ & ~0x00000001);
          text_ = getDefaultInstance().getText();
          onChanged();
          return this;
        }
        /**
         * <code>optional string text = 1;</code>
         * @param value The bytes for text to set.
         * @return This builder for chaining.
         */
        public Builder setTextBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          text_ = value;
          onChanged();
          return this;
        }

        private int begin_ ;
        /**
         * <code>optional int32 begin = 2;</code>
         * @return Whether the begin field is set.
         */
        @java.lang.Override
        public boolean hasBegin() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional int32 begin = 2;</code>
         * @return The begin.
         */
        @java.lang.Override
        public int getBegin() {
          return begin_;
        }
        /**
         * <code>optional int32 begin = 2;</code>
         * @param value The begin to set.
         * @return This builder for chaining.
         */
        public Builder setBegin(int value) {
          bitField0_ |= 0x00000002;
          begin_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int32 begin = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearBegin() {
          bitField0_ = (bitField0_ & ~0x00000002);
          begin_ = 0;
          onChanged();
          return this;
        }

        private int end_ ;
        /**
         * <code>optional int32 end = 3;</code>
         * @return Whether the end field is set.
         */
        @java.lang.Override
        public boolean hasEnd() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>optional int32 end = 3;</code>
         * @return The end.
         */
        @java.lang.Override
        public int getEnd() {
          return end_;
        }
        /**
         * <code>optional int32 end = 3;</code>
         * @param value The end to set.
         * @return This builder for chaining.
         */
        public Builder setEnd(int value) {
          bitField0_ |= 0x00000004;
          end_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int32 end = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearEnd() {
          bitField0_ = (bitField0_ & ~0x00000004);
          end_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<MatchLocation>
          PARSER = new com.google.protobuf.AbstractParser<MatchLocation>() {
        @java.lang.Override
        public MatchLocation parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<MatchLocation> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<MatchLocation> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface MatchOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TokensRegexResponse.Match)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required int32 sentence = 1;</code>
       * @return Whether the sentence field is set.
       */
      boolean hasSentence();
      /**
       * <code>required int32 sentence = 1;</code>
       * @return The sentence.
       */
      int getSentence();

      /**
       * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
       * @return Whether the match field is set.
       */
      boolean hasMatch();
      /**
       * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
       * @return The match.
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getMatch();
      /**
       * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder getMatchOrBuilder();

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation> 
          getGroupList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getGroup(int index);
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      int getGroupCount();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder> 
          getGroupOrBuilderList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder getGroupOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexResponse.Match}
     */
    public static final class Match extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TokensRegexResponse.Match)
        MatchOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Match.newBuilder() to construct.
      private Match(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Match() {
        group_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Match();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder.class);
      }

      private int bitField0_;
      public static final int SENTENCE_FIELD_NUMBER = 1;
      private int sentence_;
      /**
       * <code>required int32 sentence = 1;</code>
       * @return Whether the sentence field is set.
       */
      @java.lang.Override
      public boolean hasSentence() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 sentence = 1;</code>
       * @return The sentence.
       */
      @java.lang.Override
      public int getSentence() {
        return sentence_;
      }

      public static final int MATCH_FIELD_NUMBER = 2;
      private edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation match_;
      /**
       * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
       * @return Whether the match field is set.
       */
      @java.lang.Override
      public boolean hasMatch() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
       * @return The match.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getMatch() {
        return match_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance() : match_;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder getMatchOrBuilder() {
        return match_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance() : match_;
      }

      public static final int GROUP_FIELD_NUMBER = 3;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation> group_;
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation> getGroupList() {
        return group_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder> 
          getGroupOrBuilderList() {
        return group_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      @java.lang.Override
      public int getGroupCount() {
        return group_.size();
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getGroup(int index) {
        return group_.get(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder getGroupOrBuilder(
          int index) {
        return group_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasSentence()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasMatch()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeInt32(1, sentence_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeMessage(2, getMatch());
        }
        for (int i = 0; i < group_.size(); i++) {
          output.writeMessage(3, group_.get(i));
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, sentence_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getMatch());
        }
        for (int i = 0; i < group_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, group_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match) obj;

        if (hasSentence() != other.hasSentence()) return false;
        if (hasSentence()) {
          if (getSentence()
              != other.getSentence()) return false;
        }
        if (hasMatch() != other.hasMatch()) return false;
        if (hasMatch()) {
          if (!getMatch()
              .equals(other.getMatch())) return false;
        }
        if (!getGroupList()
            .equals(other.getGroupList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSentence()) {
          hash = (37 * hash) + SENTENCE_FIELD_NUMBER;
          hash = (53 * hash) + getSentence();
        }
        if (hasMatch()) {
          hash = (37 * hash) + MATCH_FIELD_NUMBER;
          hash = (53 * hash) + getMatch().hashCode();
        }
        if (getGroupCount() > 0) {
          hash = (37 * hash) + GROUP_FIELD_NUMBER;
          hash = (53 * hash) + getGroupList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexResponse.Match}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TokensRegexResponse.Match)
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getMatchFieldBuilder();
            getGroupFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          sentence_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (matchBuilder_ == null) {
            match_ = null;
          } else {
            matchBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (groupBuilder_ == null) {
            group_ = java.util.Collections.emptyList();
          } else {
            group_ = null;
            groupBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.sentence_ = sentence_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            if (matchBuilder_ == null) {
              result.match_ = match_;
            } else {
              result.match_ = matchBuilder_.build();
            }
            to_bitField0_ |= 0x00000002;
          }
          if (groupBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0)) {
              group_ = java.util.Collections.unmodifiableList(group_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.group_ = group_;
          } else {
            result.group_ = groupBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.getDefaultInstance()) return this;
          if (other.hasSentence()) {
            setSentence(other.getSentence());
          }
          if (other.hasMatch()) {
            mergeMatch(other.getMatch());
          }
          if (groupBuilder_ == null) {
            if (!other.group_.isEmpty()) {
              if (group_.isEmpty()) {
                group_ = other.group_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureGroupIsMutable();
                group_.addAll(other.group_);
              }
              onChanged();
            }
          } else {
            if (!other.group_.isEmpty()) {
              if (groupBuilder_.isEmpty()) {
                groupBuilder_.dispose();
                groupBuilder_ = null;
                group_ = other.group_;
                bitField0_ = (bitField0_ & ~0x00000004);
                groupBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getGroupFieldBuilder() : null;
              } else {
                groupBuilder_.addAllMessages(other.group_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasSentence()) {
            return false;
          }
          if (!hasMatch()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  sentence_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 18: {
                  input.readMessage(
                      getMatchFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.PARSER,
                          extensionRegistry);
                  if (groupBuilder_ == null) {
                    ensureGroupIsMutable();
                    group_.add(m);
                  } else {
                    groupBuilder_.addMessage(m);
                  }
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int sentence_ ;
        /**
         * <code>required int32 sentence = 1;</code>
         * @return Whether the sentence field is set.
         */
        @java.lang.Override
        public boolean hasSentence() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required int32 sentence = 1;</code>
         * @return The sentence.
         */
        @java.lang.Override
        public int getSentence() {
          return sentence_;
        }
        /**
         * <code>required int32 sentence = 1;</code>
         * @param value The sentence to set.
         * @return This builder for chaining.
         */
        public Builder setSentence(int value) {
          bitField0_ |= 0x00000001;
          sentence_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 sentence = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSentence() {
          bitField0_ = (bitField0_ & ~0x00000001);
          sentence_ = 0;
          onChanged();
          return this;
        }

        private edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation match_;
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder> matchBuilder_;
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         * @return Whether the match field is set.
         */
        public boolean hasMatch() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         * @return The match.
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getMatch() {
          if (matchBuilder_ == null) {
            return match_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance() : match_;
          } else {
            return matchBuilder_.getMessage();
          }
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         */
        public Builder setMatch(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation value) {
          if (matchBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            match_ = value;
            onChanged();
          } else {
            matchBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         */
        public Builder setMatch(
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder builderForValue) {
          if (matchBuilder_ == null) {
            match_ = builderForValue.build();
            onChanged();
          } else {
            matchBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         */
        public Builder mergeMatch(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation value) {
          if (matchBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
                match_ != null &&
                match_ != edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance()) {
              match_ =
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.newBuilder(match_).mergeFrom(value).buildPartial();
            } else {
              match_ = value;
            }
            onChanged();
          } else {
            matchBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         */
        public Builder clearMatch() {
          if (matchBuilder_ == null) {
            match_ = null;
            onChanged();
          } else {
            matchBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder getMatchBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getMatchFieldBuilder().getBuilder();
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder getMatchOrBuilder() {
          if (matchBuilder_ != null) {
            return matchBuilder_.getMessageOrBuilder();
          } else {
            return match_ == null ?
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance() : match_;
          }
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation match = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder> 
            getMatchFieldBuilder() {
          if (matchBuilder_ == null) {
            matchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder>(
                    getMatch(),
                    getParentForChildren(),
                    isClean());
            match_ = null;
          }
          return matchBuilder_;
        }

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation> group_ =
          java.util.Collections.emptyList();
        private void ensureGroupIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            group_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation>(group_);
            bitField0_ |= 0x00000004;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder> groupBuilder_;

        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation> getGroupList() {
          if (groupBuilder_ == null) {
            return java.util.Collections.unmodifiableList(group_);
          } else {
            return groupBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public int getGroupCount() {
          if (groupBuilder_ == null) {
            return group_.size();
          } else {
            return groupBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation getGroup(int index) {
          if (groupBuilder_ == null) {
            return group_.get(index);
          } else {
            return groupBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder setGroup(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation value) {
          if (groupBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupIsMutable();
            group_.set(index, value);
            onChanged();
          } else {
            groupBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder setGroup(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder builderForValue) {
          if (groupBuilder_ == null) {
            ensureGroupIsMutable();
            group_.set(index, builderForValue.build());
            onChanged();
          } else {
            groupBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder addGroup(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation value) {
          if (groupBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupIsMutable();
            group_.add(value);
            onChanged();
          } else {
            groupBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder addGroup(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation value) {
          if (groupBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupIsMutable();
            group_.add(index, value);
            onChanged();
          } else {
            groupBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder addGroup(
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder builderForValue) {
          if (groupBuilder_ == null) {
            ensureGroupIsMutable();
            group_.add(builderForValue.build());
            onChanged();
          } else {
            groupBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder addGroup(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder builderForValue) {
          if (groupBuilder_ == null) {
            ensureGroupIsMutable();
            group_.add(index, builderForValue.build());
            onChanged();
          } else {
            groupBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder addAllGroup(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation> values) {
          if (groupBuilder_ == null) {
            ensureGroupIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, group_);
            onChanged();
          } else {
            groupBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder clearGroup() {
          if (groupBuilder_ == null) {
            group_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            groupBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public Builder removeGroup(int index) {
          if (groupBuilder_ == null) {
            ensureGroupIsMutable();
            group_.remove(index);
            onChanged();
          } else {
            groupBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder getGroupBuilder(
            int index) {
          return getGroupFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder getGroupOrBuilder(
            int index) {
          if (groupBuilder_ == null) {
            return group_.get(index);  } else {
            return groupBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder> 
             getGroupOrBuilderList() {
          if (groupBuilder_ != null) {
            return groupBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(group_);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder addGroupBuilder() {
          return getGroupFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder addGroupBuilder(
            int index) {
          return getGroupFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.MatchLocation group = 3;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder> 
             getGroupBuilderList() {
          return getGroupFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder> 
            getGroupFieldBuilder() {
          if (groupBuilder_ == null) {
            groupBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchLocationOrBuilder>(
                    group_,
                    ((bitField0_ & 0x00000004) != 0),
                    getParentForChildren(),
                    isClean());
            group_ = null;
          }
          return groupBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TokensRegexResponse.Match)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TokensRegexResponse.Match)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Match>
          PARSER = new com.google.protobuf.AbstractParser<Match>() {
        @java.lang.Override
        public Match parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Match> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Match> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface PatternMatchOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match> 
          getMatchList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match getMatch(int index);
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      int getMatchCount();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder> 
          getMatchOrBuilderList();
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder getMatchOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch}
     */
    public static final class PatternMatch extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch)
        PatternMatchOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use PatternMatch.newBuilder() to construct.
      private PatternMatch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private PatternMatch() {
        match_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new PatternMatch();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder.class);
      }

      public static final int MATCH_FIELD_NUMBER = 1;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match> match_;
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match> getMatchList() {
        return match_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder> 
          getMatchOrBuilderList() {
        return match_;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public int getMatchCount() {
        return match_.size();
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match getMatch(int index) {
        return match_.get(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder getMatchOrBuilder(
          int index) {
        return match_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        for (int i = 0; i < getMatchCount(); i++) {
          if (!getMatch(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < match_.size(); i++) {
          output.writeMessage(1, match_.get(i));
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        for (int i = 0; i < match_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, match_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch) obj;

        if (!getMatchList()
            .equals(other.getMatchList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getMatchCount() > 0) {
          hash = (37 * hash) + MATCH_FIELD_NUMBER;
          hash = (53 * hash) + getMatchList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch)
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (matchBuilder_ == null) {
            match_ = java.util.Collections.emptyList();
          } else {
            match_ = null;
            matchBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch(this);
          int from_bitField0_ = bitField0_;
          if (matchBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              match_ = java.util.Collections.unmodifiableList(match_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.match_ = match_;
          } else {
            result.match_ = matchBuilder_.build();
          }
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.getDefaultInstance()) return this;
          if (matchBuilder_ == null) {
            if (!other.match_.isEmpty()) {
              if (match_.isEmpty()) {
                match_ = other.match_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureMatchIsMutable();
                match_.addAll(other.match_);
              }
              onChanged();
            }
          } else {
            if (!other.match_.isEmpty()) {
              if (matchBuilder_.isEmpty()) {
                matchBuilder_.dispose();
                matchBuilder_ = null;
                match_ = other.match_;
                bitField0_ = (bitField0_ & ~0x00000001);
                matchBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getMatchFieldBuilder() : null;
              } else {
                matchBuilder_.addAllMessages(other.match_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          for (int i = 0; i < getMatchCount(); i++) {
            if (!getMatch(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.PARSER,
                          extensionRegistry);
                  if (matchBuilder_ == null) {
                    ensureMatchIsMutable();
                    match_.add(m);
                  } else {
                    matchBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match> match_ =
          java.util.Collections.emptyList();
        private void ensureMatchIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            match_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match>(match_);
            bitField0_ |= 0x00000001;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder> matchBuilder_;

        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match> getMatchList() {
          if (matchBuilder_ == null) {
            return java.util.Collections.unmodifiableList(match_);
          } else {
            return matchBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public int getMatchCount() {
          if (matchBuilder_ == null) {
            return match_.size();
          } else {
            return matchBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match getMatch(int index) {
          if (matchBuilder_ == null) {
            return match_.get(index);
          } else {
            return matchBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder setMatch(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match value) {
          if (matchBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMatchIsMutable();
            match_.set(index, value);
            onChanged();
          } else {
            matchBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder setMatch(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder builderForValue) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            match_.set(index, builderForValue.build());
            onChanged();
          } else {
            matchBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder addMatch(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match value) {
          if (matchBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMatchIsMutable();
            match_.add(value);
            onChanged();
          } else {
            matchBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder addMatch(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match value) {
          if (matchBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMatchIsMutable();
            match_.add(index, value);
            onChanged();
          } else {
            matchBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder addMatch(
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder builderForValue) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            match_.add(builderForValue.build());
            onChanged();
          } else {
            matchBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder addMatch(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder builderForValue) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            match_.add(index, builderForValue.build());
            onChanged();
          } else {
            matchBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder addAllMatch(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match> values) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, match_);
            onChanged();
          } else {
            matchBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder clearMatch() {
          if (matchBuilder_ == null) {
            match_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            matchBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public Builder removeMatch(int index) {
          if (matchBuilder_ == null) {
            ensureMatchIsMutable();
            match_.remove(index);
            onChanged();
          } else {
            matchBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder getMatchBuilder(
            int index) {
          return getMatchFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder getMatchOrBuilder(
            int index) {
          if (matchBuilder_ == null) {
            return match_.get(index);  } else {
            return matchBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder> 
             getMatchOrBuilderList() {
          if (matchBuilder_ != null) {
            return matchBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(match_);
          }
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder addMatchBuilder() {
          return getMatchFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder addMatchBuilder(
            int index) {
          return getMatchFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.getDefaultInstance());
        }
        /**
         * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.Match match = 1;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder> 
             getMatchBuilderList() {
          return getMatchFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder> 
            getMatchFieldBuilder() {
          if (matchBuilder_ == null) {
            matchBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Match.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.MatchOrBuilder>(
                    match_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            match_ = null;
          }
          return matchBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<PatternMatch>
          PARSER = new com.google.protobuf.AbstractParser<PatternMatch>() {
        @java.lang.Override
        public PatternMatch parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<PatternMatch> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<PatternMatch> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int MATCH_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch> match_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch> getMatchList() {
      return match_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder> 
        getMatchOrBuilderList() {
      return match_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    @java.lang.Override
    public int getMatchCount() {
      return match_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch getMatch(int index) {
      return match_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder getMatchOrBuilder(
        int index) {
      return match_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getMatchCount(); i++) {
        if (!getMatch(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < match_.size(); i++) {
        output.writeMessage(1, match_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < match_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, match_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse) obj;

      if (!getMatchList()
          .equals(other.getMatchList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getMatchCount() > 0) {
        hash = (37 * hash) + MATCH_FIELD_NUMBER;
        hash = (53 * hash) + getMatchList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The result will be a nested structure:
     * repeated PatternMatch, one for each pattern
     * each PatternMatch has a repeated Match,
     * which tells you which sentence matched and where
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.TokensRegexResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TokensRegexResponse)
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (matchBuilder_ == null) {
          match_ = java.util.Collections.emptyList();
        } else {
          match_ = null;
          matchBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse(this);
        int from_bitField0_ = bitField0_;
        if (matchBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            match_ = java.util.Collections.unmodifiableList(match_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.match_ = match_;
        } else {
          result.match_ = matchBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.getDefaultInstance()) return this;
        if (matchBuilder_ == null) {
          if (!other.match_.isEmpty()) {
            if (match_.isEmpty()) {
              match_ = other.match_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMatchIsMutable();
              match_.addAll(other.match_);
            }
            onChanged();
          }
        } else {
          if (!other.match_.isEmpty()) {
            if (matchBuilder_.isEmpty()) {
              matchBuilder_.dispose();
              matchBuilder_ = null;
              match_ = other.match_;
              bitField0_ = (bitField0_ & ~0x00000001);
              matchBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMatchFieldBuilder() : null;
            } else {
              matchBuilder_.addAllMessages(other.match_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getMatchCount(); i++) {
          if (!getMatch(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.PARSER,
                        extensionRegistry);
                if (matchBuilder_ == null) {
                  ensureMatchIsMutable();
                  match_.add(m);
                } else {
                  matchBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch> match_ =
        java.util.Collections.emptyList();
      private void ensureMatchIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          match_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch>(match_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder> matchBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch> getMatchList() {
        if (matchBuilder_ == null) {
          return java.util.Collections.unmodifiableList(match_);
        } else {
          return matchBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public int getMatchCount() {
        if (matchBuilder_ == null) {
          return match_.size();
        } else {
          return matchBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch getMatch(int index) {
        if (matchBuilder_ == null) {
          return match_.get(index);
        } else {
          return matchBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder setMatch(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch value) {
        if (matchBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchIsMutable();
          match_.set(index, value);
          onChanged();
        } else {
          matchBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder setMatch(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder builderForValue) {
        if (matchBuilder_ == null) {
          ensureMatchIsMutable();
          match_.set(index, builderForValue.build());
          onChanged();
        } else {
          matchBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder addMatch(edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch value) {
        if (matchBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchIsMutable();
          match_.add(value);
          onChanged();
        } else {
          matchBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder addMatch(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch value) {
        if (matchBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchIsMutable();
          match_.add(index, value);
          onChanged();
        } else {
          matchBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder addMatch(
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder builderForValue) {
        if (matchBuilder_ == null) {
          ensureMatchIsMutable();
          match_.add(builderForValue.build());
          onChanged();
        } else {
          matchBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder addMatch(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder builderForValue) {
        if (matchBuilder_ == null) {
          ensureMatchIsMutable();
          match_.add(index, builderForValue.build());
          onChanged();
        } else {
          matchBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder addAllMatch(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch> values) {
        if (matchBuilder_ == null) {
          ensureMatchIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, match_);
          onChanged();
        } else {
          matchBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder clearMatch() {
        if (matchBuilder_ == null) {
          match_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          matchBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public Builder removeMatch(int index) {
        if (matchBuilder_ == null) {
          ensureMatchIsMutable();
          match_.remove(index);
          onChanged();
        } else {
          matchBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder getMatchBuilder(
          int index) {
        return getMatchFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder getMatchOrBuilder(
          int index) {
        if (matchBuilder_ == null) {
          return match_.get(index);  } else {
          return matchBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder> 
           getMatchOrBuilderList() {
        if (matchBuilder_ != null) {
          return matchBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(match_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder addMatchBuilder() {
        return getMatchFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder addMatchBuilder(
          int index) {
        return getMatchFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TokensRegexResponse.PatternMatch match = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder> 
           getMatchBuilderList() {
        return getMatchFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder> 
          getMatchFieldBuilder() {
        if (matchBuilder_ == null) {
          matchBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatch.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse.PatternMatchOrBuilder>(
                  match_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          match_ = null;
        }
        return matchBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TokensRegexResponse)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TokensRegexResponse)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<TokensRegexResponse>
        PARSER = new com.google.protobuf.AbstractParser<TokensRegexResponse>() {
      @java.lang.Override
      public TokensRegexResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<TokensRegexResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TokensRegexResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TokensRegexResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DependencyEnhancerRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.DependencyEnhancerRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
     * @return Whether the document field is set.
     */
    boolean hasDocument();
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
     * @return The document.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDocument();
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder getDocumentOrBuilder();

    /**
     * <code>.edu.stanford.nlp.pipeline.Language language = 2;</code>
     * @return Whether the language field is set.
     */
    boolean hasLanguage();
    /**
     * <code>.edu.stanford.nlp.pipeline.Language language = 2;</code>
     * @return The language.
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.Language getLanguage();

    /**
     * <pre>
     * The expected value of this is a regex which matches relative pronouns
     * </pre>
     *
     * <code>string relativePronouns = 3;</code>
     * @return Whether the relativePronouns field is set.
     */
    boolean hasRelativePronouns();
    /**
     * <pre>
     * The expected value of this is a regex which matches relative pronouns
     * </pre>
     *
     * <code>string relativePronouns = 3;</code>
     * @return The relativePronouns.
     */
    java.lang.String getRelativePronouns();
    /**
     * <pre>
     * The expected value of this is a regex which matches relative pronouns
     * </pre>
     *
     * <code>string relativePronouns = 3;</code>
     * @return The bytes for relativePronouns.
     */
    com.google.protobuf.ByteString
        getRelativePronounsBytes();

    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest.RefCase getRefCase();
  }
  /**
   * <pre>
   * A protobuf which allows to pass in a document with basic
   * dependencies to be converted to enhanced
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyEnhancerRequest}
   */
  public static final class DependencyEnhancerRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.DependencyEnhancerRequest)
      DependencyEnhancerRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DependencyEnhancerRequest.newBuilder() to construct.
    private DependencyEnhancerRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DependencyEnhancerRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DependencyEnhancerRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest.Builder.class);
    }

    private int bitField0_;
    private int refCase_ = 0;
    private java.lang.Object ref_;
    public enum RefCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      LANGUAGE(2),
      RELATIVEPRONOUNS(3),
      REF_NOT_SET(0);
      private final int value;
      private RefCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static RefCase valueOf(int value) {
        return forNumber(value);
      }

      public static RefCase forNumber(int value) {
        switch (value) {
          case 2: return LANGUAGE;
          case 3: return RELATIVEPRONOUNS;
          case 0: return REF_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public RefCase
    getRefCase() {
      return RefCase.forNumber(
          refCase_);
    }

    public static final int DOCUMENT_FIELD_NUMBER = 1;
    private edu.stanford.nlp.pipeline.CoreNLPProtos.Document document_;
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
     * @return Whether the document field is set.
     */
    @java.lang.Override
    public boolean hasDocument() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
     * @return The document.
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDocument() {
      return document_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance() : document_;
    }
    /**
     * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder getDocumentOrBuilder() {
      return document_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance() : document_;
    }

    public static final int LANGUAGE_FIELD_NUMBER = 2;
    /**
     * <code>.edu.stanford.nlp.pipeline.Language language = 2;</code>
     * @return Whether the language field is set.
     */
    public boolean hasLanguage() {
      return refCase_ == 2;
    }
    /**
     * <code>.edu.stanford.nlp.pipeline.Language language = 2;</code>
     * @return The language.
     */
    public edu.stanford.nlp.pipeline.CoreNLPProtos.Language getLanguage() {
      if (refCase_ == 2) {
        @SuppressWarnings("deprecation")
        edu.stanford.nlp.pipeline.CoreNLPProtos.Language result = edu.stanford.nlp.pipeline.CoreNLPProtos.Language.valueOf(
            (java.lang.Integer) ref_);
        return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Language.Unknown : result;
      }
      return edu.stanford.nlp.pipeline.CoreNLPProtos.Language.Unknown;
    }

    public static final int RELATIVEPRONOUNS_FIELD_NUMBER = 3;
    /**
     * <pre>
     * The expected value of this is a regex which matches relative pronouns
     * </pre>
     *
     * <code>string relativePronouns = 3;</code>
     * @return Whether the relativePronouns field is set.
     */
    public boolean hasRelativePronouns() {
      return refCase_ == 3;
    }
    /**
     * <pre>
     * The expected value of this is a regex which matches relative pronouns
     * </pre>
     *
     * <code>string relativePronouns = 3;</code>
     * @return The relativePronouns.
     */
    public java.lang.String getRelativePronouns() {
      java.lang.Object ref = "";
      if (refCase_ == 3) {
        ref = ref_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8() && (refCase_ == 3)) {
          ref_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The expected value of this is a regex which matches relative pronouns
     * </pre>
     *
     * <code>string relativePronouns = 3;</code>
     * @return The bytes for relativePronouns.
     */
    public com.google.protobuf.ByteString
        getRelativePronounsBytes() {
      java.lang.Object ref = "";
      if (refCase_ == 3) {
        ref = ref_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (refCase_ == 3) {
          ref_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasDocument()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getDocument().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getDocument());
      }
      if (refCase_ == 2) {
        output.writeEnum(2, ((java.lang.Integer) ref_));
      }
      if (refCase_ == 3) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, ref_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getDocument());
      }
      if (refCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, ((java.lang.Integer) ref_));
      }
      if (refCase_ == 3) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, ref_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest other = (edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest) obj;

      if (hasDocument() != other.hasDocument()) return false;
      if (hasDocument()) {
        if (!getDocument()
            .equals(other.getDocument())) return false;
      }
      if (!getRefCase().equals(other.getRefCase())) return false;
      switch (refCase_) {
        case 2:
          if (!getLanguage()
              .equals(other.getLanguage())) return false;
          break;
        case 3:
          if (!getRelativePronouns()
              .equals(other.getRelativePronouns())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDocument()) {
        hash = (37 * hash) + DOCUMENT_FIELD_NUMBER;
        hash = (53 * hash) + getDocument().hashCode();
      }
      switch (refCase_) {
        case 2:
          hash = (37 * hash) + LANGUAGE_FIELD_NUMBER;
          hash = (53 * hash) + getLanguage().getNumber();
          break;
        case 3:
          hash = (37 * hash) + RELATIVEPRONOUNS_FIELD_NUMBER;
          hash = (53 * hash) + getRelativePronouns().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A protobuf which allows to pass in a document with basic
     * dependencies to be converted to enhanced
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyEnhancerRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.DependencyEnhancerRequest)
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDocumentFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (documentBuilder_ == null) {
          document_ = null;
        } else {
          documentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        refCase_ = 0;
        ref_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest result = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (documentBuilder_ == null) {
            result.document_ = document_;
          } else {
            result.document_ = documentBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (refCase_ == 2) {
          result.ref_ = ref_;
        }
        if (refCase_ == 3) {
          result.ref_ = ref_;
        }
        result.bitField0_ = to_bitField0_;
        result.refCase_ = refCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest.getDefaultInstance()) return this;
        if (other.hasDocument()) {
          mergeDocument(other.getDocument());
        }
        switch (other.getRefCase()) {
          case LANGUAGE: {
            setLanguage(other.getLanguage());
            break;
          }
          case RELATIVEPRONOUNS: {
            refCase_ = 3;
            ref_ = other.ref_;
            onChanged();
            break;
          }
          case REF_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasDocument()) {
          return false;
        }
        if (!getDocument().isInitialized()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getDocumentFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                int rawValue = input.readEnum();
                edu.stanford.nlp.pipeline.CoreNLPProtos.Language value =
                    edu.stanford.nlp.pipeline.CoreNLPProtos.Language.forNumber(rawValue);
                if (value == null) {
                  mergeUnknownVarintField(2, rawValue);
                } else {
                  refCase_ = 2;
                  ref_ = rawValue;
                }
                break;
              } // case 16
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                refCase_ = 3;
                ref_ = bs;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int refCase_ = 0;
      private java.lang.Object ref_;
      public RefCase
          getRefCase() {
        return RefCase.forNumber(
            refCase_);
      }

      public Builder clearRef() {
        refCase_ = 0;
        ref_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private edu.stanford.nlp.pipeline.CoreNLPProtos.Document document_;
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Document, edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder> documentBuilder_;
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       * @return Whether the document field is set.
       */
      public boolean hasDocument() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       * @return The document.
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Document getDocument() {
        if (documentBuilder_ == null) {
          return document_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance() : document_;
        } else {
          return documentBuilder_.getMessage();
        }
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       */
      public Builder setDocument(edu.stanford.nlp.pipeline.CoreNLPProtos.Document value) {
        if (documentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          document_ = value;
          onChanged();
        } else {
          documentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       */
      public Builder setDocument(
          edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder builderForValue) {
        if (documentBuilder_ == null) {
          document_ = builderForValue.build();
          onChanged();
        } else {
          documentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       */
      public Builder mergeDocument(edu.stanford.nlp.pipeline.CoreNLPProtos.Document value) {
        if (documentBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              document_ != null &&
              document_ != edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance()) {
            document_ =
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document.newBuilder(document_).mergeFrom(value).buildPartial();
          } else {
            document_ = value;
          }
          onChanged();
        } else {
          documentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       */
      public Builder clearDocument() {
        if (documentBuilder_ == null) {
          document_ = null;
          onChanged();
        } else {
          documentBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder getDocumentBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDocumentFieldBuilder().getBuilder();
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder getDocumentOrBuilder() {
        if (documentBuilder_ != null) {
          return documentBuilder_.getMessageOrBuilder();
        } else {
          return document_ == null ?
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document.getDefaultInstance() : document_;
        }
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.Document document = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.Document, edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder> 
          getDocumentFieldBuilder() {
        if (documentBuilder_ == null) {
          documentBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.Document, edu.stanford.nlp.pipeline.CoreNLPProtos.Document.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DocumentOrBuilder>(
                  getDocument(),
                  getParentForChildren(),
                  isClean());
          document_ = null;
        }
        return documentBuilder_;
      }

      /**
       * <code>.edu.stanford.nlp.pipeline.Language language = 2;</code>
       * @return Whether the language field is set.
       */
      @java.lang.Override
      public boolean hasLanguage() {
        return refCase_ == 2;
      }
      /**
       * <code>.edu.stanford.nlp.pipeline.Language language = 2;</code>
       * @return The language.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.Language getLanguage() {
        if (refCase_ == 2) {
          @SuppressWarnings("deprecation")
          edu.stanford.nlp.pipeline.CoreNLPProtos.Language result = edu.stanford.nlp.pipeline.CoreNLPProtos.Language.valueOf(
              (java.lang.Integer) ref_);
          return result == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.Language.Unknown : result;
        }
        return edu.stanford.nlp.pipeline.CoreNLPProtos.Language.Unknown;
      }
      /**
       * <code>.edu.stanford.nlp.pipeline.Language language = 2;</code>
       * @param value The language to set.
       * @return This builder for chaining.
       */
      public Builder setLanguage(edu.stanford.nlp.pipeline.CoreNLPProtos.Language value) {
        if (value == null) {
          throw new NullPointerException();
        }
        refCase_ = 2;
        ref_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.edu.stanford.nlp.pipeline.Language language = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLanguage() {
        if (refCase_ == 2) {
          refCase_ = 0;
          ref_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <pre>
       * The expected value of this is a regex which matches relative pronouns
       * </pre>
       *
       * <code>string relativePronouns = 3;</code>
       * @return Whether the relativePronouns field is set.
       */
      @java.lang.Override
      public boolean hasRelativePronouns() {
        return refCase_ == 3;
      }
      /**
       * <pre>
       * The expected value of this is a regex which matches relative pronouns
       * </pre>
       *
       * <code>string relativePronouns = 3;</code>
       * @return The relativePronouns.
       */
      @java.lang.Override
      public java.lang.String getRelativePronouns() {
        java.lang.Object ref = "";
        if (refCase_ == 3) {
          ref = ref_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (refCase_ == 3) {
            if (bs.isValidUtf8()) {
              ref_ = s;
            }
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The expected value of this is a regex which matches relative pronouns
       * </pre>
       *
       * <code>string relativePronouns = 3;</code>
       * @return The bytes for relativePronouns.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getRelativePronounsBytes() {
        java.lang.Object ref = "";
        if (refCase_ == 3) {
          ref = ref_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (refCase_ == 3) {
            ref_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The expected value of this is a regex which matches relative pronouns
       * </pre>
       *
       * <code>string relativePronouns = 3;</code>
       * @param value The relativePronouns to set.
       * @return This builder for chaining.
       */
      public Builder setRelativePronouns(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  refCase_ = 3;
        ref_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The expected value of this is a regex which matches relative pronouns
       * </pre>
       *
       * <code>string relativePronouns = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRelativePronouns() {
        if (refCase_ == 3) {
          refCase_ = 0;
          ref_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The expected value of this is a regex which matches relative pronouns
       * </pre>
       *
       * <code>string relativePronouns = 3;</code>
       * @param value The bytes for relativePronouns to set.
       * @return This builder for chaining.
       */
      public Builder setRelativePronounsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  refCase_ = 3;
        ref_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.DependencyEnhancerRequest)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.DependencyEnhancerRequest)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<DependencyEnhancerRequest>
        PARSER = new com.google.protobuf.AbstractParser<DependencyEnhancerRequest>() {
      @java.lang.Override
      public DependencyEnhancerRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DependencyEnhancerRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DependencyEnhancerRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyEnhancerRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlattenedParseTreeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.FlattenedParseTree)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node> 
        getNodesList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node getNodes(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    int getNodesCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder> 
        getNodesOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder getNodesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A version of ParseTree with a flattened structure so that deep trees
   * don't exceed the protobuf stack depth
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.FlattenedParseTree}
   */
  public static final class FlattenedParseTree extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.FlattenedParseTree)
      FlattenedParseTreeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FlattenedParseTree.newBuilder() to construct.
    private FlattenedParseTree(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FlattenedParseTree() {
      nodes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FlattenedParseTree();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.class, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder.class);
    }

    public interface NodeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.FlattenedParseTree.Node)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>bool openNode = 1;</code>
       * @return Whether the openNode field is set.
       */
      boolean hasOpenNode();
      /**
       * <code>bool openNode = 1;</code>
       * @return The openNode.
       */
      boolean getOpenNode();

      /**
       * <code>bool closeNode = 2;</code>
       * @return Whether the closeNode field is set.
       */
      boolean hasCloseNode();
      /**
       * <code>bool closeNode = 2;</code>
       * @return The closeNode.
       */
      boolean getCloseNode();

      /**
       * <code>string value = 3;</code>
       * @return Whether the value field is set.
       */
      boolean hasValue();
      /**
       * <code>string value = 3;</code>
       * @return The value.
       */
      java.lang.String getValue();
      /**
       * <code>string value = 3;</code>
       * @return The bytes for value.
       */
      com.google.protobuf.ByteString
          getValueBytes();

      /**
       * <code>optional double score = 4;</code>
       * @return Whether the score field is set.
       */
      boolean hasScore();
      /**
       * <code>optional double score = 4;</code>
       * @return The score.
       */
      double getScore();

      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.ContentsCase getContentsCase();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.FlattenedParseTree.Node}
     */
    public static final class Node extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.FlattenedParseTree.Node)
        NodeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Node.newBuilder() to construct.
      private Node(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Node() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Node();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.class, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder.class);
      }

      private int bitField0_;
      private int contentsCase_ = 0;
      private java.lang.Object contents_;
      public enum ContentsCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        OPENNODE(1),
        CLOSENODE(2),
        VALUE(3),
        CONTENTS_NOT_SET(0);
        private final int value;
        private ContentsCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ContentsCase valueOf(int value) {
          return forNumber(value);
        }

        public static ContentsCase forNumber(int value) {
          switch (value) {
            case 1: return OPENNODE;
            case 2: return CLOSENODE;
            case 3: return VALUE;
            case 0: return CONTENTS_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ContentsCase
      getContentsCase() {
        return ContentsCase.forNumber(
            contentsCase_);
      }

      public static final int OPENNODE_FIELD_NUMBER = 1;
      /**
       * <code>bool openNode = 1;</code>
       * @return Whether the openNode field is set.
       */
      @java.lang.Override
      public boolean hasOpenNode() {
        return contentsCase_ == 1;
      }
      /**
       * <code>bool openNode = 1;</code>
       * @return The openNode.
       */
      @java.lang.Override
      public boolean getOpenNode() {
        if (contentsCase_ == 1) {
          return (java.lang.Boolean) contents_;
        }
        return false;
      }

      public static final int CLOSENODE_FIELD_NUMBER = 2;
      /**
       * <code>bool closeNode = 2;</code>
       * @return Whether the closeNode field is set.
       */
      @java.lang.Override
      public boolean hasCloseNode() {
        return contentsCase_ == 2;
      }
      /**
       * <code>bool closeNode = 2;</code>
       * @return The closeNode.
       */
      @java.lang.Override
      public boolean getCloseNode() {
        if (contentsCase_ == 2) {
          return (java.lang.Boolean) contents_;
        }
        return false;
      }

      public static final int VALUE_FIELD_NUMBER = 3;
      /**
       * <code>string value = 3;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return contentsCase_ == 3;
      }
      /**
       * <code>string value = 3;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = "";
        if (contentsCase_ == 3) {
          ref = contents_;
        }
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8() && (contentsCase_ == 3)) {
            contents_ = s;
          }
          return s;
        }
      }
      /**
       * <code>string value = 3;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = "";
        if (contentsCase_ == 3) {
          ref = contents_;
        }
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (contentsCase_ == 3) {
            contents_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SCORE_FIELD_NUMBER = 4;
      private double score_;
      /**
       * <code>optional double score = 4;</code>
       * @return Whether the score field is set.
       */
      @java.lang.Override
      public boolean hasScore() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional double score = 4;</code>
       * @return The score.
       */
      @java.lang.Override
      public double getScore() {
        return score_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (contentsCase_ == 1) {
          output.writeBool(
              1, (boolean)((java.lang.Boolean) contents_));
        }
        if (contentsCase_ == 2) {
          output.writeBool(
              2, (boolean)((java.lang.Boolean) contents_));
        }
        if (contentsCase_ == 3) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, contents_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeDouble(4, score_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (contentsCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(
                1, (boolean)((java.lang.Boolean) contents_));
        }
        if (contentsCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(
                2, (boolean)((java.lang.Boolean) contents_));
        }
        if (contentsCase_ == 3) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, contents_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(4, score_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node other = (edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node) obj;

        if (hasScore() != other.hasScore()) return false;
        if (hasScore()) {
          if (java.lang.Double.doubleToLongBits(getScore())
              != java.lang.Double.doubleToLongBits(
                  other.getScore())) return false;
        }
        if (!getContentsCase().equals(other.getContentsCase())) return false;
        switch (contentsCase_) {
          case 1:
            if (getOpenNode()
                != other.getOpenNode()) return false;
            break;
          case 2:
            if (getCloseNode()
                != other.getCloseNode()) return false;
            break;
          case 3:
            if (!getValue()
                .equals(other.getValue())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasScore()) {
          hash = (37 * hash) + SCORE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getScore()));
        }
        switch (contentsCase_) {
          case 1:
            hash = (37 * hash) + OPENNODE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getOpenNode());
            break;
          case 2:
            hash = (37 * hash) + CLOSENODE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getCloseNode());
            break;
          case 3:
            hash = (37 * hash) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getValue().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.FlattenedParseTree.Node}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.FlattenedParseTree.Node)
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.class, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          score_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000008);
          contentsCase_ = 0;
          contents_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node result = new edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (contentsCase_ == 1) {
            result.contents_ = contents_;
          }
          if (contentsCase_ == 2) {
            result.contents_ = contents_;
          }
          if (contentsCase_ == 3) {
            result.contents_ = contents_;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.score_ = score_;
            to_bitField0_ |= 0x00000008;
          }
          result.bitField0_ = to_bitField0_;
          result.contentsCase_ = contentsCase_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.getDefaultInstance()) return this;
          if (other.hasScore()) {
            setScore(other.getScore());
          }
          switch (other.getContentsCase()) {
            case OPENNODE: {
              setOpenNode(other.getOpenNode());
              break;
            }
            case CLOSENODE: {
              setCloseNode(other.getCloseNode());
              break;
            }
            case VALUE: {
              contentsCase_ = 3;
              contents_ = other.contents_;
              onChanged();
              break;
            }
            case CONTENTS_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  contents_ = input.readBool();
                  contentsCase_ = 1;
                  break;
                } // case 8
                case 16: {
                  contents_ = input.readBool();
                  contentsCase_ = 2;
                  break;
                } // case 16
                case 26: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  contentsCase_ = 3;
                  contents_ = bs;
                  break;
                } // case 26
                case 33: {
                  score_ = input.readDouble();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 33
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int contentsCase_ = 0;
        private java.lang.Object contents_;
        public ContentsCase
            getContentsCase() {
          return ContentsCase.forNumber(
              contentsCase_);
        }

        public Builder clearContents() {
          contentsCase_ = 0;
          contents_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        /**
         * <code>bool openNode = 1;</code>
         * @return Whether the openNode field is set.
         */
        public boolean hasOpenNode() {
          return contentsCase_ == 1;
        }
        /**
         * <code>bool openNode = 1;</code>
         * @return The openNode.
         */
        public boolean getOpenNode() {
          if (contentsCase_ == 1) {
            return (java.lang.Boolean) contents_;
          }
          return false;
        }
        /**
         * <code>bool openNode = 1;</code>
         * @param value The openNode to set.
         * @return This builder for chaining.
         */
        public Builder setOpenNode(boolean value) {
          contentsCase_ = 1;
          contents_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>bool openNode = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearOpenNode() {
          if (contentsCase_ == 1) {
            contentsCase_ = 0;
            contents_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <code>bool closeNode = 2;</code>
         * @return Whether the closeNode field is set.
         */
        public boolean hasCloseNode() {
          return contentsCase_ == 2;
        }
        /**
         * <code>bool closeNode = 2;</code>
         * @return The closeNode.
         */
        public boolean getCloseNode() {
          if (contentsCase_ == 2) {
            return (java.lang.Boolean) contents_;
          }
          return false;
        }
        /**
         * <code>bool closeNode = 2;</code>
         * @param value The closeNode to set.
         * @return This builder for chaining.
         */
        public Builder setCloseNode(boolean value) {
          contentsCase_ = 2;
          contents_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>bool closeNode = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearCloseNode() {
          if (contentsCase_ == 2) {
            contentsCase_ = 0;
            contents_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <code>string value = 3;</code>
         * @return Whether the value field is set.
         */
        @java.lang.Override
        public boolean hasValue() {
          return contentsCase_ == 3;
        }
        /**
         * <code>string value = 3;</code>
         * @return The value.
         */
        @java.lang.Override
        public java.lang.String getValue() {
          java.lang.Object ref = "";
          if (contentsCase_ == 3) {
            ref = contents_;
          }
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (contentsCase_ == 3) {
              if (bs.isValidUtf8()) {
                contents_ = s;
              }
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string value = 3;</code>
         * @return The bytes for value.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getValueBytes() {
          java.lang.Object ref = "";
          if (contentsCase_ == 3) {
            ref = contents_;
          }
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            if (contentsCase_ == 3) {
              contents_ = b;
            }
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string value = 3;</code>
         * @param value The value to set.
         * @return This builder for chaining.
         */
        public Builder setValue(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  contentsCase_ = 3;
          contents_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string value = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearValue() {
          if (contentsCase_ == 3) {
            contentsCase_ = 0;
            contents_ = null;
            onChanged();
          }
          return this;
        }
        /**
         * <code>string value = 3;</code>
         * @param value The bytes for value to set.
         * @return This builder for chaining.
         */
        public Builder setValueBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  contentsCase_ = 3;
          contents_ = value;
          onChanged();
          return this;
        }

        private double score_ ;
        /**
         * <code>optional double score = 4;</code>
         * @return Whether the score field is set.
         */
        @java.lang.Override
        public boolean hasScore() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <code>optional double score = 4;</code>
         * @return The score.
         */
        @java.lang.Override
        public double getScore() {
          return score_;
        }
        /**
         * <code>optional double score = 4;</code>
         * @param value The score to set.
         * @return This builder for chaining.
         */
        public Builder setScore(double value) {
          bitField0_ |= 0x00000008;
          score_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional double score = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearScore() {
          bitField0_ = (bitField0_ & ~0x00000008);
          score_ = 0D;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.FlattenedParseTree.Node)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.FlattenedParseTree.Node)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Node>
          PARSER = new com.google.protobuf.AbstractParser<Node>() {
        @java.lang.Override
        public Node parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Node> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Node> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int NODES_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node> nodes_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node> getNodesList() {
      return nodes_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder> 
        getNodesOrBuilderList() {
      return nodes_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    @java.lang.Override
    public int getNodesCount() {
      return nodes_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node getNodes(int index) {
      return nodes_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder getNodesOrBuilder(
        int index) {
      return nodes_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < nodes_.size(); i++) {
        output.writeMessage(1, nodes_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < nodes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, nodes_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree other = (edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree) obj;

      if (!getNodesList()
          .equals(other.getNodesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getNodesCount() > 0) {
        hash = (37 * hash) + NODES_FIELD_NUMBER;
        hash = (53 * hash) + getNodesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A version of ParseTree with a flattened structure so that deep trees
     * don't exceed the protobuf stack depth
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.FlattenedParseTree}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.FlattenedParseTree)
        edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.class, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (nodesBuilder_ == null) {
          nodes_ = java.util.Collections.emptyList();
        } else {
          nodes_ = null;
          nodesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree result = new edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree(this);
        int from_bitField0_ = bitField0_;
        if (nodesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            nodes_ = java.util.Collections.unmodifiableList(nodes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.nodes_ = nodes_;
        } else {
          result.nodes_ = nodesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance()) return this;
        if (nodesBuilder_ == null) {
          if (!other.nodes_.isEmpty()) {
            if (nodes_.isEmpty()) {
              nodes_ = other.nodes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureNodesIsMutable();
              nodes_.addAll(other.nodes_);
            }
            onChanged();
          }
        } else {
          if (!other.nodes_.isEmpty()) {
            if (nodesBuilder_.isEmpty()) {
              nodesBuilder_.dispose();
              nodesBuilder_ = null;
              nodes_ = other.nodes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              nodesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNodesFieldBuilder() : null;
            } else {
              nodesBuilder_.addAllMessages(other.nodes_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.PARSER,
                        extensionRegistry);
                if (nodesBuilder_ == null) {
                  ensureNodesIsMutable();
                  nodes_.add(m);
                } else {
                  nodesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node> nodes_ =
        java.util.Collections.emptyList();
      private void ensureNodesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          nodes_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node>(nodes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder> nodesBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node> getNodesList() {
        if (nodesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nodes_);
        } else {
          return nodesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public int getNodesCount() {
        if (nodesBuilder_ == null) {
          return nodes_.size();
        } else {
          return nodesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node getNodes(int index) {
        if (nodesBuilder_ == null) {
          return nodes_.get(index);
        } else {
          return nodesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder setNodes(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.set(index, value);
          onChanged();
        } else {
          nodesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder setNodes(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.set(index, builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder addNodes(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.add(value);
          onChanged();
        } else {
          nodesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder addNodes(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.add(index, value);
          onChanged();
        } else {
          nodesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder addNodes(
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.add(builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder addNodes(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.add(index, builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder addAllNodes(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node> values) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, nodes_);
          onChanged();
        } else {
          nodesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder clearNodes() {
        if (nodesBuilder_ == null) {
          nodes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          nodesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public Builder removeNodes(int index) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.remove(index);
          onChanged();
        } else {
          nodesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder getNodesBuilder(
          int index) {
        return getNodesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder getNodesOrBuilder(
          int index) {
        if (nodesBuilder_ == null) {
          return nodes_.get(index);  } else {
          return nodesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder> 
           getNodesOrBuilderList() {
        if (nodesBuilder_ != null) {
          return nodesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nodes_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder addNodesBuilder() {
        return getNodesFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder addNodesBuilder(
          int index) {
        return getNodesFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree.Node nodes = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder> 
           getNodesBuilderList() {
        return getNodesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder> 
          getNodesFieldBuilder() {
        if (nodesBuilder_ == null) {
          nodesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Node.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.NodeOrBuilder>(
                  nodes_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          nodes_ = null;
        }
        return nodesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.FlattenedParseTree)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.FlattenedParseTree)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<FlattenedParseTree>
        PARSER = new com.google.protobuf.AbstractParser<FlattenedParseTree>() {
      @java.lang.Override
      public FlattenedParseTree parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<FlattenedParseTree> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<FlattenedParseTree> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EvaluateParserRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.EvaluateParserRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult> 
        getTreebankList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult getTreebank(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    int getTreebankCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder> 
        getTreebankOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder getTreebankOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A protobuf for calling the java constituency parser evaluator from elsewhere
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.EvaluateParserRequest}
   */
  public static final class EvaluateParserRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.EvaluateParserRequest)
      EvaluateParserRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EvaluateParserRequest.newBuilder() to construct.
    private EvaluateParserRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EvaluateParserRequest() {
      treebank_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EvaluateParserRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.Builder.class);
    }

    public interface ParseResultOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
       * @return Whether the gold field is set.
       */
      boolean hasGold();
      /**
       * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
       * @return The gold.
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getGold();
      /**
       * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getGoldOrBuilder();

      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> 
          getPredictedList();
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getPredicted(int index);
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      int getPredictedCount();
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
          getPredictedOrBuilderList();
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getPredictedOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult}
     */
    public static final class ParseResult extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult)
        ParseResultOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ParseResult.newBuilder() to construct.
      private ParseResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ParseResult() {
        predicted_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ParseResult();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.class, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder.class);
      }

      private int bitField0_;
      public static final int GOLD_FIELD_NUMBER = 1;
      private edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree gold_;
      /**
       * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
       * @return Whether the gold field is set.
       */
      @java.lang.Override
      public boolean hasGold() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
       * @return The gold.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getGold() {
        return gold_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance() : gold_;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getGoldOrBuilder() {
        return gold_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance() : gold_;
      }

      public static final int PREDICTED_FIELD_NUMBER = 2;
      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> predicted_;
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      @java.lang.Override
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> getPredictedList() {
        return predicted_;
      }
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      @java.lang.Override
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
          getPredictedOrBuilderList() {
        return predicted_;
      }
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      @java.lang.Override
      public int getPredictedCount() {
        return predicted_.size();
      }
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getPredicted(int index) {
        return predicted_.get(index);
      }
      /**
       * <pre>
       * repeated so you can send in kbest parses, if your parser handles that
       * note that this already includes a score field
       * </pre>
       *
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getPredictedOrBuilder(
          int index) {
        return predicted_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasGold()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getGold());
        }
        for (int i = 0; i < predicted_.size(); i++) {
          output.writeMessage(2, predicted_.get(i));
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getGold());
        }
        for (int i = 0; i < predicted_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, predicted_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult other = (edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult) obj;

        if (hasGold() != other.hasGold()) return false;
        if (hasGold()) {
          if (!getGold()
              .equals(other.getGold())) return false;
        }
        if (!getPredictedList()
            .equals(other.getPredictedList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasGold()) {
          hash = (37 * hash) + GOLD_FIELD_NUMBER;
          hash = (53 * hash) + getGold().hashCode();
        }
        if (getPredictedCount() > 0) {
          hash = (37 * hash) + PREDICTED_FIELD_NUMBER;
          hash = (53 * hash) + getPredictedList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult)
          edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.class, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getGoldFieldBuilder();
            getPredictedFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (goldBuilder_ == null) {
            gold_ = null;
          } else {
            goldBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (predictedBuilder_ == null) {
            predicted_ = java.util.Collections.emptyList();
          } else {
            predicted_ = null;
            predictedBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult result = new edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (goldBuilder_ == null) {
              result.gold_ = gold_;
            } else {
              result.gold_ = goldBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (predictedBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)) {
              predicted_ = java.util.Collections.unmodifiableList(predicted_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.predicted_ = predicted_;
          } else {
            result.predicted_ = predictedBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.getDefaultInstance()) return this;
          if (other.hasGold()) {
            mergeGold(other.getGold());
          }
          if (predictedBuilder_ == null) {
            if (!other.predicted_.isEmpty()) {
              if (predicted_.isEmpty()) {
                predicted_ = other.predicted_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensurePredictedIsMutable();
                predicted_.addAll(other.predicted_);
              }
              onChanged();
            }
          } else {
            if (!other.predicted_.isEmpty()) {
              if (predictedBuilder_.isEmpty()) {
                predictedBuilder_.dispose();
                predictedBuilder_ = null;
                predicted_ = other.predicted_;
                bitField0_ = (bitField0_ & ~0x00000002);
                predictedBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getPredictedFieldBuilder() : null;
              } else {
                predictedBuilder_.addAllMessages(other.predicted_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasGold()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getGoldFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree m =
                      input.readMessage(
                          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.PARSER,
                          extensionRegistry);
                  if (predictedBuilder_ == null) {
                    ensurePredictedIsMutable();
                    predicted_.add(m);
                  } else {
                    predictedBuilder_.addMessage(m);
                  }
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree gold_;
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> goldBuilder_;
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         * @return Whether the gold field is set.
         */
        public boolean hasGold() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         * @return The gold.
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getGold() {
          if (goldBuilder_ == null) {
            return gold_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance() : gold_;
          } else {
            return goldBuilder_.getMessage();
          }
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         */
        public Builder setGold(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
          if (goldBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            gold_ = value;
            onChanged();
          } else {
            goldBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         */
        public Builder setGold(
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
          if (goldBuilder_ == null) {
            gold_ = builderForValue.build();
            onChanged();
          } else {
            goldBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         */
        public Builder mergeGold(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
          if (goldBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                gold_ != null &&
                gold_ != edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance()) {
              gold_ =
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.newBuilder(gold_).mergeFrom(value).buildPartial();
            } else {
              gold_ = value;
            }
            onChanged();
          } else {
            goldBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         */
        public Builder clearGold() {
          if (goldBuilder_ == null) {
            gold_ = null;
            onChanged();
          } else {
            goldBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder getGoldBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getGoldFieldBuilder().getBuilder();
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getGoldOrBuilder() {
          if (goldBuilder_ != null) {
            return goldBuilder_.getMessageOrBuilder();
          } else {
            return gold_ == null ?
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance() : gold_;
          }
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.FlattenedParseTree gold = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
            getGoldFieldBuilder() {
          if (goldBuilder_ == null) {
            goldBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder>(
                    getGold(),
                    getParentForChildren(),
                    isClean());
            gold_ = null;
          }
          return goldBuilder_;
        }

        private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> predicted_ =
          java.util.Collections.emptyList();
        private void ensurePredictedIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            predicted_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree>(predicted_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> predictedBuilder_;

        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> getPredictedList() {
          if (predictedBuilder_ == null) {
            return java.util.Collections.unmodifiableList(predicted_);
          } else {
            return predictedBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public int getPredictedCount() {
          if (predictedBuilder_ == null) {
            return predicted_.size();
          } else {
            return predictedBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getPredicted(int index) {
          if (predictedBuilder_ == null) {
            return predicted_.get(index);
          } else {
            return predictedBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder setPredicted(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
          if (predictedBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePredictedIsMutable();
            predicted_.set(index, value);
            onChanged();
          } else {
            predictedBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder setPredicted(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
          if (predictedBuilder_ == null) {
            ensurePredictedIsMutable();
            predicted_.set(index, builderForValue.build());
            onChanged();
          } else {
            predictedBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder addPredicted(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
          if (predictedBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePredictedIsMutable();
            predicted_.add(value);
            onChanged();
          } else {
            predictedBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder addPredicted(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
          if (predictedBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePredictedIsMutable();
            predicted_.add(index, value);
            onChanged();
          } else {
            predictedBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder addPredicted(
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
          if (predictedBuilder_ == null) {
            ensurePredictedIsMutable();
            predicted_.add(builderForValue.build());
            onChanged();
          } else {
            predictedBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder addPredicted(
            int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
          if (predictedBuilder_ == null) {
            ensurePredictedIsMutable();
            predicted_.add(index, builderForValue.build());
            onChanged();
          } else {
            predictedBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder addAllPredicted(
            java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> values) {
          if (predictedBuilder_ == null) {
            ensurePredictedIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, predicted_);
            onChanged();
          } else {
            predictedBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder clearPredicted() {
          if (predictedBuilder_ == null) {
            predicted_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            predictedBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public Builder removePredicted(int index) {
          if (predictedBuilder_ == null) {
            ensurePredictedIsMutable();
            predicted_.remove(index);
            onChanged();
          } else {
            predictedBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder getPredictedBuilder(
            int index) {
          return getPredictedFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getPredictedOrBuilder(
            int index) {
          if (predictedBuilder_ == null) {
            return predicted_.get(index);  } else {
            return predictedBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
             getPredictedOrBuilderList() {
          if (predictedBuilder_ != null) {
            return predictedBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(predicted_);
          }
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder addPredictedBuilder() {
          return getPredictedFieldBuilder().addBuilder(
              edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance());
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder addPredictedBuilder(
            int index) {
          return getPredictedFieldBuilder().addBuilder(
              index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance());
        }
        /**
         * <pre>
         * repeated so you can send in kbest parses, if your parser handles that
         * note that this already includes a score field
         * </pre>
         *
         * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree predicted = 2;</code>
         */
        public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder> 
             getPredictedBuilderList() {
          return getPredictedFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
            getPredictedFieldBuilder() {
          if (predictedBuilder_ == null) {
            predictedBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder>(
                    predicted_,
                    ((bitField0_ & 0x00000002) != 0),
                    getParentForChildren(),
                    isClean());
            predicted_ = null;
          }
          return predictedBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<ParseResult>
          PARSER = new com.google.protobuf.AbstractParser<ParseResult>() {
        @java.lang.Override
        public ParseResult parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<ParseResult> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<ParseResult> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int TREEBANK_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult> treebank_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult> getTreebankList() {
      return treebank_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder> 
        getTreebankOrBuilderList() {
      return treebank_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    @java.lang.Override
    public int getTreebankCount() {
      return treebank_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult getTreebank(int index) {
      return treebank_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder getTreebankOrBuilder(
        int index) {
      return treebank_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getTreebankCount(); i++) {
        if (!getTreebank(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < treebank_.size(); i++) {
        output.writeMessage(1, treebank_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < treebank_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, treebank_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest other = (edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest) obj;

      if (!getTreebankList()
          .equals(other.getTreebankList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTreebankCount() > 0) {
        hash = (37 * hash) + TREEBANK_FIELD_NUMBER;
        hash = (53 * hash) + getTreebankList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A protobuf for calling the java constituency parser evaluator from elsewhere
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.EvaluateParserRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.EvaluateParserRequest)
        edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (treebankBuilder_ == null) {
          treebank_ = java.util.Collections.emptyList();
        } else {
          treebank_ = null;
          treebankBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest result = new edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest(this);
        int from_bitField0_ = bitField0_;
        if (treebankBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            treebank_ = java.util.Collections.unmodifiableList(treebank_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.treebank_ = treebank_;
        } else {
          result.treebank_ = treebankBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.getDefaultInstance()) return this;
        if (treebankBuilder_ == null) {
          if (!other.treebank_.isEmpty()) {
            if (treebank_.isEmpty()) {
              treebank_ = other.treebank_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTreebankIsMutable();
              treebank_.addAll(other.treebank_);
            }
            onChanged();
          }
        } else {
          if (!other.treebank_.isEmpty()) {
            if (treebankBuilder_.isEmpty()) {
              treebankBuilder_.dispose();
              treebankBuilder_ = null;
              treebank_ = other.treebank_;
              bitField0_ = (bitField0_ & ~0x00000001);
              treebankBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTreebankFieldBuilder() : null;
            } else {
              treebankBuilder_.addAllMessages(other.treebank_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getTreebankCount(); i++) {
          if (!getTreebank(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.PARSER,
                        extensionRegistry);
                if (treebankBuilder_ == null) {
                  ensureTreebankIsMutable();
                  treebank_.add(m);
                } else {
                  treebankBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult> treebank_ =
        java.util.Collections.emptyList();
      private void ensureTreebankIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          treebank_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult>(treebank_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder> treebankBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult> getTreebankList() {
        if (treebankBuilder_ == null) {
          return java.util.Collections.unmodifiableList(treebank_);
        } else {
          return treebankBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public int getTreebankCount() {
        if (treebankBuilder_ == null) {
          return treebank_.size();
        } else {
          return treebankBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult getTreebank(int index) {
        if (treebankBuilder_ == null) {
          return treebank_.get(index);
        } else {
          return treebankBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder setTreebank(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult value) {
        if (treebankBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreebankIsMutable();
          treebank_.set(index, value);
          onChanged();
        } else {
          treebankBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder setTreebank(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder builderForValue) {
        if (treebankBuilder_ == null) {
          ensureTreebankIsMutable();
          treebank_.set(index, builderForValue.build());
          onChanged();
        } else {
          treebankBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder addTreebank(edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult value) {
        if (treebankBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreebankIsMutable();
          treebank_.add(value);
          onChanged();
        } else {
          treebankBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder addTreebank(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult value) {
        if (treebankBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreebankIsMutable();
          treebank_.add(index, value);
          onChanged();
        } else {
          treebankBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder addTreebank(
          edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder builderForValue) {
        if (treebankBuilder_ == null) {
          ensureTreebankIsMutable();
          treebank_.add(builderForValue.build());
          onChanged();
        } else {
          treebankBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder addTreebank(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder builderForValue) {
        if (treebankBuilder_ == null) {
          ensureTreebankIsMutable();
          treebank_.add(index, builderForValue.build());
          onChanged();
        } else {
          treebankBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder addAllTreebank(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult> values) {
        if (treebankBuilder_ == null) {
          ensureTreebankIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, treebank_);
          onChanged();
        } else {
          treebankBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder clearTreebank() {
        if (treebankBuilder_ == null) {
          treebank_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          treebankBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public Builder removeTreebank(int index) {
        if (treebankBuilder_ == null) {
          ensureTreebankIsMutable();
          treebank_.remove(index);
          onChanged();
        } else {
          treebankBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder getTreebankBuilder(
          int index) {
        return getTreebankFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder getTreebankOrBuilder(
          int index) {
        if (treebankBuilder_ == null) {
          return treebank_.get(index);  } else {
          return treebankBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder> 
           getTreebankOrBuilderList() {
        if (treebankBuilder_ != null) {
          return treebankBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(treebank_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder addTreebankBuilder() {
        return getTreebankFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder addTreebankBuilder(
          int index) {
        return getTreebankFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.EvaluateParserRequest.ParseResult treebank = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder> 
           getTreebankBuilderList() {
        return getTreebankFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder> 
          getTreebankFieldBuilder() {
        if (treebankBuilder_ == null) {
          treebankBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResult.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest.ParseResultOrBuilder>(
                  treebank_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          treebank_ = null;
        }
        return treebankBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.EvaluateParserRequest)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.EvaluateParserRequest)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<EvaluateParserRequest>
        PARSER = new com.google.protobuf.AbstractParser<EvaluateParserRequest>() {
      @java.lang.Override
      public EvaluateParserRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<EvaluateParserRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<EvaluateParserRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EvaluateParserResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.EvaluateParserResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required double f1 = 1;</code>
     * @return Whether the f1 field is set.
     */
    boolean hasF1();
    /**
     * <code>required double f1 = 1;</code>
     * @return The f1.
     */
    double getF1();

    /**
     * <code>optional double kbestF1 = 2;</code>
     * @return Whether the kbestF1 field is set.
     */
    boolean hasKbestF1();
    /**
     * <code>optional double kbestF1 = 2;</code>
     * @return The kbestF1.
     */
    double getKbestF1();
  }
  /**
   * Protobuf type {@code edu.stanford.nlp.pipeline.EvaluateParserResponse}
   */
  public static final class EvaluateParserResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.EvaluateParserResponse)
      EvaluateParserResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EvaluateParserResponse.newBuilder() to construct.
    private EvaluateParserResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EvaluateParserResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EvaluateParserResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse.Builder.class);
    }

    private int bitField0_;
    public static final int F1_FIELD_NUMBER = 1;
    private double f1_;
    /**
     * <code>required double f1 = 1;</code>
     * @return Whether the f1 field is set.
     */
    @java.lang.Override
    public boolean hasF1() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required double f1 = 1;</code>
     * @return The f1.
     */
    @java.lang.Override
    public double getF1() {
      return f1_;
    }

    public static final int KBESTF1_FIELD_NUMBER = 2;
    private double kbestF1_;
    /**
     * <code>optional double kbestF1 = 2;</code>
     * @return Whether the kbestF1 field is set.
     */
    @java.lang.Override
    public boolean hasKbestF1() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional double kbestF1 = 2;</code>
     * @return The kbestF1.
     */
    @java.lang.Override
    public double getKbestF1() {
      return kbestF1_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasF1()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeDouble(1, f1_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeDouble(2, kbestF1_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, f1_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, kbestF1_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse other = (edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse) obj;

      if (hasF1() != other.hasF1()) return false;
      if (hasF1()) {
        if (java.lang.Double.doubleToLongBits(getF1())
            != java.lang.Double.doubleToLongBits(
                other.getF1())) return false;
      }
      if (hasKbestF1() != other.hasKbestF1()) return false;
      if (hasKbestF1()) {
        if (java.lang.Double.doubleToLongBits(getKbestF1())
            != java.lang.Double.doubleToLongBits(
                other.getKbestF1())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasF1()) {
        hash = (37 * hash) + F1_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getF1()));
      }
      if (hasKbestF1()) {
        hash = (37 * hash) + KBESTF1_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getKbestF1()));
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.EvaluateParserResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.EvaluateParserResponse)
        edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        f1_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000001);
        kbestF1_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse result = new edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.f1_ = f1_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.kbestF1_ = kbestF1_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse.getDefaultInstance()) return this;
        if (other.hasF1()) {
          setF1(other.getF1());
        }
        if (other.hasKbestF1()) {
          setKbestF1(other.getKbestF1());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasF1()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                f1_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              case 17: {
                kbestF1_ = input.readDouble();
                bitField0_ |= 0x00000002;
                break;
              } // case 17
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double f1_ ;
      /**
       * <code>required double f1 = 1;</code>
       * @return Whether the f1 field is set.
       */
      @java.lang.Override
      public boolean hasF1() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required double f1 = 1;</code>
       * @return The f1.
       */
      @java.lang.Override
      public double getF1() {
        return f1_;
      }
      /**
       * <code>required double f1 = 1;</code>
       * @param value The f1 to set.
       * @return This builder for chaining.
       */
      public Builder setF1(double value) {
        bitField0_ |= 0x00000001;
        f1_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required double f1 = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearF1() {
        bitField0_ = (bitField0_ & ~0x00000001);
        f1_ = 0D;
        onChanged();
        return this;
      }

      private double kbestF1_ ;
      /**
       * <code>optional double kbestF1 = 2;</code>
       * @return Whether the kbestF1 field is set.
       */
      @java.lang.Override
      public boolean hasKbestF1() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional double kbestF1 = 2;</code>
       * @return The kbestF1.
       */
      @java.lang.Override
      public double getKbestF1() {
        return kbestF1_;
      }
      /**
       * <code>optional double kbestF1 = 2;</code>
       * @param value The kbestF1 to set.
       * @return This builder for chaining.
       */
      public Builder setKbestF1(double value) {
        bitField0_ |= 0x00000002;
        kbestF1_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional double kbestF1 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearKbestF1() {
        bitField0_ = (bitField0_ & ~0x00000002);
        kbestF1_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.EvaluateParserResponse)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.EvaluateParserResponse)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<EvaluateParserResponse>
        PARSER = new com.google.protobuf.AbstractParser<EvaluateParserResponse>() {
      @java.lang.Override
      public EvaluateParserResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<EvaluateParserResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<EvaluateParserResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.EvaluateParserResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TsurgeonRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TsurgeonRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation> 
        getOperationsList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation getOperations(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    int getOperationsCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder> 
        getOperationsOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder getOperationsOrBuilder(
        int index);

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> 
        getTreesList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    int getTreesCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
        getTreesOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A protobuf for running Tsurgeon operations on constituency trees
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.TsurgeonRequest}
   */
  public static final class TsurgeonRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TsurgeonRequest)
      TsurgeonRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TsurgeonRequest.newBuilder() to construct.
    private TsurgeonRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TsurgeonRequest() {
      operations_ = java.util.Collections.emptyList();
      trees_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TsurgeonRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Builder.class);
    }

    public interface OperationOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TsurgeonRequest.Operation)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required string tregex = 1;</code>
       * @return Whether the tregex field is set.
       */
      boolean hasTregex();
      /**
       * <code>required string tregex = 1;</code>
       * @return The tregex.
       */
      java.lang.String getTregex();
      /**
       * <code>required string tregex = 1;</code>
       * @return The bytes for tregex.
       */
      com.google.protobuf.ByteString
          getTregexBytes();

      /**
       * <code>repeated string tsurgeon = 2;</code>
       * @return A list containing the tsurgeon.
       */
      java.util.List<java.lang.String>
          getTsurgeonList();
      /**
       * <code>repeated string tsurgeon = 2;</code>
       * @return The count of tsurgeon.
       */
      int getTsurgeonCount();
      /**
       * <code>repeated string tsurgeon = 2;</code>
       * @param index The index of the element to return.
       * @return The tsurgeon at the given index.
       */
      java.lang.String getTsurgeon(int index);
      /**
       * <code>repeated string tsurgeon = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tsurgeon at the given index.
       */
      com.google.protobuf.ByteString
          getTsurgeonBytes(int index);
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.TsurgeonRequest.Operation}
     */
    public static final class Operation extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TsurgeonRequest.Operation)
        OperationOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Operation.newBuilder() to construct.
      private Operation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Operation() {
        tregex_ = "";
        tsurgeon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Operation();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder.class);
      }

      private int bitField0_;
      public static final int TREGEX_FIELD_NUMBER = 1;
      private volatile java.lang.Object tregex_;
      /**
       * <code>required string tregex = 1;</code>
       * @return Whether the tregex field is set.
       */
      @java.lang.Override
      public boolean hasTregex() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string tregex = 1;</code>
       * @return The tregex.
       */
      @java.lang.Override
      public java.lang.String getTregex() {
        java.lang.Object ref = tregex_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tregex_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string tregex = 1;</code>
       * @return The bytes for tregex.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTregexBytes() {
        java.lang.Object ref = tregex_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tregex_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TSURGEON_FIELD_NUMBER = 2;
      private com.google.protobuf.LazyStringList tsurgeon_;
      /**
       * <code>repeated string tsurgeon = 2;</code>
       * @return A list containing the tsurgeon.
       */
      public com.google.protobuf.ProtocolStringList
          getTsurgeonList() {
        return tsurgeon_;
      }
      /**
       * <code>repeated string tsurgeon = 2;</code>
       * @return The count of tsurgeon.
       */
      public int getTsurgeonCount() {
        return tsurgeon_.size();
      }
      /**
       * <code>repeated string tsurgeon = 2;</code>
       * @param index The index of the element to return.
       * @return The tsurgeon at the given index.
       */
      public java.lang.String getTsurgeon(int index) {
        return tsurgeon_.get(index);
      }
      /**
       * <code>repeated string tsurgeon = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tsurgeon at the given index.
       */
      public com.google.protobuf.ByteString
          getTsurgeonBytes(int index) {
        return tsurgeon_.getByteString(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasTregex()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, tregex_);
        }
        for (int i = 0; i < tsurgeon_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, tsurgeon_.getRaw(i));
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, tregex_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < tsurgeon_.size(); i++) {
            dataSize += computeStringSizeNoTag(tsurgeon_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getTsurgeonList().size();
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation) obj;

        if (hasTregex() != other.hasTregex()) return false;
        if (hasTregex()) {
          if (!getTregex()
              .equals(other.getTregex())) return false;
        }
        if (!getTsurgeonList()
            .equals(other.getTsurgeonList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTregex()) {
          hash = (37 * hash) + TREGEX_FIELD_NUMBER;
          hash = (53 * hash) + getTregex().hashCode();
        }
        if (getTsurgeonCount() > 0) {
          hash = (37 * hash) + TSURGEON_FIELD_NUMBER;
          hash = (53 * hash) + getTsurgeonList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.TsurgeonRequest.Operation}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TsurgeonRequest.Operation)
          edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          tregex_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          tsurgeon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.tregex_ = tregex_;
          if (((bitField0_ & 0x00000002) != 0)) {
            tsurgeon_ = tsurgeon_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.tsurgeon_ = tsurgeon_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.getDefaultInstance()) return this;
          if (other.hasTregex()) {
            bitField0_ |= 0x00000001;
            tregex_ = other.tregex_;
            onChanged();
          }
          if (!other.tsurgeon_.isEmpty()) {
            if (tsurgeon_.isEmpty()) {
              tsurgeon_ = other.tsurgeon_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureTsurgeonIsMutable();
              tsurgeon_.addAll(other.tsurgeon_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasTregex()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  tregex_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  ensureTsurgeonIsMutable();
                  tsurgeon_.add(bs);
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object tregex_ = "";
        /**
         * <code>required string tregex = 1;</code>
         * @return Whether the tregex field is set.
         */
        public boolean hasTregex() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string tregex = 1;</code>
         * @return The tregex.
         */
        public java.lang.String getTregex() {
          java.lang.Object ref = tregex_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              tregex_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string tregex = 1;</code>
         * @return The bytes for tregex.
         */
        public com.google.protobuf.ByteString
            getTregexBytes() {
          java.lang.Object ref = tregex_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            tregex_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string tregex = 1;</code>
         * @param value The tregex to set.
         * @return This builder for chaining.
         */
        public Builder setTregex(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          tregex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string tregex = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTregex() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tregex_ = getDefaultInstance().getTregex();
          onChanged();
          return this;
        }
        /**
         * <code>required string tregex = 1;</code>
         * @param value The bytes for tregex to set.
         * @return This builder for chaining.
         */
        public Builder setTregexBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          tregex_ = value;
          onChanged();
          return this;
        }

        private com.google.protobuf.LazyStringList tsurgeon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureTsurgeonIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            tsurgeon_ = new com.google.protobuf.LazyStringArrayList(tsurgeon_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @return A list containing the tsurgeon.
         */
        public com.google.protobuf.ProtocolStringList
            getTsurgeonList() {
          return tsurgeon_.getUnmodifiableView();
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @return The count of tsurgeon.
         */
        public int getTsurgeonCount() {
          return tsurgeon_.size();
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @param index The index of the element to return.
         * @return The tsurgeon at the given index.
         */
        public java.lang.String getTsurgeon(int index) {
          return tsurgeon_.get(index);
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @param index The index of the value to return.
         * @return The bytes of the tsurgeon at the given index.
         */
        public com.google.protobuf.ByteString
            getTsurgeonBytes(int index) {
          return tsurgeon_.getByteString(index);
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @param index The index to set the value at.
         * @param value The tsurgeon to set.
         * @return This builder for chaining.
         */
        public Builder setTsurgeon(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureTsurgeonIsMutable();
          tsurgeon_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @param value The tsurgeon to add.
         * @return This builder for chaining.
         */
        public Builder addTsurgeon(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureTsurgeonIsMutable();
          tsurgeon_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @param values The tsurgeon to add.
         * @return This builder for chaining.
         */
        public Builder addAllTsurgeon(
            java.lang.Iterable<java.lang.String> values) {
          ensureTsurgeonIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, tsurgeon_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearTsurgeon() {
          tsurgeon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string tsurgeon = 2;</code>
         * @param value The bytes of the tsurgeon to add.
         * @return This builder for chaining.
         */
        public Builder addTsurgeonBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureTsurgeonIsMutable();
          tsurgeon_.add(value);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TsurgeonRequest.Operation)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TsurgeonRequest.Operation)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<Operation>
          PARSER = new com.google.protobuf.AbstractParser<Operation>() {
        @java.lang.Override
        public Operation parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Operation> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Operation> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int OPERATIONS_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation> operations_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation> getOperationsList() {
      return operations_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder> 
        getOperationsOrBuilderList() {
      return operations_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    @java.lang.Override
    public int getOperationsCount() {
      return operations_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation getOperations(int index) {
      return operations_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder getOperationsOrBuilder(
        int index) {
      return operations_.get(index);
    }

    public static final int TREES_FIELD_NUMBER = 2;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> trees_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> getTreesList() {
      return trees_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
        getTreesOrBuilderList() {
      return trees_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    @java.lang.Override
    public int getTreesCount() {
      return trees_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index) {
      return trees_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
        int index) {
      return trees_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getOperationsCount(); i++) {
        if (!getOperations(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < operations_.size(); i++) {
        output.writeMessage(1, operations_.get(i));
      }
      for (int i = 0; i < trees_.size(); i++) {
        output.writeMessage(2, trees_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < operations_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, operations_.get(i));
      }
      for (int i = 0; i < trees_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, trees_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest) obj;

      if (!getOperationsList()
          .equals(other.getOperationsList())) return false;
      if (!getTreesList()
          .equals(other.getTreesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getOperationsCount() > 0) {
        hash = (37 * hash) + OPERATIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOperationsList().hashCode();
      }
      if (getTreesCount() > 0) {
        hash = (37 * hash) + TREES_FIELD_NUMBER;
        hash = (53 * hash) + getTreesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A protobuf for running Tsurgeon operations on constituency trees
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.TsurgeonRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TsurgeonRequest)
        edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (operationsBuilder_ == null) {
          operations_ = java.util.Collections.emptyList();
        } else {
          operations_ = null;
          operationsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (treesBuilder_ == null) {
          trees_ = java.util.Collections.emptyList();
        } else {
          trees_ = null;
          treesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest(this);
        int from_bitField0_ = bitField0_;
        if (operationsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            operations_ = java.util.Collections.unmodifiableList(operations_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.operations_ = operations_;
        } else {
          result.operations_ = operationsBuilder_.build();
        }
        if (treesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            trees_ = java.util.Collections.unmodifiableList(trees_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.trees_ = trees_;
        } else {
          result.trees_ = treesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.getDefaultInstance()) return this;
        if (operationsBuilder_ == null) {
          if (!other.operations_.isEmpty()) {
            if (operations_.isEmpty()) {
              operations_ = other.operations_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureOperationsIsMutable();
              operations_.addAll(other.operations_);
            }
            onChanged();
          }
        } else {
          if (!other.operations_.isEmpty()) {
            if (operationsBuilder_.isEmpty()) {
              operationsBuilder_.dispose();
              operationsBuilder_ = null;
              operations_ = other.operations_;
              bitField0_ = (bitField0_ & ~0x00000001);
              operationsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getOperationsFieldBuilder() : null;
            } else {
              operationsBuilder_.addAllMessages(other.operations_);
            }
          }
        }
        if (treesBuilder_ == null) {
          if (!other.trees_.isEmpty()) {
            if (trees_.isEmpty()) {
              trees_ = other.trees_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureTreesIsMutable();
              trees_.addAll(other.trees_);
            }
            onChanged();
          }
        } else {
          if (!other.trees_.isEmpty()) {
            if (treesBuilder_.isEmpty()) {
              treesBuilder_.dispose();
              treesBuilder_ = null;
              trees_ = other.trees_;
              bitField0_ = (bitField0_ & ~0x00000002);
              treesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTreesFieldBuilder() : null;
            } else {
              treesBuilder_.addAllMessages(other.trees_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getOperationsCount(); i++) {
          if (!getOperations(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.PARSER,
                        extensionRegistry);
                if (operationsBuilder_ == null) {
                  ensureOperationsIsMutable();
                  operations_.add(m);
                } else {
                  operationsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.PARSER,
                        extensionRegistry);
                if (treesBuilder_ == null) {
                  ensureTreesIsMutable();
                  trees_.add(m);
                } else {
                  treesBuilder_.addMessage(m);
                }
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation> operations_ =
        java.util.Collections.emptyList();
      private void ensureOperationsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          operations_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation>(operations_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder> operationsBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation> getOperationsList() {
        if (operationsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(operations_);
        } else {
          return operationsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public int getOperationsCount() {
        if (operationsBuilder_ == null) {
          return operations_.size();
        } else {
          return operationsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation getOperations(int index) {
        if (operationsBuilder_ == null) {
          return operations_.get(index);
        } else {
          return operationsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder setOperations(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation value) {
        if (operationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOperationsIsMutable();
          operations_.set(index, value);
          onChanged();
        } else {
          operationsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder setOperations(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder builderForValue) {
        if (operationsBuilder_ == null) {
          ensureOperationsIsMutable();
          operations_.set(index, builderForValue.build());
          onChanged();
        } else {
          operationsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder addOperations(edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation value) {
        if (operationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOperationsIsMutable();
          operations_.add(value);
          onChanged();
        } else {
          operationsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder addOperations(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation value) {
        if (operationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOperationsIsMutable();
          operations_.add(index, value);
          onChanged();
        } else {
          operationsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder addOperations(
          edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder builderForValue) {
        if (operationsBuilder_ == null) {
          ensureOperationsIsMutable();
          operations_.add(builderForValue.build());
          onChanged();
        } else {
          operationsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder addOperations(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder builderForValue) {
        if (operationsBuilder_ == null) {
          ensureOperationsIsMutable();
          operations_.add(index, builderForValue.build());
          onChanged();
        } else {
          operationsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder addAllOperations(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation> values) {
        if (operationsBuilder_ == null) {
          ensureOperationsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, operations_);
          onChanged();
        } else {
          operationsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder clearOperations() {
        if (operationsBuilder_ == null) {
          operations_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          operationsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public Builder removeOperations(int index) {
        if (operationsBuilder_ == null) {
          ensureOperationsIsMutable();
          operations_.remove(index);
          onChanged();
        } else {
          operationsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder getOperationsBuilder(
          int index) {
        return getOperationsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder getOperationsOrBuilder(
          int index) {
        if (operationsBuilder_ == null) {
          return operations_.get(index);  } else {
          return operationsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder> 
           getOperationsOrBuilderList() {
        if (operationsBuilder_ != null) {
          return operationsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(operations_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder addOperationsBuilder() {
        return getOperationsFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder addOperationsBuilder(
          int index) {
        return getOperationsFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.TsurgeonRequest.Operation operations = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder> 
           getOperationsBuilderList() {
        return getOperationsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder> 
          getOperationsFieldBuilder() {
        if (operationsBuilder_ == null) {
          operationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.Operation.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest.OperationOrBuilder>(
                  operations_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          operations_ = null;
        }
        return operationsBuilder_;
      }

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> trees_ =
        java.util.Collections.emptyList();
      private void ensureTreesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          trees_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree>(trees_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> treesBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> getTreesList() {
        if (treesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(trees_);
        } else {
          return treesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public int getTreesCount() {
        if (treesBuilder_ == null) {
          return trees_.size();
        } else {
          return treesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index) {
        if (treesBuilder_ == null) {
          return trees_.get(index);
        } else {
          return treesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder setTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.set(index, value);
          onChanged();
        } else {
          treesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder setTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.set(index, builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder addTrees(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.add(value);
          onChanged();
        } else {
          treesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder addTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.add(index, value);
          onChanged();
        } else {
          treesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder addTrees(
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.add(builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder addTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.add(index, builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder addAllTrees(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> values) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, trees_);
          onChanged();
        } else {
          treesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder clearTrees() {
        if (treesBuilder_ == null) {
          trees_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          treesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public Builder removeTrees(int index) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.remove(index);
          onChanged();
        } else {
          treesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder getTreesBuilder(
          int index) {
        return getTreesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
          int index) {
        if (treesBuilder_ == null) {
          return trees_.get(index);  } else {
          return treesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
           getTreesOrBuilderList() {
        if (treesBuilder_ != null) {
          return treesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(trees_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder addTreesBuilder() {
        return getTreesFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder addTreesBuilder(
          int index) {
        return getTreesFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 2;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder> 
           getTreesBuilderList() {
        return getTreesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
          getTreesFieldBuilder() {
        if (treesBuilder_ == null) {
          treesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder>(
                  trees_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          trees_ = null;
        }
        return treesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TsurgeonRequest)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TsurgeonRequest)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<TsurgeonRequest>
        PARSER = new com.google.protobuf.AbstractParser<TsurgeonRequest>() {
      @java.lang.Override
      public TsurgeonRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<TsurgeonRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TsurgeonRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TsurgeonResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.TsurgeonResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> 
        getTreesList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    int getTreesCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
        getTreesOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * The results of the Tsurgeon operation
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.TsurgeonResponse}
   */
  public static final class TsurgeonResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.TsurgeonResponse)
      TsurgeonResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TsurgeonResponse.newBuilder() to construct.
    private TsurgeonResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TsurgeonResponse() {
      trees_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TsurgeonResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse.Builder.class);
    }

    public static final int TREES_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> trees_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> getTreesList() {
      return trees_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
        getTreesOrBuilderList() {
      return trees_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public int getTreesCount() {
      return trees_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index) {
      return trees_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
        int index) {
      return trees_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < trees_.size(); i++) {
        output.writeMessage(1, trees_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < trees_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, trees_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse other = (edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse) obj;

      if (!getTreesList()
          .equals(other.getTreesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTreesCount() > 0) {
        hash = (37 * hash) + TREES_FIELD_NUMBER;
        hash = (53 * hash) + getTreesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The results of the Tsurgeon operation
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.TsurgeonResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.TsurgeonResponse)
        edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (treesBuilder_ == null) {
          trees_ = java.util.Collections.emptyList();
        } else {
          trees_ = null;
          treesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse result = new edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse(this);
        int from_bitField0_ = bitField0_;
        if (treesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            trees_ = java.util.Collections.unmodifiableList(trees_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.trees_ = trees_;
        } else {
          result.trees_ = treesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse.getDefaultInstance()) return this;
        if (treesBuilder_ == null) {
          if (!other.trees_.isEmpty()) {
            if (trees_.isEmpty()) {
              trees_ = other.trees_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTreesIsMutable();
              trees_.addAll(other.trees_);
            }
            onChanged();
          }
        } else {
          if (!other.trees_.isEmpty()) {
            if (treesBuilder_.isEmpty()) {
              treesBuilder_.dispose();
              treesBuilder_ = null;
              trees_ = other.trees_;
              bitField0_ = (bitField0_ & ~0x00000001);
              treesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTreesFieldBuilder() : null;
            } else {
              treesBuilder_.addAllMessages(other.trees_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.PARSER,
                        extensionRegistry);
                if (treesBuilder_ == null) {
                  ensureTreesIsMutable();
                  trees_.add(m);
                } else {
                  treesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> trees_ =
        java.util.Collections.emptyList();
      private void ensureTreesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          trees_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree>(trees_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> treesBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> getTreesList() {
        if (treesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(trees_);
        } else {
          return treesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public int getTreesCount() {
        if (treesBuilder_ == null) {
          return trees_.size();
        } else {
          return treesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index) {
        if (treesBuilder_ == null) {
          return trees_.get(index);
        } else {
          return treesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder setTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.set(index, value);
          onChanged();
        } else {
          treesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder setTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.set(index, builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addTrees(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.add(value);
          onChanged();
        } else {
          treesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.add(index, value);
          onChanged();
        } else {
          treesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addTrees(
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.add(builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.add(index, builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addAllTrees(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> values) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, trees_);
          onChanged();
        } else {
          treesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder clearTrees() {
        if (treesBuilder_ == null) {
          trees_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          treesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder removeTrees(int index) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.remove(index);
          onChanged();
        } else {
          treesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder getTreesBuilder(
          int index) {
        return getTreesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
          int index) {
        if (treesBuilder_ == null) {
          return trees_.get(index);  } else {
          return treesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
           getTreesOrBuilderList() {
        if (treesBuilder_ != null) {
          return treesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(trees_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder addTreesBuilder() {
        return getTreesFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder addTreesBuilder(
          int index) {
        return getTreesFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder> 
           getTreesBuilderList() {
        return getTreesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
          getTreesFieldBuilder() {
        if (treesBuilder_ == null) {
          treesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder>(
                  trees_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          trees_ = null;
        }
        return treesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.TsurgeonResponse)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.TsurgeonResponse)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<TsurgeonResponse>
        PARSER = new com.google.protobuf.AbstractParser<TsurgeonResponse>() {
      @java.lang.Override
      public TsurgeonResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<TsurgeonResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TsurgeonResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.TsurgeonResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MorphologyRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.MorphologyRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord> 
        getWordsList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord getWords(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    int getWordsCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder> 
        getWordsOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder getWordsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Sent in Morphology requests - a stream of sentences with tagged words
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.MorphologyRequest}
   */
  public static final class MorphologyRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.MorphologyRequest)
      MorphologyRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MorphologyRequest.newBuilder() to construct.
    private MorphologyRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MorphologyRequest() {
      words_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MorphologyRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.Builder.class);
    }

    public interface TaggedWordOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required string word = 1;</code>
       * @return Whether the word field is set.
       */
      boolean hasWord();
      /**
       * <code>required string word = 1;</code>
       * @return The word.
       */
      java.lang.String getWord();
      /**
       * <code>required string word = 1;</code>
       * @return The bytes for word.
       */
      com.google.protobuf.ByteString
          getWordBytes();

      /**
       * <code>optional string xpos = 2;</code>
       * @return Whether the xpos field is set.
       */
      boolean hasXpos();
      /**
       * <code>optional string xpos = 2;</code>
       * @return The xpos.
       */
      java.lang.String getXpos();
      /**
       * <code>optional string xpos = 2;</code>
       * @return The bytes for xpos.
       */
      com.google.protobuf.ByteString
          getXposBytes();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord}
     */
    public static final class TaggedWord extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord)
        TaggedWordOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TaggedWord.newBuilder() to construct.
      private TaggedWord(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TaggedWord() {
        word_ = "";
        xpos_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new TaggedWord();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder.class);
      }

      private int bitField0_;
      public static final int WORD_FIELD_NUMBER = 1;
      private volatile java.lang.Object word_;
      /**
       * <code>required string word = 1;</code>
       * @return Whether the word field is set.
       */
      @java.lang.Override
      public boolean hasWord() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string word = 1;</code>
       * @return The word.
       */
      @java.lang.Override
      public java.lang.String getWord() {
        java.lang.Object ref = word_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            word_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string word = 1;</code>
       * @return The bytes for word.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getWordBytes() {
        java.lang.Object ref = word_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          word_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int XPOS_FIELD_NUMBER = 2;
      private volatile java.lang.Object xpos_;
      /**
       * <code>optional string xpos = 2;</code>
       * @return Whether the xpos field is set.
       */
      @java.lang.Override
      public boolean hasXpos() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string xpos = 2;</code>
       * @return The xpos.
       */
      @java.lang.Override
      public java.lang.String getXpos() {
        java.lang.Object ref = xpos_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            xpos_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string xpos = 2;</code>
       * @return The bytes for xpos.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getXposBytes() {
        java.lang.Object ref = xpos_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xpos_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasWord()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, word_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, xpos_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, word_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, xpos_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord other = (edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord) obj;

        if (hasWord() != other.hasWord()) return false;
        if (hasWord()) {
          if (!getWord()
              .equals(other.getWord())) return false;
        }
        if (hasXpos() != other.hasXpos()) return false;
        if (hasXpos()) {
          if (!getXpos()
              .equals(other.getXpos())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasWord()) {
          hash = (37 * hash) + WORD_FIELD_NUMBER;
          hash = (53 * hash) + getWord().hashCode();
        }
        if (hasXpos()) {
          hash = (37 * hash) + XPOS_FIELD_NUMBER;
          hash = (53 * hash) + getXpos().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord)
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          word_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          xpos_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord result = new edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.word_ = word_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.xpos_ = xpos_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.getDefaultInstance()) return this;
          if (other.hasWord()) {
            bitField0_ |= 0x00000001;
            word_ = other.word_;
            onChanged();
          }
          if (other.hasXpos()) {
            bitField0_ |= 0x00000002;
            xpos_ = other.xpos_;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasWord()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  word_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  xpos_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object word_ = "";
        /**
         * <code>required string word = 1;</code>
         * @return Whether the word field is set.
         */
        public boolean hasWord() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string word = 1;</code>
         * @return The word.
         */
        public java.lang.String getWord() {
          java.lang.Object ref = word_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              word_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string word = 1;</code>
         * @return The bytes for word.
         */
        public com.google.protobuf.ByteString
            getWordBytes() {
          java.lang.Object ref = word_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            word_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string word = 1;</code>
         * @param value The word to set.
         * @return This builder for chaining.
         */
        public Builder setWord(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          word_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string word = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearWord() {
          bitField0_ = (bitField0_ & ~0x00000001);
          word_ = getDefaultInstance().getWord();
          onChanged();
          return this;
        }
        /**
         * <code>required string word = 1;</code>
         * @param value The bytes for word to set.
         * @return This builder for chaining.
         */
        public Builder setWordBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          word_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object xpos_ = "";
        /**
         * <code>optional string xpos = 2;</code>
         * @return Whether the xpos field is set.
         */
        public boolean hasXpos() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @return The xpos.
         */
        public java.lang.String getXpos() {
          java.lang.Object ref = xpos_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              xpos_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @return The bytes for xpos.
         */
        public com.google.protobuf.ByteString
            getXposBytes() {
          java.lang.Object ref = xpos_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            xpos_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @param value The xpos to set.
         * @return This builder for chaining.
         */
        public Builder setXpos(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          xpos_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearXpos() {
          bitField0_ = (bitField0_ & ~0x00000002);
          xpos_ = getDefaultInstance().getXpos();
          onChanged();
          return this;
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @param value The bytes for xpos to set.
         * @return This builder for chaining.
         */
        public Builder setXposBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          xpos_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<TaggedWord>
          PARSER = new com.google.protobuf.AbstractParser<TaggedWord>() {
        @java.lang.Override
        public TaggedWord parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<TaggedWord> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<TaggedWord> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int WORDS_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord> words_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord> getWordsList() {
      return words_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder> 
        getWordsOrBuilderList() {
      return words_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    @java.lang.Override
    public int getWordsCount() {
      return words_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord getWords(int index) {
      return words_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder getWordsOrBuilder(
        int index) {
      return words_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getWordsCount(); i++) {
        if (!getWords(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < words_.size(); i++) {
        output.writeMessage(1, words_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < words_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, words_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest other = (edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest) obj;

      if (!getWordsList()
          .equals(other.getWordsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getWordsCount() > 0) {
        hash = (37 * hash) + WORDS_FIELD_NUMBER;
        hash = (53 * hash) + getWordsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Sent in Morphology requests - a stream of sentences with tagged words
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.MorphologyRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.MorphologyRequest)
        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (wordsBuilder_ == null) {
          words_ = java.util.Collections.emptyList();
        } else {
          words_ = null;
          wordsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest result = new edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest(this);
        int from_bitField0_ = bitField0_;
        if (wordsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            words_ = java.util.Collections.unmodifiableList(words_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.words_ = words_;
        } else {
          result.words_ = wordsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.getDefaultInstance()) return this;
        if (wordsBuilder_ == null) {
          if (!other.words_.isEmpty()) {
            if (words_.isEmpty()) {
              words_ = other.words_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureWordsIsMutable();
              words_.addAll(other.words_);
            }
            onChanged();
          }
        } else {
          if (!other.words_.isEmpty()) {
            if (wordsBuilder_.isEmpty()) {
              wordsBuilder_.dispose();
              wordsBuilder_ = null;
              words_ = other.words_;
              bitField0_ = (bitField0_ & ~0x00000001);
              wordsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getWordsFieldBuilder() : null;
            } else {
              wordsBuilder_.addAllMessages(other.words_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getWordsCount(); i++) {
          if (!getWords(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.PARSER,
                        extensionRegistry);
                if (wordsBuilder_ == null) {
                  ensureWordsIsMutable();
                  words_.add(m);
                } else {
                  wordsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord> words_ =
        java.util.Collections.emptyList();
      private void ensureWordsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          words_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord>(words_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder> wordsBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord> getWordsList() {
        if (wordsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(words_);
        } else {
          return wordsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public int getWordsCount() {
        if (wordsBuilder_ == null) {
          return words_.size();
        } else {
          return wordsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord getWords(int index) {
        if (wordsBuilder_ == null) {
          return words_.get(index);
        } else {
          return wordsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder setWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord value) {
        if (wordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWordsIsMutable();
          words_.set(index, value);
          onChanged();
        } else {
          wordsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder setWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder builderForValue) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          words_.set(index, builderForValue.build());
          onChanged();
        } else {
          wordsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder addWords(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord value) {
        if (wordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWordsIsMutable();
          words_.add(value);
          onChanged();
        } else {
          wordsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder addWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord value) {
        if (wordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWordsIsMutable();
          words_.add(index, value);
          onChanged();
        } else {
          wordsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder addWords(
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder builderForValue) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          words_.add(builderForValue.build());
          onChanged();
        } else {
          wordsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder addWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder builderForValue) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          words_.add(index, builderForValue.build());
          onChanged();
        } else {
          wordsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder addAllWords(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord> values) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, words_);
          onChanged();
        } else {
          wordsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder clearWords() {
        if (wordsBuilder_ == null) {
          words_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          wordsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public Builder removeWords(int index) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          words_.remove(index);
          onChanged();
        } else {
          wordsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder getWordsBuilder(
          int index) {
        return getWordsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder getWordsOrBuilder(
          int index) {
        if (wordsBuilder_ == null) {
          return words_.get(index);  } else {
          return wordsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder> 
           getWordsOrBuilderList() {
        if (wordsBuilder_ != null) {
          return wordsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(words_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder addWordsBuilder() {
        return getWordsFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder addWordsBuilder(
          int index) {
        return getWordsFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyRequest.TaggedWord words = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder> 
           getWordsBuilderList() {
        return getWordsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder> 
          getWordsFieldBuilder() {
        if (wordsBuilder_ == null) {
          wordsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWord.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest.TaggedWordOrBuilder>(
                  words_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          words_ = null;
        }
        return wordsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.MorphologyRequest)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.MorphologyRequest)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<MorphologyRequest>
        PARSER = new com.google.protobuf.AbstractParser<MorphologyRequest>() {
      @java.lang.Override
      public MorphologyRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<MorphologyRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MorphologyRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MorphologyResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.MorphologyResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma> 
        getWordsList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma getWords(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    int getWordsCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder> 
        getWordsOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder getWordsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Sent back from the Morphology request - the words and their tags
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.MorphologyResponse}
   */
  public static final class MorphologyResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.MorphologyResponse)
      MorphologyResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MorphologyResponse.newBuilder() to construct.
    private MorphologyResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MorphologyResponse() {
      words_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MorphologyResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.Builder.class);
    }

    public interface WordTagLemmaOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required string word = 1;</code>
       * @return Whether the word field is set.
       */
      boolean hasWord();
      /**
       * <code>required string word = 1;</code>
       * @return The word.
       */
      java.lang.String getWord();
      /**
       * <code>required string word = 1;</code>
       * @return The bytes for word.
       */
      com.google.protobuf.ByteString
          getWordBytes();

      /**
       * <code>optional string xpos = 2;</code>
       * @return Whether the xpos field is set.
       */
      boolean hasXpos();
      /**
       * <code>optional string xpos = 2;</code>
       * @return The xpos.
       */
      java.lang.String getXpos();
      /**
       * <code>optional string xpos = 2;</code>
       * @return The bytes for xpos.
       */
      com.google.protobuf.ByteString
          getXposBytes();

      /**
       * <code>required string lemma = 3;</code>
       * @return Whether the lemma field is set.
       */
      boolean hasLemma();
      /**
       * <code>required string lemma = 3;</code>
       * @return The lemma.
       */
      java.lang.String getLemma();
      /**
       * <code>required string lemma = 3;</code>
       * @return The bytes for lemma.
       */
      com.google.protobuf.ByteString
          getLemmaBytes();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma}
     */
    public static final class WordTagLemma extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma)
        WordTagLemmaOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use WordTagLemma.newBuilder() to construct.
      private WordTagLemma(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private WordTagLemma() {
        word_ = "";
        xpos_ = "";
        lemma_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new WordTagLemma();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder.class);
      }

      private int bitField0_;
      public static final int WORD_FIELD_NUMBER = 1;
      private volatile java.lang.Object word_;
      /**
       * <code>required string word = 1;</code>
       * @return Whether the word field is set.
       */
      @java.lang.Override
      public boolean hasWord() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string word = 1;</code>
       * @return The word.
       */
      @java.lang.Override
      public java.lang.String getWord() {
        java.lang.Object ref = word_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            word_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string word = 1;</code>
       * @return The bytes for word.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getWordBytes() {
        java.lang.Object ref = word_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          word_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int XPOS_FIELD_NUMBER = 2;
      private volatile java.lang.Object xpos_;
      /**
       * <code>optional string xpos = 2;</code>
       * @return Whether the xpos field is set.
       */
      @java.lang.Override
      public boolean hasXpos() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string xpos = 2;</code>
       * @return The xpos.
       */
      @java.lang.Override
      public java.lang.String getXpos() {
        java.lang.Object ref = xpos_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            xpos_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string xpos = 2;</code>
       * @return The bytes for xpos.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getXposBytes() {
        java.lang.Object ref = xpos_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xpos_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int LEMMA_FIELD_NUMBER = 3;
      private volatile java.lang.Object lemma_;
      /**
       * <code>required string lemma = 3;</code>
       * @return Whether the lemma field is set.
       */
      @java.lang.Override
      public boolean hasLemma() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required string lemma = 3;</code>
       * @return The lemma.
       */
      @java.lang.Override
      public java.lang.String getLemma() {
        java.lang.Object ref = lemma_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            lemma_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string lemma = 3;</code>
       * @return The bytes for lemma.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getLemmaBytes() {
        java.lang.Object ref = lemma_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lemma_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasWord()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasLemma()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, word_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, xpos_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, lemma_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, word_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, xpos_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, lemma_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma other = (edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma) obj;

        if (hasWord() != other.hasWord()) return false;
        if (hasWord()) {
          if (!getWord()
              .equals(other.getWord())) return false;
        }
        if (hasXpos() != other.hasXpos()) return false;
        if (hasXpos()) {
          if (!getXpos()
              .equals(other.getXpos())) return false;
        }
        if (hasLemma() != other.hasLemma()) return false;
        if (hasLemma()) {
          if (!getLemma()
              .equals(other.getLemma())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasWord()) {
          hash = (37 * hash) + WORD_FIELD_NUMBER;
          hash = (53 * hash) + getWord().hashCode();
        }
        if (hasXpos()) {
          hash = (37 * hash) + XPOS_FIELD_NUMBER;
          hash = (53 * hash) + getXpos().hashCode();
        }
        if (hasLemma()) {
          hash = (37 * hash) + LEMMA_FIELD_NUMBER;
          hash = (53 * hash) + getLemma().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma)
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          word_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          xpos_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          lemma_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma result = new edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.word_ = word_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.xpos_ = xpos_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.lemma_ = lemma_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.getDefaultInstance()) return this;
          if (other.hasWord()) {
            bitField0_ |= 0x00000001;
            word_ = other.word_;
            onChanged();
          }
          if (other.hasXpos()) {
            bitField0_ |= 0x00000002;
            xpos_ = other.xpos_;
            onChanged();
          }
          if (other.hasLemma()) {
            bitField0_ |= 0x00000004;
            lemma_ = other.lemma_;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasWord()) {
            return false;
          }
          if (!hasLemma()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  word_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  xpos_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  lemma_ = input.readBytes();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object word_ = "";
        /**
         * <code>required string word = 1;</code>
         * @return Whether the word field is set.
         */
        public boolean hasWord() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string word = 1;</code>
         * @return The word.
         */
        public java.lang.String getWord() {
          java.lang.Object ref = word_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              word_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string word = 1;</code>
         * @return The bytes for word.
         */
        public com.google.protobuf.ByteString
            getWordBytes() {
          java.lang.Object ref = word_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            word_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string word = 1;</code>
         * @param value The word to set.
         * @return This builder for chaining.
         */
        public Builder setWord(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          word_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string word = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearWord() {
          bitField0_ = (bitField0_ & ~0x00000001);
          word_ = getDefaultInstance().getWord();
          onChanged();
          return this;
        }
        /**
         * <code>required string word = 1;</code>
         * @param value The bytes for word to set.
         * @return This builder for chaining.
         */
        public Builder setWordBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          word_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object xpos_ = "";
        /**
         * <code>optional string xpos = 2;</code>
         * @return Whether the xpos field is set.
         */
        public boolean hasXpos() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @return The xpos.
         */
        public java.lang.String getXpos() {
          java.lang.Object ref = xpos_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              xpos_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @return The bytes for xpos.
         */
        public com.google.protobuf.ByteString
            getXposBytes() {
          java.lang.Object ref = xpos_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            xpos_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @param value The xpos to set.
         * @return This builder for chaining.
         */
        public Builder setXpos(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          xpos_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearXpos() {
          bitField0_ = (bitField0_ & ~0x00000002);
          xpos_ = getDefaultInstance().getXpos();
          onChanged();
          return this;
        }
        /**
         * <code>optional string xpos = 2;</code>
         * @param value The bytes for xpos to set.
         * @return This builder for chaining.
         */
        public Builder setXposBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          xpos_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object lemma_ = "";
        /**
         * <code>required string lemma = 3;</code>
         * @return Whether the lemma field is set.
         */
        public boolean hasLemma() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <code>required string lemma = 3;</code>
         * @return The lemma.
         */
        public java.lang.String getLemma() {
          java.lang.Object ref = lemma_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              lemma_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string lemma = 3;</code>
         * @return The bytes for lemma.
         */
        public com.google.protobuf.ByteString
            getLemmaBytes() {
          java.lang.Object ref = lemma_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            lemma_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string lemma = 3;</code>
         * @param value The lemma to set.
         * @return This builder for chaining.
         */
        public Builder setLemma(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          lemma_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string lemma = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearLemma() {
          bitField0_ = (bitField0_ & ~0x00000004);
          lemma_ = getDefaultInstance().getLemma();
          onChanged();
          return this;
        }
        /**
         * <code>required string lemma = 3;</code>
         * @param value The bytes for lemma to set.
         * @return This builder for chaining.
         */
        public Builder setLemmaBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          lemma_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<WordTagLemma>
          PARSER = new com.google.protobuf.AbstractParser<WordTagLemma>() {
        @java.lang.Override
        public WordTagLemma parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<WordTagLemma> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<WordTagLemma> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int WORDS_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma> words_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma> getWordsList() {
      return words_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder> 
        getWordsOrBuilderList() {
      return words_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    @java.lang.Override
    public int getWordsCount() {
      return words_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma getWords(int index) {
      return words_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder getWordsOrBuilder(
        int index) {
      return words_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getWordsCount(); i++) {
        if (!getWords(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < words_.size(); i++) {
        output.writeMessage(1, words_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < words_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, words_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse other = (edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse) obj;

      if (!getWordsList()
          .equals(other.getWordsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getWordsCount() > 0) {
        hash = (37 * hash) + WORDS_FIELD_NUMBER;
        hash = (53 * hash) + getWordsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Sent back from the Morphology request - the words and their tags
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.MorphologyResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.MorphologyResponse)
        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (wordsBuilder_ == null) {
          words_ = java.util.Collections.emptyList();
        } else {
          words_ = null;
          wordsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse result = new edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse(this);
        int from_bitField0_ = bitField0_;
        if (wordsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            words_ = java.util.Collections.unmodifiableList(words_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.words_ = words_;
        } else {
          result.words_ = wordsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.getDefaultInstance()) return this;
        if (wordsBuilder_ == null) {
          if (!other.words_.isEmpty()) {
            if (words_.isEmpty()) {
              words_ = other.words_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureWordsIsMutable();
              words_.addAll(other.words_);
            }
            onChanged();
          }
        } else {
          if (!other.words_.isEmpty()) {
            if (wordsBuilder_.isEmpty()) {
              wordsBuilder_.dispose();
              wordsBuilder_ = null;
              words_ = other.words_;
              bitField0_ = (bitField0_ & ~0x00000001);
              wordsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getWordsFieldBuilder() : null;
            } else {
              wordsBuilder_.addAllMessages(other.words_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getWordsCount(); i++) {
          if (!getWords(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.PARSER,
                        extensionRegistry);
                if (wordsBuilder_ == null) {
                  ensureWordsIsMutable();
                  words_.add(m);
                } else {
                  wordsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma> words_ =
        java.util.Collections.emptyList();
      private void ensureWordsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          words_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma>(words_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder> wordsBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma> getWordsList() {
        if (wordsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(words_);
        } else {
          return wordsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public int getWordsCount() {
        if (wordsBuilder_ == null) {
          return words_.size();
        } else {
          return wordsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma getWords(int index) {
        if (wordsBuilder_ == null) {
          return words_.get(index);
        } else {
          return wordsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder setWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma value) {
        if (wordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWordsIsMutable();
          words_.set(index, value);
          onChanged();
        } else {
          wordsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder setWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder builderForValue) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          words_.set(index, builderForValue.build());
          onChanged();
        } else {
          wordsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder addWords(edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma value) {
        if (wordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWordsIsMutable();
          words_.add(value);
          onChanged();
        } else {
          wordsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder addWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma value) {
        if (wordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWordsIsMutable();
          words_.add(index, value);
          onChanged();
        } else {
          wordsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder addWords(
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder builderForValue) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          words_.add(builderForValue.build());
          onChanged();
        } else {
          wordsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder addWords(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder builderForValue) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          words_.add(index, builderForValue.build());
          onChanged();
        } else {
          wordsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder addAllWords(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma> values) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, words_);
          onChanged();
        } else {
          wordsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder clearWords() {
        if (wordsBuilder_ == null) {
          words_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          wordsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public Builder removeWords(int index) {
        if (wordsBuilder_ == null) {
          ensureWordsIsMutable();
          words_.remove(index);
          onChanged();
        } else {
          wordsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder getWordsBuilder(
          int index) {
        return getWordsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder getWordsOrBuilder(
          int index) {
        if (wordsBuilder_ == null) {
          return words_.get(index);  } else {
          return wordsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder> 
           getWordsOrBuilderList() {
        if (wordsBuilder_ != null) {
          return wordsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(words_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder addWordsBuilder() {
        return getWordsFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder addWordsBuilder(
          int index) {
        return getWordsFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.MorphologyResponse.WordTagLemma words = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder> 
           getWordsBuilderList() {
        return getWordsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder> 
          getWordsFieldBuilder() {
        if (wordsBuilder_ == null) {
          wordsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemma.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse.WordTagLemmaOrBuilder>(
                  words_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          words_ = null;
        }
        return wordsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.MorphologyResponse)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.MorphologyResponse)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<MorphologyResponse>
        PARSER = new com.google.protobuf.AbstractParser<MorphologyResponse>() {
      @java.lang.Override
      public MorphologyResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<MorphologyResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MorphologyResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.MorphologyResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DependencyConverterRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.DependencyConverterRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> 
        getTreesList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    int getTreesCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
        getTreesOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A request for converting constituency trees to dependency graphs
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyConverterRequest}
   */
  public static final class DependencyConverterRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.DependencyConverterRequest)
      DependencyConverterRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DependencyConverterRequest.newBuilder() to construct.
    private DependencyConverterRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DependencyConverterRequest() {
      trees_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DependencyConverterRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest.Builder.class);
    }

    public static final int TREES_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> trees_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> getTreesList() {
      return trees_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
        getTreesOrBuilderList() {
      return trees_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public int getTreesCount() {
      return trees_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index) {
      return trees_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
        int index) {
      return trees_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < trees_.size(); i++) {
        output.writeMessage(1, trees_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < trees_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, trees_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest other = (edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest) obj;

      if (!getTreesList()
          .equals(other.getTreesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTreesCount() > 0) {
        hash = (37 * hash) + TREES_FIELD_NUMBER;
        hash = (53 * hash) + getTreesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A request for converting constituency trees to dependency graphs
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyConverterRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.DependencyConverterRequest)
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (treesBuilder_ == null) {
          trees_ = java.util.Collections.emptyList();
        } else {
          trees_ = null;
          treesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest result = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest(this);
        int from_bitField0_ = bitField0_;
        if (treesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            trees_ = java.util.Collections.unmodifiableList(trees_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.trees_ = trees_;
        } else {
          result.trees_ = treesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest.getDefaultInstance()) return this;
        if (treesBuilder_ == null) {
          if (!other.trees_.isEmpty()) {
            if (trees_.isEmpty()) {
              trees_ = other.trees_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTreesIsMutable();
              trees_.addAll(other.trees_);
            }
            onChanged();
          }
        } else {
          if (!other.trees_.isEmpty()) {
            if (treesBuilder_.isEmpty()) {
              treesBuilder_.dispose();
              treesBuilder_ = null;
              trees_ = other.trees_;
              bitField0_ = (bitField0_ & ~0x00000001);
              treesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTreesFieldBuilder() : null;
            } else {
              treesBuilder_.addAllMessages(other.trees_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.PARSER,
                        extensionRegistry);
                if (treesBuilder_ == null) {
                  ensureTreesIsMutable();
                  trees_.add(m);
                } else {
                  treesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> trees_ =
        java.util.Collections.emptyList();
      private void ensureTreesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          trees_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree>(trees_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> treesBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> getTreesList() {
        if (treesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(trees_);
        } else {
          return treesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public int getTreesCount() {
        if (treesBuilder_ == null) {
          return trees_.size();
        } else {
          return treesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTrees(int index) {
        if (treesBuilder_ == null) {
          return trees_.get(index);
        } else {
          return treesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder setTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.set(index, value);
          onChanged();
        } else {
          treesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder setTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.set(index, builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addTrees(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.add(value);
          onChanged();
        } else {
          treesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
        if (treesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTreesIsMutable();
          trees_.add(index, value);
          onChanged();
        } else {
          treesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addTrees(
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.add(builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addTrees(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.add(index, builderForValue.build());
          onChanged();
        } else {
          treesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder addAllTrees(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree> values) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, trees_);
          onChanged();
        } else {
          treesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder clearTrees() {
        if (treesBuilder_ == null) {
          trees_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          treesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public Builder removeTrees(int index) {
        if (treesBuilder_ == null) {
          ensureTreesIsMutable();
          trees_.remove(index);
          onChanged();
        } else {
          treesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder getTreesBuilder(
          int index) {
        return getTreesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreesOrBuilder(
          int index) {
        if (treesBuilder_ == null) {
          return trees_.get(index);  } else {
          return treesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
           getTreesOrBuilderList() {
        if (treesBuilder_ != null) {
          return treesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(trees_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder addTreesBuilder() {
        return getTreesFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder addTreesBuilder(
          int index) {
        return getTreesFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.FlattenedParseTree trees = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder> 
           getTreesBuilderList() {
        return getTreesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
          getTreesFieldBuilder() {
        if (treesBuilder_ == null) {
          treesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder>(
                  trees_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          trees_ = null;
        }
        return treesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.DependencyConverterRequest)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.DependencyConverterRequest)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<DependencyConverterRequest>
        PARSER = new com.google.protobuf.AbstractParser<DependencyConverterRequest>() {
      @java.lang.Override
      public DependencyConverterRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DependencyConverterRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DependencyConverterRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DependencyConverterResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.DependencyConverterResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion> 
        getConversionsList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion getConversions(int index);
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    int getConversionsCount();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder> 
        getConversionsOrBuilderList();
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder getConversionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * The result of using the CoreNLP dependency converter.
   * One graph per tree
   * </pre>
   *
   * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyConverterResponse}
   */
  public static final class DependencyConverterResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.DependencyConverterResponse)
      DependencyConverterResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DependencyConverterResponse.newBuilder() to construct.
    private DependencyConverterResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DependencyConverterResponse() {
      conversions_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DependencyConverterResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.Builder.class);
    }

    public interface DependencyConversionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       * @return Whether the graph field is set.
       */
      boolean hasGraph();
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       * @return The graph.
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph();
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder();

      /**
       * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
       * @return Whether the tree field is set.
       */
      boolean hasTree();
      /**
       * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
       * @return The tree.
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTree();
      /**
       * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
       */
      edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreeOrBuilder();
    }
    /**
     * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion}
     */
    public static final class DependencyConversion extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion)
        DependencyConversionOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use DependencyConversion.newBuilder() to construct.
      private DependencyConversion(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DependencyConversion() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new DependencyConversion();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder.class);
      }

      private int bitField0_;
      public static final int GRAPH_FIELD_NUMBER = 1;
      private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph graph_;
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       * @return Whether the graph field is set.
       */
      @java.lang.Override
      public boolean hasGraph() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       * @return The graph.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph() {
        return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
      }
      /**
       * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder() {
        return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
      }

      public static final int TREE_FIELD_NUMBER = 2;
      private edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree tree_;
      /**
       * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
       * @return Whether the tree field is set.
       */
      @java.lang.Override
      public boolean hasTree() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
       * @return The tree.
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTree() {
        return tree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance() : tree_;
      }
      /**
       * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
       */
      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreeOrBuilder() {
        return tree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance() : tree_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasGraph()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getGraph().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getGraph());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeMessage(2, getTree());
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getGraph());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getTree());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion)) {
          return super.equals(obj);
        }
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion other = (edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion) obj;

        if (hasGraph() != other.hasGraph()) return false;
        if (hasGraph()) {
          if (!getGraph()
              .equals(other.getGraph())) return false;
        }
        if (hasTree() != other.hasTree()) return false;
        if (hasTree()) {
          if (!getTree()
              .equals(other.getTree())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasGraph()) {
          hash = (37 * hash) + GRAPH_FIELD_NUMBER;
          hash = (53 * hash) + getGraph().hashCode();
        }
        if (hasTree()) {
          hash = (37 * hash) + TREE_FIELD_NUMBER;
          hash = (53 * hash) + getTree().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion)
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder.class);
        }

        // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getGraphFieldBuilder();
            getTreeFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (graphBuilder_ == null) {
            graph_ = null;
          } else {
            graphBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (treeBuilder_ == null) {
            tree_ = null;
          } else {
            treeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_descriptor;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion getDefaultInstanceForType() {
          return edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.getDefaultInstance();
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion build() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion buildPartial() {
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion result = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (graphBuilder_ == null) {
              result.graph_ = graph_;
            } else {
              result.graph_ = graphBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            if (treeBuilder_ == null) {
              result.tree_ = tree_;
            } else {
              result.tree_ = treeBuilder_.build();
            }
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion) {
            return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion other) {
          if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.getDefaultInstance()) return this;
          if (other.hasGraph()) {
            mergeGraph(other.getGraph());
          }
          if (other.hasTree()) {
            mergeTree(other.getTree());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasGraph()) {
            return false;
          }
          if (!getGraph().isInitialized()) {
            return false;
          }
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getGraphFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getTreeFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph graph_;
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> graphBuilder_;
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         * @return Whether the graph field is set.
         */
        public boolean hasGraph() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         * @return The graph.
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph getGraph() {
          if (graphBuilder_ == null) {
            return graph_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
          } else {
            return graphBuilder_.getMessage();
          }
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public Builder setGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
          if (graphBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            graph_ = value;
            onChanged();
          } else {
            graphBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public Builder setGraph(
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder builderForValue) {
          if (graphBuilder_ == null) {
            graph_ = builderForValue.build();
            onChanged();
          } else {
            graphBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public Builder mergeGraph(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph value) {
          if (graphBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                graph_ != null &&
                graph_ != edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance()) {
              graph_ =
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.newBuilder(graph_).mergeFrom(value).buildPartial();
            } else {
              graph_ = value;
            }
            onChanged();
          } else {
            graphBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public Builder clearGraph() {
          if (graphBuilder_ == null) {
            graph_ = null;
            onChanged();
          } else {
            graphBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder getGraphBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getGraphFieldBuilder().getBuilder();
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder getGraphOrBuilder() {
          if (graphBuilder_ != null) {
            return graphBuilder_.getMessageOrBuilder();
          } else {
            return graph_ == null ?
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.getDefaultInstance() : graph_;
          }
        }
        /**
         * <code>required .edu.stanford.nlp.pipeline.DependencyGraph graph = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder> 
            getGraphFieldBuilder() {
          if (graphBuilder_ == null) {
            graphBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraph.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyGraphOrBuilder>(
                    getGraph(),
                    getParentForChildren(),
                    isClean());
            graph_ = null;
          }
          return graphBuilder_;
        }

        private edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree tree_;
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> treeBuilder_;
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         * @return Whether the tree field is set.
         */
        public boolean hasTree() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         * @return The tree.
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree getTree() {
          if (treeBuilder_ == null) {
            return tree_ == null ? edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance() : tree_;
          } else {
            return treeBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         */
        public Builder setTree(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
          if (treeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            tree_ = value;
            onChanged();
          } else {
            treeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         */
        public Builder setTree(
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder builderForValue) {
          if (treeBuilder_ == null) {
            tree_ = builderForValue.build();
            onChanged();
          } else {
            treeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         */
        public Builder mergeTree(edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree value) {
          if (treeBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
                tree_ != null &&
                tree_ != edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance()) {
              tree_ =
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.newBuilder(tree_).mergeFrom(value).buildPartial();
            } else {
              tree_ = value;
            }
            onChanged();
          } else {
            treeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         */
        public Builder clearTree() {
          if (treeBuilder_ == null) {
            tree_ = null;
            onChanged();
          } else {
            treeBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder getTreeBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getTreeFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         */
        public edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder getTreeOrBuilder() {
          if (treeBuilder_ != null) {
            return treeBuilder_.getMessageOrBuilder();
          } else {
            return tree_ == null ?
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.getDefaultInstance() : tree_;
          }
        }
        /**
         * <code>optional .edu.stanford.nlp.pipeline.FlattenedParseTree tree = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder> 
            getTreeFieldBuilder() {
          if (treeBuilder_ == null) {
            treeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTree.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.FlattenedParseTreeOrBuilder>(
                    getTree(),
                    getParentForChildren(),
                    isClean());
            tree_ = null;
          }
          return treeBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion)
      }

      // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion)
      private static final edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion();
      }

      public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<DependencyConversion>
          PARSER = new com.google.protobuf.AbstractParser<DependencyConversion>() {
        @java.lang.Override
        public DependencyConversion parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<DependencyConversion> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<DependencyConversion> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int CONVERSIONS_FIELD_NUMBER = 1;
    private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion> conversions_;
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion> getConversionsList() {
      return conversions_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder> 
        getConversionsOrBuilderList() {
      return conversions_;
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    @java.lang.Override
    public int getConversionsCount() {
      return conversions_.size();
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion getConversions(int index) {
      return conversions_.get(index);
    }
    /**
     * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
     */
    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder getConversionsOrBuilder(
        int index) {
      return conversions_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getConversionsCount(); i++) {
        if (!getConversions(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < conversions_.size(); i++) {
        output.writeMessage(1, conversions_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < conversions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, conversions_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse)) {
        return super.equals(obj);
      }
      edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse other = (edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse) obj;

      if (!getConversionsList()
          .equals(other.getConversionsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getConversionsCount() > 0) {
        hash = (37 * hash) + CONVERSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConversionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The result of using the CoreNLP dependency converter.
     * One graph per tree
     * </pre>
     *
     * Protobuf type {@code edu.stanford.nlp.pipeline.DependencyConverterResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:edu.stanford.nlp.pipeline.DependencyConverterResponse)
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.class, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.Builder.class);
      }

      // Construct using edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (conversionsBuilder_ == null) {
          conversions_ = java.util.Collections.emptyList();
        } else {
          conversions_ = null;
          conversionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_descriptor;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse getDefaultInstanceForType() {
        return edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.getDefaultInstance();
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse build() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse buildPartial() {
        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse result = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse(this);
        int from_bitField0_ = bitField0_;
        if (conversionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            conversions_ = java.util.Collections.unmodifiableList(conversions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.conversions_ = conversions_;
        } else {
          result.conversions_ = conversionsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse) {
          return mergeFrom((edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse other) {
        if (other == edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.getDefaultInstance()) return this;
        if (conversionsBuilder_ == null) {
          if (!other.conversions_.isEmpty()) {
            if (conversions_.isEmpty()) {
              conversions_ = other.conversions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConversionsIsMutable();
              conversions_.addAll(other.conversions_);
            }
            onChanged();
          }
        } else {
          if (!other.conversions_.isEmpty()) {
            if (conversionsBuilder_.isEmpty()) {
              conversionsBuilder_.dispose();
              conversionsBuilder_ = null;
              conversions_ = other.conversions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              conversionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConversionsFieldBuilder() : null;
            } else {
              conversionsBuilder_.addAllMessages(other.conversions_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getConversionsCount(); i++) {
          if (!getConversions(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion m =
                    input.readMessage(
                        edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.PARSER,
                        extensionRegistry);
                if (conversionsBuilder_ == null) {
                  ensureConversionsIsMutable();
                  conversions_.add(m);
                } else {
                  conversionsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion> conversions_ =
        java.util.Collections.emptyList();
      private void ensureConversionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          conversions_ = new java.util.ArrayList<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion>(conversions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder> conversionsBuilder_;

      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion> getConversionsList() {
        if (conversionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conversions_);
        } else {
          return conversionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public int getConversionsCount() {
        if (conversionsBuilder_ == null) {
          return conversions_.size();
        } else {
          return conversionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion getConversions(int index) {
        if (conversionsBuilder_ == null) {
          return conversions_.get(index);
        } else {
          return conversionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder setConversions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion value) {
        if (conversionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConversionsIsMutable();
          conversions_.set(index, value);
          onChanged();
        } else {
          conversionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder setConversions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder builderForValue) {
        if (conversionsBuilder_ == null) {
          ensureConversionsIsMutable();
          conversions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conversionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder addConversions(edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion value) {
        if (conversionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConversionsIsMutable();
          conversions_.add(value);
          onChanged();
        } else {
          conversionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder addConversions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion value) {
        if (conversionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConversionsIsMutable();
          conversions_.add(index, value);
          onChanged();
        } else {
          conversionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder addConversions(
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder builderForValue) {
        if (conversionsBuilder_ == null) {
          ensureConversionsIsMutable();
          conversions_.add(builderForValue.build());
          onChanged();
        } else {
          conversionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder addConversions(
          int index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder builderForValue) {
        if (conversionsBuilder_ == null) {
          ensureConversionsIsMutable();
          conversions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conversionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder addAllConversions(
          java.lang.Iterable<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion> values) {
        if (conversionsBuilder_ == null) {
          ensureConversionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conversions_);
          onChanged();
        } else {
          conversionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder clearConversions() {
        if (conversionsBuilder_ == null) {
          conversions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          conversionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public Builder removeConversions(int index) {
        if (conversionsBuilder_ == null) {
          ensureConversionsIsMutable();
          conversions_.remove(index);
          onChanged();
        } else {
          conversionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder getConversionsBuilder(
          int index) {
        return getConversionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder getConversionsOrBuilder(
          int index) {
        if (conversionsBuilder_ == null) {
          return conversions_.get(index);  } else {
          return conversionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public java.util.List<? extends edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder> 
           getConversionsOrBuilderList() {
        if (conversionsBuilder_ != null) {
          return conversionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conversions_);
        }
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder addConversionsBuilder() {
        return getConversionsFieldBuilder().addBuilder(
            edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder addConversionsBuilder(
          int index) {
        return getConversionsFieldBuilder().addBuilder(
            index, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.getDefaultInstance());
      }
      /**
       * <code>repeated .edu.stanford.nlp.pipeline.DependencyConverterResponse.DependencyConversion conversions = 1;</code>
       */
      public java.util.List<edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder> 
           getConversionsBuilderList() {
        return getConversionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder> 
          getConversionsFieldBuilder() {
        if (conversionsBuilder_ == null) {
          conversionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversion.Builder, edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse.DependencyConversionOrBuilder>(
                  conversions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          conversions_ = null;
        }
        return conversionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:edu.stanford.nlp.pipeline.DependencyConverterResponse)
    }

    // @@protoc_insertion_point(class_scope:edu.stanford.nlp.pipeline.DependencyConverterResponse)
    private static final edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse();
    }

    public static edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<DependencyConverterResponse>
        PARSER = new com.google.protobuf.AbstractParser<DependencyConverterResponse>() {
      @java.lang.Override
      public DependencyConverterResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DependencyConverterResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DependencyConverterResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public edu.stanford.nlp.pipeline.CoreNLPProtos.DependencyConverterResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Document_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Document_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Sentence_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Sentence_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Token_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Token_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Quote_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Quote_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_ParseTree_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_ParseTree_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_DependencyGraph_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_CorefChain_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_CorefChain_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Mention_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Mention_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_IndexedWord_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_IndexedWord_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Span_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Span_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Timex_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Timex_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Entity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Entity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Relation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Relation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Operator_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Operator_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Polarity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Polarity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_NERMention_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_NERMention_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SentenceFragment_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SentenceFragment_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TokenLocation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TokenLocation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_RelationTriple_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_RelationTriple_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_MapStringString_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_MapStringString_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_MapIntString_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_MapIntString_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_Section_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_Section_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\rCoreNLP.proto\022\031edu.stanford.nlp.pipeli" +
      "ne\"\341\005\n\010Document\022\014\n\004text\030\001 \002(\t\0225\n\010sentenc" +
      "e\030\002 \003(\0132#.edu.stanford.nlp.pipeline.Sent" +
      "ence\0229\n\ncorefChain\030\003 \003(\0132%.edu.stanford." +
      "nlp.pipeline.CorefChain\022\r\n\005docID\030\004 \001(\t\022\017" +
      "\n\007docDate\030\007 \001(\t\022\020\n\010calendar\030\010 \001(\004\022;\n\021sen" +
      "tencelessToken\030\005 \003(\0132 .edu.stanford.nlp." +
      "pipeline.Token\0223\n\tcharacter\030\n \003(\0132 .edu." +
      "stanford.nlp.pipeline.Token\022/\n\005quote\030\006 \003" +
      "(\0132 .edu.stanford.nlp.pipeline.Quote\0227\n\010" +
      "mentions\030\t \003(\0132%.edu.stanford.nlp.pipeli" +
      "ne.NERMention\022#\n\033hasEntityMentionsAnnota" +
      "tion\030\r \001(\010\022\016\n\006xmlDoc\030\013 \001(\010\0224\n\010sections\030\014" +
      " \003(\0132\".edu.stanford.nlp.pipeline.Section" +
      "\022<\n\020mentionsForCoref\030\016 \003(\0132\".edu.stanfor" +
      "d.nlp.pipeline.Mention\022!\n\031hasCorefMentio" +
      "nAnnotation\030\017 \001(\010\022\032\n\022hasCorefAnnotation\030" +
      "\020 \001(\010\022+\n#corefMentionToEntityMentionMapp" +
      "ings\030\021 \003(\005\022+\n#entityMentionToCorefMentio" +
      "nMappings\030\022 \003(\005*\005\010d\020\200\002\"\363\017\n\010Sentence\022/\n\005t" +
      "oken\030\001 \003(\0132 .edu.stanford.nlp.pipeline.T" +
      "oken\022\030\n\020tokenOffsetBegin\030\002 \002(\r\022\026\n\016tokenO" +
      "ffsetEnd\030\003 \002(\r\022\025\n\rsentenceIndex\030\004 \001(\r\022\034\n" +
      "\024characterOffsetBegin\030\005 \001(\r\022\032\n\022character" +
      "OffsetEnd\030\006 \001(\r\0227\n\tparseTree\030\007 \001(\0132$.edu" +
      ".stanford.nlp.pipeline.ParseTree\022@\n\022bina" +
      "rizedParseTree\030\037 \001(\0132$.edu.stanford.nlp." +
      "pipeline.ParseTree\022@\n\022annotatedParseTree" +
      "\030  \001(\0132$.edu.stanford.nlp.pipeline.Parse" +
      "Tree\022\021\n\tsentiment\030! \001(\t\022=\n\017kBestParseTre" +
      "es\030\" \003(\0132$.edu.stanford.nlp.pipeline.Par" +
      "seTree\022E\n\021basicDependencies\030\010 \001(\0132*.edu." +
      "stanford.nlp.pipeline.DependencyGraph\022I\n" +
      "\025collapsedDependencies\030\t \001(\0132*.edu.stanf" +
      "ord.nlp.pipeline.DependencyGraph\022T\n coll" +
      "apsedCCProcessedDependencies\030\n \001(\0132*.edu" +
      ".stanford.nlp.pipeline.DependencyGraph\022K" +
      "\n\027alternativeDependencies\030\r \001(\0132*.edu.st" +
      "anford.nlp.pipeline.DependencyGraph\022?\n\014o" +
      "penieTriple\030\016 \003(\0132).edu.stanford.nlp.pip" +
      "eline.RelationTriple\022<\n\tkbpTriple\030\020 \003(\0132" +
      ").edu.stanford.nlp.pipeline.RelationTrip" +
      "le\022E\n\020entailedSentence\030\017 \003(\0132+.edu.stanf" +
      "ord.nlp.pipeline.SentenceFragment\022C\n\016ent" +
      "ailedClause\030# \003(\0132+.edu.stanford.nlp.pip" +
      "eline.SentenceFragment\022H\n\024enhancedDepend" +
      "encies\030\021 \001(\0132*.edu.stanford.nlp.pipeline" +
      ".DependencyGraph\022P\n\034enhancedPlusPlusDepe" +
      "ndencies\030\022 \001(\0132*.edu.stanford.nlp.pipeli" +
      "ne.DependencyGraph\0223\n\tcharacter\030\023 \003(\0132 ." +
      "edu.stanford.nlp.pipeline.Token\022\021\n\tparag" +
      "raph\030\013 \001(\r\022\014\n\004text\030\014 \001(\t\022\022\n\nlineNumber\030\024" +
      " \001(\r\022\036\n\026hasRelationAnnotations\0303 \001(\010\0221\n\006" +
      "entity\0304 \003(\0132!.edu.stanford.nlp.pipeline" +
      ".Entity\0225\n\010relation\0305 \003(\0132#.edu.stanford" +
      ".nlp.pipeline.Relation\022$\n\034hasNumerizedTo" +
      "kensAnnotation\0306 \001(\010\0227\n\010mentions\0307 \003(\0132%" +
      ".edu.stanford.nlp.pipeline.NERMention\022<\n" +
      "\020mentionsForCoref\0308 \003(\0132\".edu.stanford.n" +
      "lp.pipeline.Mention\022\"\n\032hasCorefMentionsA" +
      "nnotation\0309 \001(\010\022\022\n\nsentenceID\030: \001(\t\022\023\n\013s" +
      "ectionDate\030; \001(\t\022\024\n\014sectionIndex\030< \001(\r\022\023" +
      "\n\013sectionName\030= \001(\t\022\025\n\rsectionAuthor\030> \001" +
      "(\t\022\r\n\005docID\030? \001(\t\022\025\n\rsectionQuoted\030@ \001(\010" +
      "\022#\n\033hasEntityMentionsAnnotation\030A \001(\010\022\037\n" +
      "\027hasKBPTriplesAnnotation\030D \001(\010\022\"\n\032hasOpe" +
      "nieTriplesAnnotation\030E \001(\010\022\024\n\014chapterInd" +
      "ex\030B \001(\r\022\026\n\016paragraphIndex\030C \001(\r\022=\n\020enha" +
      "ncedSentence\030F \001(\0132#.edu.stanford.nlp.pi" +
      "peline.Sentence\022\017\n\007speaker\030G \001(\t\022\023\n\013spea" +
      "kerType\030H \001(\t*\005\010d\020\200\002\"\302\014\n\005Token\022\014\n\004word\030\001" +
      " \001(\t\022\013\n\003pos\030\002 \001(\t\022\r\n\005value\030\003 \001(\t\022\020\n\010cate" +
      "gory\030\004 \001(\t\022\016\n\006before\030\005 \001(\t\022\r\n\005after\030\006 \001(" +
      "\t\022\024\n\014originalText\030\007 \001(\t\022\013\n\003ner\030\010 \001(\t\022\021\n\t" +
      "coarseNER\030> \001(\t\022\026\n\016fineGrainedNER\030? \001(\t\022" +
      "\025\n\rnerLabelProbs\030B \003(\t\022\025\n\rnormalizedNER\030" +
      "\t \001(\t\022\r\n\005lemma\030\n \001(\t\022\021\n\tbeginChar\030\013 \001(\r\022" +
      "\017\n\007endChar\030\014 \001(\r\022\021\n\tutterance\030\r \001(\r\022\017\n\007s" +
      "peaker\030\016 \001(\t\022\023\n\013speakerType\030M \001(\t\022\022\n\nbeg" +
      "inIndex\030\017 \001(\r\022\020\n\010endIndex\030\020 \001(\r\022\027\n\017token" +
      "BeginIndex\030\021 \001(\r\022\025\n\rtokenEndIndex\030\022 \001(\r\022" +
      "4\n\ntimexValue\030\023 \001(\0132 .edu.stanford.nlp.p" +
      "ipeline.Timex\022\025\n\rhasXmlContext\030\025 \001(\010\022\022\n\n" +
      "xmlContext\030\026 \003(\t\022\026\n\016corefClusterID\030\027 \001(\r" +
      "\022\016\n\006answer\030\030 \001(\t\022\025\n\rheadWordIndex\030\032 \001(\r\022" +
      "5\n\010operator\030\033 \001(\0132#.edu.stanford.nlp.pip" +
      "eline.Operator\0225\n\010polarity\030\034 \001(\0132#.edu.s" +
      "tanford.nlp.pipeline.Polarity\022\024\n\014polarit" +
      "y_dir\030\' \001(\t\022-\n\004span\030\035 \001(\0132\037.edu.stanford" +
      ".nlp.pipeline.Span\022\021\n\tsentiment\030\036 \001(\t\022\026\n" +
      "\016quotationIndex\030\037 \001(\005\022B\n\016conllUFeatures\030" +
      "  \001(\0132*.edu.stanford.nlp.pipeline.MapStr" +
      "ingString\022\021\n\tcoarseTag\030! \001(\t\0228\n\017conllUTo" +
      "kenSpan\030\" \001(\0132\037.edu.stanford.nlp.pipelin" +
      "e.Span\022\022\n\nconllUMisc\030# \001(\t\022G\n\023conllUSeco" +
      "ndaryDeps\030$ \001(\0132*.edu.stanford.nlp.pipel" +
      "ine.MapStringString\022\027\n\017wikipediaEntity\030%" +
      " \001(\t\022\021\n\tisNewline\030& \001(\010\022\016\n\006gender\0303 \001(\t\022" +
      "\020\n\010trueCase\0304 \001(\t\022\024\n\014trueCaseText\0305 \001(\t\022" +
      "\023\n\013chineseChar\0306 \001(\t\022\022\n\nchineseSeg\0307 \001(\t" +
      "\022\026\n\016chineseXMLChar\030< \001(\t\022\021\n\tarabicSeg\030L " +
      "\001(\t\022\023\n\013sectionName\0308 \001(\t\022\025\n\rsectionAutho" +
      "r\0309 \001(\t\022\023\n\013sectionDate\030: \001(\t\022\027\n\017sectionE" +
      "ndLabel\030; \001(\t\022\016\n\006parent\030= \001(\t\022\031\n\021corefMe" +
      "ntionIndex\030@ \003(\r\022\032\n\022entityMentionIndex\030A" +
      " \001(\r\022\r\n\005isMWT\030C \001(\010\022\022\n\nisFirstMWT\030D \001(\010\022" +
      "\017\n\007mwtText\030E \001(\t\022\024\n\014numericValue\030F \001(\004\022\023" +
      "\n\013numericType\030G \001(\t\022\035\n\025numericCompositeV" +
      "alue\030H \001(\004\022\034\n\024numericCompositeType\030I \001(\t" +
      "\022\034\n\024codepointOffsetBegin\030J \001(\r\022\032\n\022codepo" +
      "intOffsetEnd\030K \001(\r*\005\010d\020\200\002\"\344\003\n\005Quote\022\014\n\004t" +
      "ext\030\001 \001(\t\022\r\n\005begin\030\002 \001(\r\022\013\n\003end\030\003 \001(\r\022\025\n" +
      "\rsentenceBegin\030\005 \001(\r\022\023\n\013sentenceEnd\030\006 \001(" +
      "\r\022\022\n\ntokenBegin\030\007 \001(\r\022\020\n\010tokenEnd\030\010 \001(\r\022" +
      "\r\n\005docid\030\t \001(\t\022\r\n\005index\030\n \001(\r\022\016\n\006author\030" +
      "\013 \001(\t\022\017\n\007mention\030\014 \001(\t\022\024\n\014mentionBegin\030\r" +
      " \001(\r\022\022\n\nmentionEnd\030\016 \001(\r\022\023\n\013mentionType\030" +
      "\017 \001(\t\022\024\n\014mentionSieve\030\020 \001(\t\022\017\n\007speaker\030\021" +
      " \001(\t\022\024\n\014speakerSieve\030\022 \001(\t\022\030\n\020canonicalM" +
      "ention\030\023 \001(\t\022\035\n\025canonicalMentionBegin\030\024 " +
      "\001(\r\022\033\n\023canonicalMentionEnd\030\025 \001(\r\022N\n\032attr" +
      "ibutionDependencyGraph\030\026 \001(\0132*.edu.stanf" +
      "ord.nlp.pipeline.DependencyGraph\"\307\001\n\tPar" +
      "seTree\0223\n\005child\030\001 \003(\0132$.edu.stanford.nlp" +
      ".pipeline.ParseTree\022\r\n\005value\030\002 \001(\t\022\027\n\017yi" +
      "eldBeginIndex\030\003 \001(\r\022\025\n\ryieldEndIndex\030\004 \001" +
      "(\r\022\r\n\005score\030\005 \001(\001\0227\n\tsentiment\030\006 \001(\0162$.e" +
      "du.stanford.nlp.pipeline.Sentiment\"\307\003\n\017D" +
      "ependencyGraph\022=\n\004node\030\001 \003(\0132/.edu.stanf" +
      "ord.nlp.pipeline.DependencyGraph.Node\022=\n" +
      "\004edge\030\002 \003(\0132/.edu.stanford.nlp.pipeline." +
      "DependencyGraph.Edge\022\020\n\004root\030\003 \003(\rB\002\020\001\022/" +
      "\n\005token\030\004 \003(\0132 .edu.stanford.nlp.pipelin" +
      "e.Token\032D\n\004Node\022\025\n\rsentenceIndex\030\001 \002(\r\022\r" +
      "\n\005index\030\002 \002(\r\022\026\n\016copyAnnotation\030\003 \001(\r\032\254\001" +
      "\n\004Edge\022\016\n\006source\030\001 \002(\r\022\016\n\006target\030\002 \002(\r\022\013" +
      "\n\003dep\030\003 \001(\t\022\017\n\007isExtra\030\004 \001(\010\022\022\n\nsourceCo" +
      "py\030\005 \001(\r\022\022\n\ntargetCopy\030\006 \001(\r\022>\n\010language" +
      "\030\007 \001(\0162#.edu.stanford.nlp.pipeline.Langu" +
      "age:\007Unknown\"\306\002\n\nCorefChain\022\017\n\007chainID\030\001" +
      " \002(\005\022C\n\007mention\030\002 \003(\01322.edu.stanford.nlp" +
      ".pipeline.CorefChain.CorefMention\022\026\n\016rep" +
      "resentative\030\003 \002(\r\032\311\001\n\014CorefMention\022\021\n\tme" +
      "ntionID\030\001 \001(\005\022\023\n\013mentionType\030\002 \001(\t\022\016\n\006nu" +
      "mber\030\003 \001(\t\022\016\n\006gender\030\004 \001(\t\022\017\n\007animacy\030\005 " +
      "\001(\t\022\022\n\nbeginIndex\030\006 \001(\r\022\020\n\010endIndex\030\007 \001(" +
      "\r\022\021\n\theadIndex\030\t \001(\r\022\025\n\rsentenceIndex\030\n " +
      "\001(\r\022\020\n\010position\030\013 \001(\r\"\357\010\n\007Mention\022\021\n\tmen" +
      "tionID\030\001 \001(\005\022\023\n\013mentionType\030\002 \001(\t\022\016\n\006num" +
      "ber\030\003 \001(\t\022\016\n\006gender\030\004 \001(\t\022\017\n\007animacy\030\005 \001" +
      "(\t\022\016\n\006person\030\006 \001(\t\022\022\n\nstartIndex\030\007 \001(\r\022\020" +
      "\n\010endIndex\030\t \001(\r\022\021\n\theadIndex\030\n \001(\005\022\022\n\nh" +
      "eadString\030\013 \001(\t\022\021\n\tnerString\030\014 \001(\t\022\023\n\013or" +
      "iginalRef\030\r \001(\005\022\032\n\022goldCorefClusterID\030\016 " +
      "\001(\005\022\026\n\016corefClusterID\030\017 \001(\005\022\022\n\nmentionNu" +
      "m\030\020 \001(\005\022\017\n\007sentNum\030\021 \001(\005\022\r\n\005utter\030\022 \001(\005\022" +
      "\021\n\tparagraph\030\023 \001(\005\022\021\n\tisSubject\030\024 \001(\010\022\026\n" +
      "\016isDirectObject\030\025 \001(\010\022\030\n\020isIndirectObjec" +
      "t\030\026 \001(\010\022\033\n\023isPrepositionObject\030\027 \001(\010\022\017\n\007" +
      "hasTwin\030\030 \001(\010\022\017\n\007generic\030\031 \001(\010\022\023\n\013isSing" +
      "leton\030\032 \001(\010\022\032\n\022hasBasicDependency\030\033 \001(\010\022" +
      "\035\n\025hasEnhancedDependency\030\034 \001(\010\022\033\n\023hasCon" +
      "textParseTree\030\035 \001(\010\022?\n\017headIndexedWord\030\036" +
      " \001(\0132&.edu.stanford.nlp.pipeline.Indexed" +
      "Word\022=\n\rdependingVerb\030\037 \001(\0132&.edu.stanfo" +
      "rd.nlp.pipeline.IndexedWord\0228\n\010headWord\030" +
      "  \001(\0132&.edu.stanford.nlp.pipeline.Indexe" +
      "dWord\022;\n\013speakerInfo\030! \001(\0132&.edu.stanfor" +
      "d.nlp.pipeline.SpeakerInfo\022=\n\rsentenceWo" +
      "rds\0302 \003(\0132&.edu.stanford.nlp.pipeline.In" +
      "dexedWord\022<\n\014originalSpan\0303 \003(\0132&.edu.st" +
      "anford.nlp.pipeline.IndexedWord\022\022\n\ndepen" +
      "dents\0304 \003(\t\022\031\n\021preprocessedTerms\0305 \003(\t\022\023" +
      "\n\013appositions\0306 \003(\005\022\034\n\024predicateNominati" +
      "ves\0307 \003(\005\022\030\n\020relativePronouns\0308 \003(\005\022\023\n\013l" +
      "istMembers\0309 \003(\005\022\025\n\rbelongToLists\030: \003(\005\"" +
      "X\n\013IndexedWord\022\023\n\013sentenceNum\030\001 \001(\005\022\022\n\nt" +
      "okenIndex\030\002 \001(\005\022\r\n\005docID\030\003 \001(\005\022\021\n\tcopyCo" +
      "unt\030\004 \001(\r\"4\n\013SpeakerInfo\022\023\n\013speakerName\030" +
      "\001 \001(\t\022\020\n\010mentions\030\002 \003(\005\"\"\n\004Span\022\r\n\005begin" +
      "\030\001 \002(\r\022\013\n\003end\030\002 \002(\r\"w\n\005Timex\022\r\n\005value\030\001 " +
      "\001(\t\022\020\n\010altValue\030\002 \001(\t\022\014\n\004text\030\003 \001(\t\022\014\n\004t" +
      "ype\030\004 \001(\t\022\013\n\003tid\030\005 \001(\t\022\022\n\nbeginPoint\030\006 \001" +
      "(\r\022\020\n\010endPoint\030\007 \001(\r\"\333\001\n\006Entity\022\021\n\theadS" +
      "tart\030\006 \001(\r\022\017\n\007headEnd\030\007 \001(\r\022\023\n\013mentionTy" +
      "pe\030\010 \001(\t\022\026\n\016normalizedName\030\t \001(\t\022\026\n\016head" +
      "TokenIndex\030\n \001(\r\022\017\n\007corefID\030\013 \001(\t\022\020\n\010obj" +
      "ectID\030\001 \001(\t\022\023\n\013extentStart\030\002 \001(\r\022\021\n\texte" +
      "ntEnd\030\003 \001(\r\022\014\n\004type\030\004 \001(\t\022\017\n\007subtype\030\005 \001" +
      "(\t\"\267\001\n\010Relation\022\017\n\007argName\030\006 \003(\t\022.\n\003arg\030" +
      "\007 \003(\0132!.edu.stanford.nlp.pipeline.Entity" +
      "\022\021\n\tsignature\030\010 \001(\t\022\020\n\010objectID\030\001 \001(\t\022\023\n" +
      "\013extentStart\030\002 \001(\r\022\021\n\textentEnd\030\003 \001(\r\022\014\n" +
      "\004type\030\004 \001(\t\022\017\n\007subtype\030\005 \001(\t\"\262\001\n\010Operato" +
      "r\022\014\n\004name\030\001 \002(\t\022\033\n\023quantifierSpanBegin\030\002" +
      " \002(\005\022\031\n\021quantifierSpanEnd\030\003 \002(\005\022\030\n\020subje" +
      "ctSpanBegin\030\004 \002(\005\022\026\n\016subjectSpanEnd\030\005 \002(" +
      "\005\022\027\n\017objectSpanBegin\030\006 \002(\005\022\025\n\robjectSpan" +
      "End\030\007 \002(\005\"\251\004\n\010Polarity\022K\n\022projectEquival" +
      "ence\030\001 \002(\0162/.edu.stanford.nlp.pipeline.N" +
      "aturalLogicRelation\022Q\n\030projectForwardEnt" +
      "ailment\030\002 \002(\0162/.edu.stanford.nlp.pipelin" +
      "e.NaturalLogicRelation\022Q\n\030projectReverse" +
      "Entailment\030\003 \002(\0162/.edu.stanford.nlp.pipe" +
      "line.NaturalLogicRelation\022H\n\017projectNega" +
      "tion\030\004 \002(\0162/.edu.stanford.nlp.pipeline.N" +
      "aturalLogicRelation\022K\n\022projectAlternatio" +
      "n\030\005 \002(\0162/.edu.stanford.nlp.pipeline.Natu" +
      "ralLogicRelation\022E\n\014projectCover\030\006 \002(\0162/" +
      ".edu.stanford.nlp.pipeline.NaturalLogicR" +
      "elation\022L\n\023projectIndependence\030\007 \002(\0162/.e" +
      "du.stanford.nlp.pipeline.NaturalLogicRel" +
      "ation\"\335\002\n\nNERMention\022\025\n\rsentenceIndex\030\001 " +
      "\001(\r\022%\n\035tokenStartInSentenceInclusive\030\002 \002" +
      "(\r\022#\n\033tokenEndInSentenceExclusive\030\003 \002(\r\022" +
      "\013\n\003ner\030\004 \002(\t\022\025\n\rnormalizedNER\030\005 \001(\t\022\022\n\ne" +
      "ntityType\030\006 \001(\t\022/\n\005timex\030\007 \001(\0132 .edu.sta" +
      "nford.nlp.pipeline.Timex\022\027\n\017wikipediaEnt" +
      "ity\030\010 \001(\t\022\016\n\006gender\030\t \001(\t\022\032\n\022entityMenti" +
      "onIndex\030\n \001(\r\022#\n\033canonicalEntityMentionI" +
      "ndex\030\013 \001(\r\022\031\n\021entityMentionText\030\014 \001(\t\"Y\n" +
      "\020SentenceFragment\022\022\n\ntokenIndex\030\001 \003(\r\022\014\n" +
      "\004root\030\002 \001(\r\022\024\n\014assumedTruth\030\003 \001(\010\022\r\n\005sco" +
      "re\030\004 \001(\001\":\n\rTokenLocation\022\025\n\rsentenceInd" +
      "ex\030\001 \001(\r\022\022\n\ntokenIndex\030\002 \001(\r\"\232\003\n\016Relatio" +
      "nTriple\022\017\n\007subject\030\001 \001(\t\022\020\n\010relation\030\002 \001" +
      "(\t\022\016\n\006object\030\003 \001(\t\022\022\n\nconfidence\030\004 \001(\001\022?" +
      "\n\rsubjectTokens\030\r \003(\0132(.edu.stanford.nlp" +
      ".pipeline.TokenLocation\022@\n\016relationToken" +
      "s\030\016 \003(\0132(.edu.stanford.nlp.pipeline.Toke" +
      "nLocation\022>\n\014objectTokens\030\017 \003(\0132(.edu.st" +
      "anford.nlp.pipeline.TokenLocation\0228\n\004tre" +
      "e\030\010 \001(\0132*.edu.stanford.nlp.pipeline.Depe" +
      "ndencyGraph\022\016\n\006istmod\030\t \001(\010\022\020\n\010prefixBe\030" +
      "\n \001(\010\022\020\n\010suffixBe\030\013 \001(\010\022\020\n\010suffixOf\030\014 \001(" +
      "\010\"-\n\017MapStringString\022\013\n\003key\030\001 \003(\t\022\r\n\005val" +
      "ue\030\002 \003(\t\"*\n\014MapIntString\022\013\n\003key\030\001 \003(\r\022\r\n" +
      "\005value\030\002 \003(\t\"\374\001\n\007Section\022\021\n\tcharBegin\030\001 " +
      "\002(\r\022\017\n\007charEnd\030\002 \002(\r\022\016\n\006author\030\003 \001(\t\022\027\n\017" +
      "sentenceIndexes\030\004 \003(\r\022\020\n\010datetime\030\005 \001(\t\022" +
      "0\n\006quotes\030\006 \003(\0132 .edu.stanford.nlp.pipel" +
      "ine.Quote\022\027\n\017authorCharBegin\030\007 \001(\r\022\025\n\rau" +
      "thorCharEnd\030\010 \001(\r\0220\n\006xmlTag\030\t \002(\0132 .edu." +
      "stanford.nlp.pipeline.Token\"\344\001\n\016SemgrexR" +
      "equest\022\017\n\007semgrex\030\001 \003(\t\022E\n\005query\030\002 \003(\01326" +
      ".edu.stanford.nlp.pipeline.SemgrexReques" +
      "t.Dependencies\032z\n\014Dependencies\022/\n\005token\030" +
      "\001 \003(\0132 .edu.stanford.nlp.pipeline.Token\022" +
      "9\n\005graph\030\002 \002(\0132*.edu.stanford.nlp.pipeli" +
      "ne.DependencyGraph\"\373\005\n\017SemgrexResponse\022F" +
      "\n\006result\030\001 \003(\01326.edu.stanford.nlp.pipeli" +
      "ne.SemgrexResponse.GraphResult\032-\n\tNamedN" +
      "ode\022\014\n\004name\030\001 \002(\t\022\022\n\nmatchIndex\030\002 \002(\005\032+\n" +
      "\rNamedRelation\022\014\n\004name\030\001 \002(\t\022\014\n\004reln\030\002 \002" +
      "(\t\032\200\001\n\tNamedEdge\022\014\n\004name\030\001 \002(\t\022\016\n\006source" +
      "\030\002 \002(\005\022\016\n\006target\030\003 \002(\005\022\014\n\004reln\030\004 \001(\t\022\017\n\007" +
      "isExtra\030\005 \001(\010\022\022\n\nsourceCopy\030\006 \001(\r\022\022\n\ntar" +
      "getCopy\030\007 \001(\r\032\225\002\n\005Match\022\022\n\nmatchIndex\030\001 " +
      "\002(\005\022B\n\004node\030\002 \003(\01324.edu.stanford.nlp.pip" +
      "eline.SemgrexResponse.NamedNode\022F\n\004reln\030" +
      "\003 \003(\01328.edu.stanford.nlp.pipeline.Semgre" +
      "xResponse.NamedRelation\022B\n\004edge\030\006 \003(\01324." +
      "edu.stanford.nlp.pipeline.SemgrexRespons" +
      "e.NamedEdge\022\022\n\ngraphIndex\030\004 \001(\005\022\024\n\014semgr" +
      "exIndex\030\005 \001(\005\032P\n\rSemgrexResult\022?\n\005match\030" +
      "\001 \003(\01320.edu.stanford.nlp.pipeline.Semgre" +
      "xResponse.Match\032W\n\013GraphResult\022H\n\006result" +
      "\030\001 \003(\01328.edu.stanford.nlp.pipeline.Semgr" +
      "exResponse.SemgrexResult\"\360\001\n\017SsurgeonReq" +
      "uest\022E\n\010ssurgeon\030\001 \003(\01323.edu.stanford.nl" +
      "p.pipeline.SsurgeonRequest.Ssurgeon\0229\n\005g" +
      "raph\030\002 \003(\0132*.edu.stanford.nlp.pipeline.D" +
      "ependencyGraph\032[\n\010Ssurgeon\022\017\n\007semgrex\030\001 " +
      "\001(\t\022\021\n\toperation\030\002 \003(\t\022\n\n\002id\030\003 \001(\t\022\r\n\005no" +
      "tes\030\004 \001(\t\022\020\n\010language\030\005 \001(\t\"\274\001\n\020Ssurgeon" +
      "Response\022J\n\006result\030\001 \003(\0132:.edu.stanford." +
      "nlp.pipeline.SsurgeonResponse.SsurgeonRe" +
      "sult\032\\\n\016SsurgeonResult\0229\n\005graph\030\001 \001(\0132*." +
      "edu.stanford.nlp.pipeline.DependencyGrap" +
      "h\022\017\n\007changed\030\002 \001(\010\"W\n\022TokensRegexRequest" +
      "\0220\n\003doc\030\001 \002(\0132#.edu.stanford.nlp.pipelin" +
      "e.Document\022\017\n\007pattern\030\002 \003(\t\"\247\003\n\023TokensRe" +
      "gexResponse\022J\n\005match\030\001 \003(\0132;.edu.stanfor" +
      "d.nlp.pipeline.TokensRegexResponse.Patte" +
      "rnMatch\0329\n\rMatchLocation\022\014\n\004text\030\001 \001(\t\022\r" +
      "\n\005begin\030\002 \001(\005\022\013\n\003end\030\003 \001(\005\032\263\001\n\005Match\022\020\n\010" +
      "sentence\030\001 \002(\005\022K\n\005match\030\002 \002(\0132<.edu.stan" +
      "ford.nlp.pipeline.TokensRegexResponse.Ma" +
      "tchLocation\022K\n\005group\030\003 \003(\0132<.edu.stanfor" +
      "d.nlp.pipeline.TokensRegexResponse.Match" +
      "Location\032S\n\014PatternMatch\022C\n\005match\030\001 \003(\0132" +
      "4.edu.stanford.nlp.pipeline.TokensRegexR" +
      "esponse.Match\"\256\001\n\031DependencyEnhancerRequ" +
      "est\0225\n\010document\030\001 \002(\0132#.edu.stanford.nlp" +
      ".pipeline.Document\0227\n\010language\030\002 \001(\0162#.e" +
      "du.stanford.nlp.pipeline.LanguageH\000\022\032\n\020r" +
      "elativePronouns\030\003 \001(\tH\000B\005\n\003ref\"\264\001\n\022Flatt" +
      "enedParseTree\022A\n\005nodes\030\001 \003(\01322.edu.stanf" +
      "ord.nlp.pipeline.FlattenedParseTree.Node" +
      "\032[\n\004Node\022\022\n\010openNode\030\001 \001(\010H\000\022\023\n\tcloseNod" +
      "e\030\002 \001(\010H\000\022\017\n\005value\030\003 \001(\tH\000\022\r\n\005score\030\004 \001(" +
      "\001B\n\n\010contents\"\366\001\n\025EvaluateParserRequest\022" +
      "N\n\010treebank\030\001 \003(\0132<.edu.stanford.nlp.pip" +
      "eline.EvaluateParserRequest.ParseResult\032" +
      "\214\001\n\013ParseResult\022;\n\004gold\030\001 \002(\0132-.edu.stan" +
      "ford.nlp.pipeline.FlattenedParseTree\022@\n\t" +
      "predicted\030\002 \003(\0132-.edu.stanford.nlp.pipel" +
      "ine.FlattenedParseTree\"5\n\026EvaluateParser" +
      "Response\022\n\n\002f1\030\001 \002(\001\022\017\n\007kbestF1\030\002 \001(\001\"\310\001" +
      "\n\017TsurgeonRequest\022H\n\noperations\030\001 \003(\01324." +
      "edu.stanford.nlp.pipeline.TsurgeonReques" +
      "t.Operation\022<\n\005trees\030\002 \003(\0132-.edu.stanfor" +
      "d.nlp.pipeline.FlattenedParseTree\032-\n\tOpe" +
      "ration\022\016\n\006tregex\030\001 \002(\t\022\020\n\010tsurgeon\030\002 \003(\t" +
      "\"P\n\020TsurgeonResponse\022<\n\005trees\030\001 \003(\0132-.ed" +
      "u.stanford.nlp.pipeline.FlattenedParseTr" +
      "ee\"\205\001\n\021MorphologyRequest\022F\n\005words\030\001 \003(\0132" +
      "7.edu.stanford.nlp.pipeline.MorphologyRe" +
      "quest.TaggedWord\032(\n\nTaggedWord\022\014\n\004word\030\001" +
      " \002(\t\022\014\n\004xpos\030\002 \001(\t\"\232\001\n\022MorphologyRespons" +
      "e\022I\n\005words\030\001 \003(\0132:.edu.stanford.nlp.pipe" +
      "line.MorphologyResponse.WordTagLemma\0329\n\014" +
      "WordTagLemma\022\014\n\004word\030\001 \002(\t\022\014\n\004xpos\030\002 \001(\t" +
      "\022\r\n\005lemma\030\003 \002(\t\"Z\n\032DependencyConverterRe" +
      "quest\022<\n\005trees\030\001 \003(\0132-.edu.stanford.nlp." +
      "pipeline.FlattenedParseTree\"\220\002\n\033Dependen" +
      "cyConverterResponse\022`\n\013conversions\030\001 \003(\013" +
      "2K.edu.stanford.nlp.pipeline.DependencyC" +
      "onverterResponse.DependencyConversion\032\216\001" +
      "\n\024DependencyConversion\0229\n\005graph\030\001 \002(\0132*." +
      "edu.stanford.nlp.pipeline.DependencyGrap" +
      "h\022;\n\004tree\030\002 \001(\0132-.edu.stanford.nlp.pipel" +
      "ine.FlattenedParseTree*\243\001\n\010Language\022\013\n\007U" +
      "nknown\020\000\022\007\n\003Any\020\001\022\n\n\006Arabic\020\002\022\013\n\007Chinese" +
      "\020\003\022\013\n\007English\020\004\022\n\n\006German\020\005\022\n\n\006French\020\006\022" +
      "\n\n\006Hebrew\020\007\022\013\n\007Spanish\020\010\022\024\n\020UniversalEng" +
      "lish\020\t\022\024\n\020UniversalChinese\020\n*h\n\tSentimen" +
      "t\022\023\n\017STRONG_NEGATIVE\020\000\022\021\n\rWEAK_NEGATIVE\020" +
      "\001\022\013\n\007NEUTRAL\020\002\022\021\n\rWEAK_POSITIVE\020\003\022\023\n\017STR" +
      "ONG_POSITIVE\020\004*\223\001\n\024NaturalLogicRelation\022" +
      "\017\n\013EQUIVALENCE\020\000\022\026\n\022FORWARD_ENTAILMENT\020\001" +
      "\022\026\n\022REVERSE_ENTAILMENT\020\002\022\014\n\010NEGATION\020\003\022\017" +
      "\n\013ALTERNATION\020\004\022\t\n\005COVER\020\005\022\020\n\014INDEPENDEN" +
      "CE\020\006B*\n\031edu.stanford.nlp.pipelineB\rCoreN" +
      "LPProtos"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_edu_stanford_nlp_pipeline_Document_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_Document_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Document_descriptor,
        new java.lang.String[] { "Text", "Sentence", "CorefChain", "DocID", "DocDate", "Calendar", "SentencelessToken", "Character", "Quote", "Mentions", "HasEntityMentionsAnnotation", "XmlDoc", "Sections", "MentionsForCoref", "HasCorefMentionAnnotation", "HasCorefAnnotation", "CorefMentionToEntityMentionMappings", "EntityMentionToCorefMentionMappings", });
    internal_static_edu_stanford_nlp_pipeline_Sentence_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_edu_stanford_nlp_pipeline_Sentence_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Sentence_descriptor,
        new java.lang.String[] { "Token", "TokenOffsetBegin", "TokenOffsetEnd", "SentenceIndex", "CharacterOffsetBegin", "CharacterOffsetEnd", "ParseTree", "BinarizedParseTree", "AnnotatedParseTree", "Sentiment", "KBestParseTrees", "BasicDependencies", "CollapsedDependencies", "CollapsedCCProcessedDependencies", "AlternativeDependencies", "OpenieTriple", "KbpTriple", "EntailedSentence", "EntailedClause", "EnhancedDependencies", "EnhancedPlusPlusDependencies", "Character", "Paragraph", "Text", "LineNumber", "HasRelationAnnotations", "Entity", "Relation", "HasNumerizedTokensAnnotation", "Mentions", "MentionsForCoref", "HasCorefMentionsAnnotation", "SentenceID", "SectionDate", "SectionIndex", "SectionName", "SectionAuthor", "DocID", "SectionQuoted", "HasEntityMentionsAnnotation", "HasKBPTriplesAnnotation", "HasOpenieTriplesAnnotation", "ChapterIndex", "ParagraphIndex", "EnhancedSentence", "Speaker", "SpeakerType", });
    internal_static_edu_stanford_nlp_pipeline_Token_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_edu_stanford_nlp_pipeline_Token_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Token_descriptor,
        new java.lang.String[] { "Word", "Pos", "Value", "Category", "Before", "After", "OriginalText", "Ner", "CoarseNER", "FineGrainedNER", "NerLabelProbs", "NormalizedNER", "Lemma", "BeginChar", "EndChar", "Utterance", "Speaker", "SpeakerType", "BeginIndex", "EndIndex", "TokenBeginIndex", "TokenEndIndex", "TimexValue", "HasXmlContext", "XmlContext", "CorefClusterID", "Answer", "HeadWordIndex", "Operator", "Polarity", "PolarityDir", "Span", "Sentiment", "QuotationIndex", "ConllUFeatures", "CoarseTag", "ConllUTokenSpan", "ConllUMisc", "ConllUSecondaryDeps", "WikipediaEntity", "IsNewline", "Gender", "TrueCase", "TrueCaseText", "ChineseChar", "ChineseSeg", "ChineseXMLChar", "ArabicSeg", "SectionName", "SectionAuthor", "SectionDate", "SectionEndLabel", "Parent", "CorefMentionIndex", "EntityMentionIndex", "IsMWT", "IsFirstMWT", "MwtText", "NumericValue", "NumericType", "NumericCompositeValue", "NumericCompositeType", "CodepointOffsetBegin", "CodepointOffsetEnd", });
    internal_static_edu_stanford_nlp_pipeline_Quote_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_edu_stanford_nlp_pipeline_Quote_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Quote_descriptor,
        new java.lang.String[] { "Text", "Begin", "End", "SentenceBegin", "SentenceEnd", "TokenBegin", "TokenEnd", "Docid", "Index", "Author", "Mention", "MentionBegin", "MentionEnd", "MentionType", "MentionSieve", "Speaker", "SpeakerSieve", "CanonicalMention", "CanonicalMentionBegin", "CanonicalMentionEnd", "AttributionDependencyGraph", });
    internal_static_edu_stanford_nlp_pipeline_ParseTree_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_edu_stanford_nlp_pipeline_ParseTree_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_ParseTree_descriptor,
        new java.lang.String[] { "Child", "Value", "YieldBeginIndex", "YieldEndIndex", "Score", "Sentiment", });
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_DependencyGraph_descriptor,
        new java.lang.String[] { "Node", "Edge", "Root", "Token", });
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_descriptor =
      internal_static_edu_stanford_nlp_pipeline_DependencyGraph_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Node_descriptor,
        new java.lang.String[] { "SentenceIndex", "Index", "CopyAnnotation", });
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_descriptor =
      internal_static_edu_stanford_nlp_pipeline_DependencyGraph_descriptor.getNestedTypes().get(1);
    internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_DependencyGraph_Edge_descriptor,
        new java.lang.String[] { "Source", "Target", "Dep", "IsExtra", "SourceCopy", "TargetCopy", "Language", });
    internal_static_edu_stanford_nlp_pipeline_CorefChain_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_edu_stanford_nlp_pipeline_CorefChain_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_CorefChain_descriptor,
        new java.lang.String[] { "ChainID", "Mention", "Representative", });
    internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_descriptor =
      internal_static_edu_stanford_nlp_pipeline_CorefChain_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_CorefChain_CorefMention_descriptor,
        new java.lang.String[] { "MentionID", "MentionType", "Number", "Gender", "Animacy", "BeginIndex", "EndIndex", "HeadIndex", "SentenceIndex", "Position", });
    internal_static_edu_stanford_nlp_pipeline_Mention_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_edu_stanford_nlp_pipeline_Mention_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Mention_descriptor,
        new java.lang.String[] { "MentionID", "MentionType", "Number", "Gender", "Animacy", "Person", "StartIndex", "EndIndex", "HeadIndex", "HeadString", "NerString", "OriginalRef", "GoldCorefClusterID", "CorefClusterID", "MentionNum", "SentNum", "Utter", "Paragraph", "IsSubject", "IsDirectObject", "IsIndirectObject", "IsPrepositionObject", "HasTwin", "Generic", "IsSingleton", "HasBasicDependency", "HasEnhancedDependency", "HasContextParseTree", "HeadIndexedWord", "DependingVerb", "HeadWord", "SpeakerInfo", "SentenceWords", "OriginalSpan", "Dependents", "PreprocessedTerms", "Appositions", "PredicateNominatives", "RelativePronouns", "ListMembers", "BelongToLists", });
    internal_static_edu_stanford_nlp_pipeline_IndexedWord_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_edu_stanford_nlp_pipeline_IndexedWord_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_IndexedWord_descriptor,
        new java.lang.String[] { "SentenceNum", "TokenIndex", "DocID", "CopyCount", });
    internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SpeakerInfo_descriptor,
        new java.lang.String[] { "SpeakerName", "Mentions", });
    internal_static_edu_stanford_nlp_pipeline_Span_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_edu_stanford_nlp_pipeline_Span_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Span_descriptor,
        new java.lang.String[] { "Begin", "End", });
    internal_static_edu_stanford_nlp_pipeline_Timex_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_edu_stanford_nlp_pipeline_Timex_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Timex_descriptor,
        new java.lang.String[] { "Value", "AltValue", "Text", "Type", "Tid", "BeginPoint", "EndPoint", });
    internal_static_edu_stanford_nlp_pipeline_Entity_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_edu_stanford_nlp_pipeline_Entity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Entity_descriptor,
        new java.lang.String[] { "HeadStart", "HeadEnd", "MentionType", "NormalizedName", "HeadTokenIndex", "CorefID", "ObjectID", "ExtentStart", "ExtentEnd", "Type", "Subtype", });
    internal_static_edu_stanford_nlp_pipeline_Relation_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_edu_stanford_nlp_pipeline_Relation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Relation_descriptor,
        new java.lang.String[] { "ArgName", "Arg", "Signature", "ObjectID", "ExtentStart", "ExtentEnd", "Type", "Subtype", });
    internal_static_edu_stanford_nlp_pipeline_Operator_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_edu_stanford_nlp_pipeline_Operator_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Operator_descriptor,
        new java.lang.String[] { "Name", "QuantifierSpanBegin", "QuantifierSpanEnd", "SubjectSpanBegin", "SubjectSpanEnd", "ObjectSpanBegin", "ObjectSpanEnd", });
    internal_static_edu_stanford_nlp_pipeline_Polarity_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_edu_stanford_nlp_pipeline_Polarity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Polarity_descriptor,
        new java.lang.String[] { "ProjectEquivalence", "ProjectForwardEntailment", "ProjectReverseEntailment", "ProjectNegation", "ProjectAlternation", "ProjectCover", "ProjectIndependence", });
    internal_static_edu_stanford_nlp_pipeline_NERMention_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_edu_stanford_nlp_pipeline_NERMention_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_NERMention_descriptor,
        new java.lang.String[] { "SentenceIndex", "TokenStartInSentenceInclusive", "TokenEndInSentenceExclusive", "Ner", "NormalizedNER", "EntityType", "Timex", "WikipediaEntity", "Gender", "EntityMentionIndex", "CanonicalEntityMentionIndex", "EntityMentionText", });
    internal_static_edu_stanford_nlp_pipeline_SentenceFragment_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_edu_stanford_nlp_pipeline_SentenceFragment_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SentenceFragment_descriptor,
        new java.lang.String[] { "TokenIndex", "Root", "AssumedTruth", "Score", });
    internal_static_edu_stanford_nlp_pipeline_TokenLocation_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_edu_stanford_nlp_pipeline_TokenLocation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TokenLocation_descriptor,
        new java.lang.String[] { "SentenceIndex", "TokenIndex", });
    internal_static_edu_stanford_nlp_pipeline_RelationTriple_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_edu_stanford_nlp_pipeline_RelationTriple_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_RelationTriple_descriptor,
        new java.lang.String[] { "Subject", "Relation", "Object", "Confidence", "SubjectTokens", "RelationTokens", "ObjectTokens", "Tree", "Istmod", "PrefixBe", "SuffixBe", "SuffixOf", });
    internal_static_edu_stanford_nlp_pipeline_MapStringString_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_edu_stanford_nlp_pipeline_MapStringString_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_MapStringString_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_edu_stanford_nlp_pipeline_MapIntString_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_edu_stanford_nlp_pipeline_MapIntString_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_MapIntString_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_edu_stanford_nlp_pipeline_Section_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_edu_stanford_nlp_pipeline_Section_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_Section_descriptor,
        new java.lang.String[] { "CharBegin", "CharEnd", "Author", "SentenceIndexes", "Datetime", "Quotes", "AuthorCharBegin", "AuthorCharEnd", "XmlTag", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_descriptor,
        new java.lang.String[] { "Semgrex", "Query", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexRequest_Dependencies_descriptor,
        new java.lang.String[] { "Token", "Graph", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor,
        new java.lang.String[] { "Result", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedNode_descriptor,
        new java.lang.String[] { "Name", "MatchIndex", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor.getNestedTypes().get(1);
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedRelation_descriptor,
        new java.lang.String[] { "Name", "Reln", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor.getNestedTypes().get(2);
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_NamedEdge_descriptor,
        new java.lang.String[] { "Name", "Source", "Target", "Reln", "IsExtra", "SourceCopy", "TargetCopy", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor.getNestedTypes().get(3);
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_Match_descriptor,
        new java.lang.String[] { "MatchIndex", "Node", "Reln", "Edge", "GraphIndex", "SemgrexIndex", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor.getNestedTypes().get(4);
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_SemgrexResult_descriptor,
        new java.lang.String[] { "Match", });
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_descriptor.getNestedTypes().get(5);
    internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SemgrexResponse_GraphResult_descriptor,
        new java.lang.String[] { "Result", });
    internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_descriptor,
        new java.lang.String[] { "Ssurgeon", "Graph", });
    internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SsurgeonRequest_Ssurgeon_descriptor,
        new java.lang.String[] { "Semgrex", "Operation", "Id", "Notes", "Language", });
    internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_descriptor,
        new java.lang.String[] { "Result", });
    internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_descriptor =
      internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_SsurgeonResponse_SsurgeonResult_descriptor,
        new java.lang.String[] { "Graph", "Changed", });
    internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TokensRegexRequest_descriptor,
        new java.lang.String[] { "Doc", "Pattern", });
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor,
        new java.lang.String[] { "Match", });
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_descriptor =
      internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_MatchLocation_descriptor,
        new java.lang.String[] { "Text", "Begin", "End", });
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_descriptor =
      internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor.getNestedTypes().get(1);
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_Match_descriptor,
        new java.lang.String[] { "Sentence", "Match", "Group", });
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_descriptor =
      internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_descriptor.getNestedTypes().get(2);
    internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TokensRegexResponse_PatternMatch_descriptor,
        new java.lang.String[] { "Match", });
    internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_DependencyEnhancerRequest_descriptor,
        new java.lang.String[] { "Document", "Language", "RelativePronouns", "Ref", });
    internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_descriptor,
        new java.lang.String[] { "Nodes", });
    internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_descriptor =
      internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_FlattenedParseTree_Node_descriptor,
        new java.lang.String[] { "OpenNode", "CloseNode", "Value", "Score", "Contents", });
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_descriptor,
        new java.lang.String[] { "Treebank", });
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_descriptor =
      internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_EvaluateParserRequest_ParseResult_descriptor,
        new java.lang.String[] { "Gold", "Predicted", });
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_descriptor =
      getDescriptor().getMessageTypes().get(32);
    internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_EvaluateParserResponse_descriptor,
        new java.lang.String[] { "F1", "KbestF1", });
    internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_descriptor =
      getDescriptor().getMessageTypes().get(33);
    internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_descriptor,
        new java.lang.String[] { "Operations", "Trees", });
    internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_descriptor =
      internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TsurgeonRequest_Operation_descriptor,
        new java.lang.String[] { "Tregex", "Tsurgeon", });
    internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_descriptor =
      getDescriptor().getMessageTypes().get(34);
    internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_TsurgeonResponse_descriptor,
        new java.lang.String[] { "Trees", });
    internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_descriptor =
      getDescriptor().getMessageTypes().get(35);
    internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_descriptor,
        new java.lang.String[] { "Words", });
    internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_descriptor =
      internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_MorphologyRequest_TaggedWord_descriptor,
        new java.lang.String[] { "Word", "Xpos", });
    internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_descriptor =
      getDescriptor().getMessageTypes().get(36);
    internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_descriptor,
        new java.lang.String[] { "Words", });
    internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_descriptor =
      internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_MorphologyResponse_WordTagLemma_descriptor,
        new java.lang.String[] { "Word", "Xpos", "Lemma", });
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_descriptor =
      getDescriptor().getMessageTypes().get(37);
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_DependencyConverterRequest_descriptor,
        new java.lang.String[] { "Trees", });
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_descriptor =
      getDescriptor().getMessageTypes().get(38);
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_descriptor,
        new java.lang.String[] { "Conversions", });
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_descriptor =
      internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_descriptor.getNestedTypes().get(0);
    internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_edu_stanford_nlp_pipeline_DependencyConverterResponse_DependencyConversion_descriptor,
        new java.lang.String[] { "Graph", "Tree", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
