/*
 Copyright 2013-2015 Jason Leyba

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */

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

package com.github.jsdossier.proto;

/**
 * Protobuf type {@code dossier.BaseProperty}
 *
 * <pre>
 * Describes the basic properties for a documented JavaScript property.
 * </pre>
 */
public final class BaseProperty extends
    com.google.protobuf.GeneratedMessage implements
    // @@protoc_insertion_point(message_implements:dossier.BaseProperty)
    BasePropertyOrBuilder {
  // Use BaseProperty.newBuilder() to construct.
  private BaseProperty(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
    super(builder);
    this.unknownFields = builder.getUnknownFields();
  }
  private BaseProperty(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

  private static final BaseProperty defaultInstance;
  public static BaseProperty getDefaultInstance() {
    return defaultInstance;
  }

  public BaseProperty getDefaultInstanceForType() {
    return defaultInstance;
  }

  private final com.google.protobuf.UnknownFieldSet unknownFields;
  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
    return this.unknownFields;
  }
  private BaseProperty(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    initFields();
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          default: {
            if (!parseUnknownField(input, unknownFields,
                                   extensionRegistry, tag)) {
              done = true;
            }
            break;
          }
          case 10: {
            com.google.protobuf.ByteString bs = input.readBytes();
            bitField0_ |= 0x00000001;
            name_ = bs;
            break;
          }
          case 18: {
            com.github.jsdossier.proto.SourceLink.Builder subBuilder = null;
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              subBuilder = source_.toBuilder();
            }
            source_ = input.readMessage(com.github.jsdossier.proto.SourceLink.PARSER, extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(source_);
              source_ = subBuilder.buildPartial();
            }
            bitField0_ |= 0x00000002;
            break;
          }
          case 26: {
            com.github.jsdossier.proto.Comment.Builder subBuilder = null;
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              subBuilder = description_.toBuilder();
            }
            description_ = input.readMessage(com.github.jsdossier.proto.Comment.PARSER, extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(description_);
              description_ = subBuilder.buildPartial();
            }
            bitField0_ |= 0x00000004;
            break;
          }
          case 34: {
            com.github.jsdossier.proto.Deprecation.Builder subBuilder = null;
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              subBuilder = deprecation_.toBuilder();
            }
            deprecation_ = input.readMessage(com.github.jsdossier.proto.Deprecation.PARSER, extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(deprecation_);
              deprecation_ = subBuilder.buildPartial();
            }
            bitField0_ |= 0x00000008;
            break;
          }
          case 40: {
            int rawValue = input.readEnum();
            com.github.jsdossier.proto.Visibility value = com.github.jsdossier.proto.Visibility.valueOf(rawValue);
            if (value == null) {
              unknownFields.mergeVarintField(5, rawValue);
            } else {
              bitField0_ |= 0x00000010;
              visibility_ = value;
            }
            break;
          }
          case 50: {
            com.github.jsdossier.proto.Tags.Builder subBuilder = null;
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              subBuilder = tags_.toBuilder();
            }
            tags_ = input.readMessage(com.github.jsdossier.proto.Tags.PARSER, extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(tags_);
              tags_ = subBuilder.buildPartial();
            }
            bitField0_ |= 0x00000020;
            break;
          }
          case 58: {
            com.github.jsdossier.proto.Comment.Builder subBuilder = null;
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              subBuilder = definedBy_.toBuilder();
            }
            definedBy_ = input.readMessage(com.github.jsdossier.proto.Comment.PARSER, extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(definedBy_);
              definedBy_ = subBuilder.buildPartial();
            }
            bitField0_ |= 0x00000040;
            break;
          }
          case 66: {
            com.github.jsdossier.proto.Comment.Builder subBuilder = null;
            if (((bitField0_ & 0x00000080) == 0x00000080)) {
              subBuilder = overrides_.toBuilder();
            }
            overrides_ = input.readMessage(com.github.jsdossier.proto.Comment.PARSER, extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(overrides_);
              overrides_ = subBuilder.buildPartial();
            }
            bitField0_ |= 0x00000080;
            break;
          }
          case 74: {
            if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
              specifiedBy_ = new java.util.ArrayList<com.github.jsdossier.proto.Comment>();
              mutable_bitField0_ |= 0x00000100;
            }
            specifiedBy_.add(input.readMessage(com.github.jsdossier.proto.Comment.PARSER, extensionRegistry));
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e.getMessage()).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
        specifiedBy_ = java.util.Collections.unmodifiableList(specifiedBy_);
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return com.github.jsdossier.proto.Dossier.internal_static_dossier_BaseProperty_descriptor;
  }

  protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.github.jsdossier.proto.Dossier.internal_static_dossier_BaseProperty_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.github.jsdossier.proto.BaseProperty.class, com.github.jsdossier.proto.BaseProperty.Builder.class);
  }

  public static com.google.protobuf.Parser<BaseProperty> PARSER =
      new com.google.protobuf.AbstractParser<BaseProperty>() {
    public BaseProperty parsePartialFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return new BaseProperty(input, extensionRegistry);
    }
  };

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

  private int bitField0_;
  public static final int NAME_FIELD_NUMBER = 1;
  private java.lang.Object name_;
  /**
   * <code>required string name = 1;</code>
   *
   * <pre>
   * The property's name; this should not be the fully qualified name.
   * </pre>
   */
  public boolean hasName() {
    return ((bitField0_ & 0x00000001) == 0x00000001);
  }
  /**
   * <code>required string name = 1;</code>
   *
   * <pre>
   * The property's name; this should not be the fully qualified name.
   * </pre>
   */
  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>
   *
   * <pre>
   * The property's name; this should not be the fully qualified name.
   * </pre>
   */
  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 com.github.jsdossier.proto.SourceLink source_;
  /**
   * <code>required .dossier.SourceLink source = 2;</code>
   *
   * <pre>
   * Link to the location in the source file where this property is defined.
   * </pre>
   */
  public boolean hasSource() {
    return ((bitField0_ & 0x00000002) == 0x00000002);
  }
  /**
   * <code>required .dossier.SourceLink source = 2;</code>
   *
   * <pre>
   * Link to the location in the source file where this property is defined.
   * </pre>
   */
  public com.github.jsdossier.proto.SourceLink getSource() {
    return source_;
  }
  /**
   * <code>required .dossier.SourceLink source = 2;</code>
   *
   * <pre>
   * Link to the location in the source file where this property is defined.
   * </pre>
   */
  public com.github.jsdossier.proto.SourceLinkOrBuilder getSourceOrBuilder() {
    return source_;
  }

  public static final int DESCRIPTION_FIELD_NUMBER = 3;
  private com.github.jsdossier.proto.Comment description_;
  /**
   * <code>required .dossier.Comment description = 3;</code>
   *
   * <pre>
   * The property's block comment.
   * </pre>
   */
  public boolean hasDescription() {
    return ((bitField0_ & 0x00000004) == 0x00000004);
  }
  /**
   * <code>required .dossier.Comment description = 3;</code>
   *
   * <pre>
   * The property's block comment.
   * </pre>
   */
  public com.github.jsdossier.proto.Comment getDescription() {
    return description_;
  }
  /**
   * <code>required .dossier.Comment description = 3;</code>
   *
   * <pre>
   * The property's block comment.
   * </pre>
   */
  public com.github.jsdossier.proto.CommentOrBuilder getDescriptionOrBuilder() {
    return description_;
  }

  public static final int DEPRECATION_FIELD_NUMBER = 4;
  private com.github.jsdossier.proto.Deprecation deprecation_;
  /**
   * <code>optional .dossier.Deprecation deprecation = 4;</code>
   *
   * <pre>
   * Whether this property is deprecated.
   * </pre>
   */
  public boolean hasDeprecation() {
    return ((bitField0_ & 0x00000008) == 0x00000008);
  }
  /**
   * <code>optional .dossier.Deprecation deprecation = 4;</code>
   *
   * <pre>
   * Whether this property is deprecated.
   * </pre>
   */
  public com.github.jsdossier.proto.Deprecation getDeprecation() {
    return deprecation_;
  }
  /**
   * <code>optional .dossier.Deprecation deprecation = 4;</code>
   *
   * <pre>
   * Whether this property is deprecated.
   * </pre>
   */
  public com.github.jsdossier.proto.DeprecationOrBuilder getDeprecationOrBuilder() {
    return deprecation_;
  }

  public static final int VISIBILITY_FIELD_NUMBER = 5;
  private com.github.jsdossier.proto.Visibility visibility_;
  /**
   * <code>optional .dossier.Visibility visibility = 5 [default = PUBLIC];</code>
   */
  public boolean hasVisibility() {
    return ((bitField0_ & 0x00000010) == 0x00000010);
  }
  /**
   * <code>optional .dossier.Visibility visibility = 5 [default = PUBLIC];</code>
   */
  public com.github.jsdossier.proto.Visibility getVisibility() {
    return visibility_;
  }

  public static final int TAGS_FIELD_NUMBER = 6;
  private com.github.jsdossier.proto.Tags tags_;
  /**
   * <code>optional .dossier.Tags tags = 6;</code>
   */
  public boolean hasTags() {
    return ((bitField0_ & 0x00000020) == 0x00000020);
  }
  /**
   * <code>optional .dossier.Tags tags = 6;</code>
   */
  public com.github.jsdossier.proto.Tags getTags() {
    return tags_;
  }
  /**
   * <code>optional .dossier.Tags tags = 6;</code>
   */
  public com.github.jsdossier.proto.TagsOrBuilder getTagsOrBuilder() {
    return tags_;
  }

  public static final int DEFINED_BY_FIELD_NUMBER = 7;
  private com.github.jsdossier.proto.Comment definedBy_;
  /**
   * <code>optional .dossier.Comment defined_by = 7;</code>
   *
   * <pre>
   * The class or interface that defines this property.
   * </pre>
   */
  public boolean hasDefinedBy() {
    return ((bitField0_ & 0x00000040) == 0x00000040);
  }
  /**
   * <code>optional .dossier.Comment defined_by = 7;</code>
   *
   * <pre>
   * The class or interface that defines this property.
   * </pre>
   */
  public com.github.jsdossier.proto.Comment getDefinedBy() {
    return definedBy_;
  }
  /**
   * <code>optional .dossier.Comment defined_by = 7;</code>
   *
   * <pre>
   * The class or interface that defines this property.
   * </pre>
   */
  public com.github.jsdossier.proto.CommentOrBuilder getDefinedByOrBuilder() {
    return definedBy_;
  }

  public static final int OVERRIDES_FIELD_NUMBER = 8;
  private com.github.jsdossier.proto.Comment overrides_;
  /**
   * <code>optional .dossier.Comment overrides = 8;</code>
   *
   * <pre>
   * Parent class that defines this property.
   * </pre>
   */
  public boolean hasOverrides() {
    return ((bitField0_ & 0x00000080) == 0x00000080);
  }
  /**
   * <code>optional .dossier.Comment overrides = 8;</code>
   *
   * <pre>
   * Parent class that defines this property.
   * </pre>
   */
  public com.github.jsdossier.proto.Comment getOverrides() {
    return overrides_;
  }
  /**
   * <code>optional .dossier.Comment overrides = 8;</code>
   *
   * <pre>
   * Parent class that defines this property.
   * </pre>
   */
  public com.github.jsdossier.proto.CommentOrBuilder getOverridesOrBuilder() {
    return overrides_;
  }

  public static final int SPECIFIED_BY_FIELD_NUMBER = 9;
  private java.util.List<com.github.jsdossier.proto.Comment> specifiedBy_;
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  public java.util.List<com.github.jsdossier.proto.Comment> getSpecifiedByList() {
    return specifiedBy_;
  }
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  public java.util.List<? extends com.github.jsdossier.proto.CommentOrBuilder> 
      getSpecifiedByOrBuilderList() {
    return specifiedBy_;
  }
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  public int getSpecifiedByCount() {
    return specifiedBy_.size();
  }
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  public com.github.jsdossier.proto.Comment getSpecifiedBy(int index) {
    return specifiedBy_.get(index);
  }
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  public com.github.jsdossier.proto.CommentOrBuilder getSpecifiedByOrBuilder(
      int index) {
    return specifiedBy_.get(index);
  }

  private void initFields() {
    name_ = "";
    source_ = com.github.jsdossier.proto.SourceLink.getDefaultInstance();
    description_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
    deprecation_ = com.github.jsdossier.proto.Deprecation.getDefaultInstance();
    visibility_ = com.github.jsdossier.proto.Visibility.PUBLIC;
    tags_ = com.github.jsdossier.proto.Tags.getDefaultInstance();
    definedBy_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
    overrides_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
    specifiedBy_ = java.util.Collections.emptyList();
  }
  private byte memoizedIsInitialized = -1;
  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 (!hasDescription()) {
      memoizedIsInitialized = 0;
      return false;
    }
    if (!getSource().isInitialized()) {
      memoizedIsInitialized = 0;
      return false;
    }
    memoizedIsInitialized = 1;
    return true;
  }

  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    getSerializedSize();
    if (((bitField0_ & 0x00000001) == 0x00000001)) {
      output.writeBytes(1, getNameBytes());
    }
    if (((bitField0_ & 0x00000002) == 0x00000002)) {
      output.writeMessage(2, source_);
    }
    if (((bitField0_ & 0x00000004) == 0x00000004)) {
      output.writeMessage(3, description_);
    }
    if (((bitField0_ & 0x00000008) == 0x00000008)) {
      output.writeMessage(4, deprecation_);
    }
    if (((bitField0_ & 0x00000010) == 0x00000010)) {
      output.writeEnum(5, visibility_.getNumber());
    }
    if (((bitField0_ & 0x00000020) == 0x00000020)) {
      output.writeMessage(6, tags_);
    }
    if (((bitField0_ & 0x00000040) == 0x00000040)) {
      output.writeMessage(7, definedBy_);
    }
    if (((bitField0_ & 0x00000080) == 0x00000080)) {
      output.writeMessage(8, overrides_);
    }
    for (int i = 0; i < specifiedBy_.size(); i++) {
      output.writeMessage(9, specifiedBy_.get(i));
    }
    getUnknownFields().writeTo(output);
  }

  private int memoizedSerializedSize = -1;
  public int getSerializedSize() {
    int size = memoizedSerializedSize;
    if (size != -1) return size;

    size = 0;
    if (((bitField0_ & 0x00000001) == 0x00000001)) {
      size += com.google.protobuf.CodedOutputStream
        .computeBytesSize(1, getNameBytes());
    }
    if (((bitField0_ & 0x00000002) == 0x00000002)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(2, source_);
    }
    if (((bitField0_ & 0x00000004) == 0x00000004)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(3, description_);
    }
    if (((bitField0_ & 0x00000008) == 0x00000008)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, deprecation_);
    }
    if (((bitField0_ & 0x00000010) == 0x00000010)) {
      size += com.google.protobuf.CodedOutputStream
        .computeEnumSize(5, visibility_.getNumber());
    }
    if (((bitField0_ & 0x00000020) == 0x00000020)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(6, tags_);
    }
    if (((bitField0_ & 0x00000040) == 0x00000040)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(7, definedBy_);
    }
    if (((bitField0_ & 0x00000080) == 0x00000080)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(8, overrides_);
    }
    for (int i = 0; i < specifiedBy_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(9, specifiedBy_.get(i));
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSerializedSize = size;
    return size;
  }

  private static final long serialVersionUID = 0L;
  @java.lang.Override
  protected java.lang.Object writeReplace()
      throws java.io.ObjectStreamException {
    return super.writeReplace();
  }

  public static com.github.jsdossier.proto.BaseProperty parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.github.jsdossier.proto.BaseProperty parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static com.github.jsdossier.proto.BaseProperty parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.github.jsdossier.proto.BaseProperty parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static com.github.jsdossier.proto.BaseProperty parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return PARSER.parseFrom(input);
  }
  public static com.github.jsdossier.proto.BaseProperty parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return PARSER.parseFrom(input, extensionRegistry);
  }
  public static com.github.jsdossier.proto.BaseProperty parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return PARSER.parseDelimitedFrom(input);
  }
  public static com.github.jsdossier.proto.BaseProperty parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return PARSER.parseDelimitedFrom(input, extensionRegistry);
  }
  public static com.github.jsdossier.proto.BaseProperty parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return PARSER.parseFrom(input);
  }
  public static com.github.jsdossier.proto.BaseProperty parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return PARSER.parseFrom(input, extensionRegistry);
  }

  public static Builder newBuilder() { return Builder.create(); }
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder(com.github.jsdossier.proto.BaseProperty prototype) {
    return newBuilder().mergeFrom(prototype);
  }
  public Builder toBuilder() { return newBuilder(this); }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessage.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * Protobuf type {@code dossier.BaseProperty}
   *
   * <pre>
   * Describes the basic properties for a documented JavaScript property.
   * </pre>
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessage.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:dossier.BaseProperty)
      com.github.jsdossier.proto.BasePropertyOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.github.jsdossier.proto.Dossier.internal_static_dossier_BaseProperty_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.github.jsdossier.proto.Dossier.internal_static_dossier_BaseProperty_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.github.jsdossier.proto.BaseProperty.class, com.github.jsdossier.proto.BaseProperty.Builder.class);
    }

    // Construct using com.github.jsdossier.proto.BaseProperty.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        getSourceFieldBuilder();
        getDescriptionFieldBuilder();
        getDeprecationFieldBuilder();
        getTagsFieldBuilder();
        getDefinedByFieldBuilder();
        getOverridesFieldBuilder();
        getSpecifiedByFieldBuilder();
      }
    }
    private static Builder create() {
      return new Builder();
    }

    public Builder clear() {
      super.clear();
      name_ = "";
      bitField0_ = (bitField0_ & ~0x00000001);
      if (sourceBuilder_ == null) {
        source_ = com.github.jsdossier.proto.SourceLink.getDefaultInstance();
      } else {
        sourceBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000002);
      if (descriptionBuilder_ == null) {
        description_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
      } else {
        descriptionBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000004);
      if (deprecationBuilder_ == null) {
        deprecation_ = com.github.jsdossier.proto.Deprecation.getDefaultInstance();
      } else {
        deprecationBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000008);
      visibility_ = com.github.jsdossier.proto.Visibility.PUBLIC;
      bitField0_ = (bitField0_ & ~0x00000010);
      if (tagsBuilder_ == null) {
        tags_ = com.github.jsdossier.proto.Tags.getDefaultInstance();
      } else {
        tagsBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000020);
      if (definedByBuilder_ == null) {
        definedBy_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
      } else {
        definedByBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000040);
      if (overridesBuilder_ == null) {
        overrides_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
      } else {
        overridesBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000080);
      if (specifiedByBuilder_ == null) {
        specifiedBy_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
      } else {
        specifiedByBuilder_.clear();
      }
      return this;
    }

    public Builder clone() {
      return create().mergeFrom(buildPartial());
    }

    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return com.github.jsdossier.proto.Dossier.internal_static_dossier_BaseProperty_descriptor;
    }

    public com.github.jsdossier.proto.BaseProperty getDefaultInstanceForType() {
      return com.github.jsdossier.proto.BaseProperty.getDefaultInstance();
    }

    public com.github.jsdossier.proto.BaseProperty build() {
      com.github.jsdossier.proto.BaseProperty result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    public com.github.jsdossier.proto.BaseProperty buildPartial() {
      com.github.jsdossier.proto.BaseProperty result = new com.github.jsdossier.proto.BaseProperty(this);
      int from_bitField0_ = bitField0_;
      int to_bitField0_ = 0;
      if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
        to_bitField0_ |= 0x00000001;
      }
      result.name_ = name_;
      if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
        to_bitField0_ |= 0x00000002;
      }
      if (sourceBuilder_ == null) {
        result.source_ = source_;
      } else {
        result.source_ = sourceBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
        to_bitField0_ |= 0x00000004;
      }
      if (descriptionBuilder_ == null) {
        result.description_ = description_;
      } else {
        result.description_ = descriptionBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
        to_bitField0_ |= 0x00000008;
      }
      if (deprecationBuilder_ == null) {
        result.deprecation_ = deprecation_;
      } else {
        result.deprecation_ = deprecationBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
        to_bitField0_ |= 0x00000010;
      }
      result.visibility_ = visibility_;
      if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
        to_bitField0_ |= 0x00000020;
      }
      if (tagsBuilder_ == null) {
        result.tags_ = tags_;
      } else {
        result.tags_ = tagsBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
        to_bitField0_ |= 0x00000040;
      }
      if (definedByBuilder_ == null) {
        result.definedBy_ = definedBy_;
      } else {
        result.definedBy_ = definedByBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
        to_bitField0_ |= 0x00000080;
      }
      if (overridesBuilder_ == null) {
        result.overrides_ = overrides_;
      } else {
        result.overrides_ = overridesBuilder_.build();
      }
      if (specifiedByBuilder_ == null) {
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          specifiedBy_ = java.util.Collections.unmodifiableList(specifiedBy_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.specifiedBy_ = specifiedBy_;
      } else {
        result.specifiedBy_ = specifiedByBuilder_.build();
      }
      result.bitField0_ = to_bitField0_;
      onBuilt();
      return result;
    }

    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof com.github.jsdossier.proto.BaseProperty) {
        return mergeFrom((com.github.jsdossier.proto.BaseProperty)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.github.jsdossier.proto.BaseProperty other) {
      if (other == com.github.jsdossier.proto.BaseProperty.getDefaultInstance()) return this;
      if (other.hasName()) {
        bitField0_ |= 0x00000001;
        name_ = other.name_;
        onChanged();
      }
      if (other.hasSource()) {
        mergeSource(other.getSource());
      }
      if (other.hasDescription()) {
        mergeDescription(other.getDescription());
      }
      if (other.hasDeprecation()) {
        mergeDeprecation(other.getDeprecation());
      }
      if (other.hasVisibility()) {
        setVisibility(other.getVisibility());
      }
      if (other.hasTags()) {
        mergeTags(other.getTags());
      }
      if (other.hasDefinedBy()) {
        mergeDefinedBy(other.getDefinedBy());
      }
      if (other.hasOverrides()) {
        mergeOverrides(other.getOverrides());
      }
      if (specifiedByBuilder_ == null) {
        if (!other.specifiedBy_.isEmpty()) {
          if (specifiedBy_.isEmpty()) {
            specifiedBy_ = other.specifiedBy_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureSpecifiedByIsMutable();
            specifiedBy_.addAll(other.specifiedBy_);
          }
          onChanged();
        }
      } else {
        if (!other.specifiedBy_.isEmpty()) {
          if (specifiedByBuilder_.isEmpty()) {
            specifiedByBuilder_.dispose();
            specifiedByBuilder_ = null;
            specifiedBy_ = other.specifiedBy_;
            bitField0_ = (bitField0_ & ~0x00000100);
            specifiedByBuilder_ = 
              com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                 getSpecifiedByFieldBuilder() : null;
          } else {
            specifiedByBuilder_.addAllMessages(other.specifiedBy_);
          }
        }
      }
      this.mergeUnknownFields(other.getUnknownFields());
      return this;
    }

    public final boolean isInitialized() {
      if (!hasName()) {
        
        return false;
      }
      if (!hasSource()) {
        
        return false;
      }
      if (!hasDescription()) {
        
        return false;
      }
      if (!getSource().isInitialized()) {
        
        return false;
      }
      return true;
    }

    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      com.github.jsdossier.proto.BaseProperty parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (com.github.jsdossier.proto.BaseProperty) e.getUnfinishedMessage();
        throw e;
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int bitField0_;

    private java.lang.Object name_ = "";
    /**
     * <code>required string name = 1;</code>
     *
     * <pre>
     * The property's name; this should not be the fully qualified name.
     * </pre>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string name = 1;</code>
     *
     * <pre>
     * The property's name; this should not be the fully qualified name.
     * </pre>
     */
    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>
     *
     * <pre>
     * The property's name; this should not be the fully qualified name.
     * </pre>
     */
    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>
     *
     * <pre>
     * The property's name; this should not be the fully qualified name.
     * </pre>
     */
    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>
     *
     * <pre>
     * The property's name; this should not be the fully qualified name.
     * </pre>
     */
    public Builder clearName() {
      bitField0_ = (bitField0_ & ~0x00000001);
      name_ = getDefaultInstance().getName();
      onChanged();
      return this;
    }
    /**
     * <code>required string name = 1;</code>
     *
     * <pre>
     * The property's name; this should not be the fully qualified name.
     * </pre>
     */
    public Builder setNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
      name_ = value;
      onChanged();
      return this;
    }

    private com.github.jsdossier.proto.SourceLink source_ = com.github.jsdossier.proto.SourceLink.getDefaultInstance();
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.SourceLink, com.github.jsdossier.proto.SourceLink.Builder, com.github.jsdossier.proto.SourceLinkOrBuilder> sourceBuilder_;
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    public boolean hasSource() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    public com.github.jsdossier.proto.SourceLink getSource() {
      if (sourceBuilder_ == null) {
        return source_;
      } else {
        return sourceBuilder_.getMessage();
      }
    }
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    public Builder setSource(com.github.jsdossier.proto.SourceLink value) {
      if (sourceBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        source_ = value;
        onChanged();
      } else {
        sourceBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000002;
      return this;
    }
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    public Builder setSource(
        com.github.jsdossier.proto.SourceLink.Builder builderForValue) {
      if (sourceBuilder_ == null) {
        source_ = builderForValue.build();
        onChanged();
      } else {
        sourceBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000002;
      return this;
    }
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    public Builder mergeSource(com.github.jsdossier.proto.SourceLink value) {
      if (sourceBuilder_ == null) {
        if (((bitField0_ & 0x00000002) == 0x00000002) &&
            source_ != com.github.jsdossier.proto.SourceLink.getDefaultInstance()) {
          source_ =
            com.github.jsdossier.proto.SourceLink.newBuilder(source_).mergeFrom(value).buildPartial();
        } else {
          source_ = value;
        }
        onChanged();
      } else {
        sourceBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000002;
      return this;
    }
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    public Builder clearSource() {
      if (sourceBuilder_ == null) {
        source_ = com.github.jsdossier.proto.SourceLink.getDefaultInstance();
        onChanged();
      } else {
        sourceBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000002);
      return this;
    }
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    public com.github.jsdossier.proto.SourceLink.Builder getSourceBuilder() {
      bitField0_ |= 0x00000002;
      onChanged();
      return getSourceFieldBuilder().getBuilder();
    }
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    public com.github.jsdossier.proto.SourceLinkOrBuilder getSourceOrBuilder() {
      if (sourceBuilder_ != null) {
        return sourceBuilder_.getMessageOrBuilder();
      } else {
        return source_;
      }
    }
    /**
     * <code>required .dossier.SourceLink source = 2;</code>
     *
     * <pre>
     * Link to the location in the source file where this property is defined.
     * </pre>
     */
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.SourceLink, com.github.jsdossier.proto.SourceLink.Builder, com.github.jsdossier.proto.SourceLinkOrBuilder> 
        getSourceFieldBuilder() {
      if (sourceBuilder_ == null) {
        sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
            com.github.jsdossier.proto.SourceLink, com.github.jsdossier.proto.SourceLink.Builder, com.github.jsdossier.proto.SourceLinkOrBuilder>(
                getSource(),
                getParentForChildren(),
                isClean());
        source_ = null;
      }
      return sourceBuilder_;
    }

    private com.github.jsdossier.proto.Comment description_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder> descriptionBuilder_;
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    public boolean hasDescription() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment getDescription() {
      if (descriptionBuilder_ == null) {
        return description_;
      } else {
        return descriptionBuilder_.getMessage();
      }
    }
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    public Builder setDescription(com.github.jsdossier.proto.Comment value) {
      if (descriptionBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        description_ = value;
        onChanged();
      } else {
        descriptionBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000004;
      return this;
    }
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    public Builder setDescription(
        com.github.jsdossier.proto.Comment.Builder builderForValue) {
      if (descriptionBuilder_ == null) {
        description_ = builderForValue.build();
        onChanged();
      } else {
        descriptionBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000004;
      return this;
    }
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    public Builder mergeDescription(com.github.jsdossier.proto.Comment value) {
      if (descriptionBuilder_ == null) {
        if (((bitField0_ & 0x00000004) == 0x00000004) &&
            description_ != com.github.jsdossier.proto.Comment.getDefaultInstance()) {
          description_ =
            com.github.jsdossier.proto.Comment.newBuilder(description_).mergeFrom(value).buildPartial();
        } else {
          description_ = value;
        }
        onChanged();
      } else {
        descriptionBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000004;
      return this;
    }
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    public Builder clearDescription() {
      if (descriptionBuilder_ == null) {
        description_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
        onChanged();
      } else {
        descriptionBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000004);
      return this;
    }
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment.Builder getDescriptionBuilder() {
      bitField0_ |= 0x00000004;
      onChanged();
      return getDescriptionFieldBuilder().getBuilder();
    }
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    public com.github.jsdossier.proto.CommentOrBuilder getDescriptionOrBuilder() {
      if (descriptionBuilder_ != null) {
        return descriptionBuilder_.getMessageOrBuilder();
      } else {
        return description_;
      }
    }
    /**
     * <code>required .dossier.Comment description = 3;</code>
     *
     * <pre>
     * The property's block comment.
     * </pre>
     */
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder> 
        getDescriptionFieldBuilder() {
      if (descriptionBuilder_ == null) {
        descriptionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
            com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder>(
                getDescription(),
                getParentForChildren(),
                isClean());
        description_ = null;
      }
      return descriptionBuilder_;
    }

    private com.github.jsdossier.proto.Deprecation deprecation_ = com.github.jsdossier.proto.Deprecation.getDefaultInstance();
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Deprecation, com.github.jsdossier.proto.Deprecation.Builder, com.github.jsdossier.proto.DeprecationOrBuilder> deprecationBuilder_;
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    public boolean hasDeprecation() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    public com.github.jsdossier.proto.Deprecation getDeprecation() {
      if (deprecationBuilder_ == null) {
        return deprecation_;
      } else {
        return deprecationBuilder_.getMessage();
      }
    }
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    public Builder setDeprecation(com.github.jsdossier.proto.Deprecation value) {
      if (deprecationBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        deprecation_ = value;
        onChanged();
      } else {
        deprecationBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000008;
      return this;
    }
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    public Builder setDeprecation(
        com.github.jsdossier.proto.Deprecation.Builder builderForValue) {
      if (deprecationBuilder_ == null) {
        deprecation_ = builderForValue.build();
        onChanged();
      } else {
        deprecationBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000008;
      return this;
    }
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    public Builder mergeDeprecation(com.github.jsdossier.proto.Deprecation value) {
      if (deprecationBuilder_ == null) {
        if (((bitField0_ & 0x00000008) == 0x00000008) &&
            deprecation_ != com.github.jsdossier.proto.Deprecation.getDefaultInstance()) {
          deprecation_ =
            com.github.jsdossier.proto.Deprecation.newBuilder(deprecation_).mergeFrom(value).buildPartial();
        } else {
          deprecation_ = value;
        }
        onChanged();
      } else {
        deprecationBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000008;
      return this;
    }
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    public Builder clearDeprecation() {
      if (deprecationBuilder_ == null) {
        deprecation_ = com.github.jsdossier.proto.Deprecation.getDefaultInstance();
        onChanged();
      } else {
        deprecationBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000008);
      return this;
    }
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    public com.github.jsdossier.proto.Deprecation.Builder getDeprecationBuilder() {
      bitField0_ |= 0x00000008;
      onChanged();
      return getDeprecationFieldBuilder().getBuilder();
    }
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    public com.github.jsdossier.proto.DeprecationOrBuilder getDeprecationOrBuilder() {
      if (deprecationBuilder_ != null) {
        return deprecationBuilder_.getMessageOrBuilder();
      } else {
        return deprecation_;
      }
    }
    /**
     * <code>optional .dossier.Deprecation deprecation = 4;</code>
     *
     * <pre>
     * Whether this property is deprecated.
     * </pre>
     */
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Deprecation, com.github.jsdossier.proto.Deprecation.Builder, com.github.jsdossier.proto.DeprecationOrBuilder> 
        getDeprecationFieldBuilder() {
      if (deprecationBuilder_ == null) {
        deprecationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
            com.github.jsdossier.proto.Deprecation, com.github.jsdossier.proto.Deprecation.Builder, com.github.jsdossier.proto.DeprecationOrBuilder>(
                getDeprecation(),
                getParentForChildren(),
                isClean());
        deprecation_ = null;
      }
      return deprecationBuilder_;
    }

    private com.github.jsdossier.proto.Visibility visibility_ = com.github.jsdossier.proto.Visibility.PUBLIC;
    /**
     * <code>optional .dossier.Visibility visibility = 5 [default = PUBLIC];</code>
     */
    public boolean hasVisibility() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional .dossier.Visibility visibility = 5 [default = PUBLIC];</code>
     */
    public com.github.jsdossier.proto.Visibility getVisibility() {
      return visibility_;
    }
    /**
     * <code>optional .dossier.Visibility visibility = 5 [default = PUBLIC];</code>
     */
    public Builder setVisibility(com.github.jsdossier.proto.Visibility value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000010;
      visibility_ = value;
      onChanged();
      return this;
    }
    /**
     * <code>optional .dossier.Visibility visibility = 5 [default = PUBLIC];</code>
     */
    public Builder clearVisibility() {
      bitField0_ = (bitField0_ & ~0x00000010);
      visibility_ = com.github.jsdossier.proto.Visibility.PUBLIC;
      onChanged();
      return this;
    }

    private com.github.jsdossier.proto.Tags tags_ = com.github.jsdossier.proto.Tags.getDefaultInstance();
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Tags, com.github.jsdossier.proto.Tags.Builder, com.github.jsdossier.proto.TagsOrBuilder> tagsBuilder_;
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    public boolean hasTags() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    public com.github.jsdossier.proto.Tags getTags() {
      if (tagsBuilder_ == null) {
        return tags_;
      } else {
        return tagsBuilder_.getMessage();
      }
    }
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    public Builder setTags(com.github.jsdossier.proto.Tags value) {
      if (tagsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        tags_ = value;
        onChanged();
      } else {
        tagsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000020;
      return this;
    }
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    public Builder setTags(
        com.github.jsdossier.proto.Tags.Builder builderForValue) {
      if (tagsBuilder_ == null) {
        tags_ = builderForValue.build();
        onChanged();
      } else {
        tagsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000020;
      return this;
    }
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    public Builder mergeTags(com.github.jsdossier.proto.Tags value) {
      if (tagsBuilder_ == null) {
        if (((bitField0_ & 0x00000020) == 0x00000020) &&
            tags_ != com.github.jsdossier.proto.Tags.getDefaultInstance()) {
          tags_ =
            com.github.jsdossier.proto.Tags.newBuilder(tags_).mergeFrom(value).buildPartial();
        } else {
          tags_ = value;
        }
        onChanged();
      } else {
        tagsBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000020;
      return this;
    }
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    public Builder clearTags() {
      if (tagsBuilder_ == null) {
        tags_ = com.github.jsdossier.proto.Tags.getDefaultInstance();
        onChanged();
      } else {
        tagsBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000020);
      return this;
    }
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    public com.github.jsdossier.proto.Tags.Builder getTagsBuilder() {
      bitField0_ |= 0x00000020;
      onChanged();
      return getTagsFieldBuilder().getBuilder();
    }
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    public com.github.jsdossier.proto.TagsOrBuilder getTagsOrBuilder() {
      if (tagsBuilder_ != null) {
        return tagsBuilder_.getMessageOrBuilder();
      } else {
        return tags_;
      }
    }
    /**
     * <code>optional .dossier.Tags tags = 6;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Tags, com.github.jsdossier.proto.Tags.Builder, com.github.jsdossier.proto.TagsOrBuilder> 
        getTagsFieldBuilder() {
      if (tagsBuilder_ == null) {
        tagsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
            com.github.jsdossier.proto.Tags, com.github.jsdossier.proto.Tags.Builder, com.github.jsdossier.proto.TagsOrBuilder>(
                getTags(),
                getParentForChildren(),
                isClean());
        tags_ = null;
      }
      return tagsBuilder_;
    }

    private com.github.jsdossier.proto.Comment definedBy_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder> definedByBuilder_;
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    public boolean hasDefinedBy() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment getDefinedBy() {
      if (definedByBuilder_ == null) {
        return definedBy_;
      } else {
        return definedByBuilder_.getMessage();
      }
    }
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    public Builder setDefinedBy(com.github.jsdossier.proto.Comment value) {
      if (definedByBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        definedBy_ = value;
        onChanged();
      } else {
        definedByBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000040;
      return this;
    }
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    public Builder setDefinedBy(
        com.github.jsdossier.proto.Comment.Builder builderForValue) {
      if (definedByBuilder_ == null) {
        definedBy_ = builderForValue.build();
        onChanged();
      } else {
        definedByBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000040;
      return this;
    }
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    public Builder mergeDefinedBy(com.github.jsdossier.proto.Comment value) {
      if (definedByBuilder_ == null) {
        if (((bitField0_ & 0x00000040) == 0x00000040) &&
            definedBy_ != com.github.jsdossier.proto.Comment.getDefaultInstance()) {
          definedBy_ =
            com.github.jsdossier.proto.Comment.newBuilder(definedBy_).mergeFrom(value).buildPartial();
        } else {
          definedBy_ = value;
        }
        onChanged();
      } else {
        definedByBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000040;
      return this;
    }
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    public Builder clearDefinedBy() {
      if (definedByBuilder_ == null) {
        definedBy_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
        onChanged();
      } else {
        definedByBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000040);
      return this;
    }
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment.Builder getDefinedByBuilder() {
      bitField0_ |= 0x00000040;
      onChanged();
      return getDefinedByFieldBuilder().getBuilder();
    }
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    public com.github.jsdossier.proto.CommentOrBuilder getDefinedByOrBuilder() {
      if (definedByBuilder_ != null) {
        return definedByBuilder_.getMessageOrBuilder();
      } else {
        return definedBy_;
      }
    }
    /**
     * <code>optional .dossier.Comment defined_by = 7;</code>
     *
     * <pre>
     * The class or interface that defines this property.
     * </pre>
     */
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder> 
        getDefinedByFieldBuilder() {
      if (definedByBuilder_ == null) {
        definedByBuilder_ = new com.google.protobuf.SingleFieldBuilder<
            com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder>(
                getDefinedBy(),
                getParentForChildren(),
                isClean());
        definedBy_ = null;
      }
      return definedByBuilder_;
    }

    private com.github.jsdossier.proto.Comment overrides_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder> overridesBuilder_;
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    public boolean hasOverrides() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment getOverrides() {
      if (overridesBuilder_ == null) {
        return overrides_;
      } else {
        return overridesBuilder_.getMessage();
      }
    }
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    public Builder setOverrides(com.github.jsdossier.proto.Comment value) {
      if (overridesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        overrides_ = value;
        onChanged();
      } else {
        overridesBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000080;
      return this;
    }
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    public Builder setOverrides(
        com.github.jsdossier.proto.Comment.Builder builderForValue) {
      if (overridesBuilder_ == null) {
        overrides_ = builderForValue.build();
        onChanged();
      } else {
        overridesBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000080;
      return this;
    }
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    public Builder mergeOverrides(com.github.jsdossier.proto.Comment value) {
      if (overridesBuilder_ == null) {
        if (((bitField0_ & 0x00000080) == 0x00000080) &&
            overrides_ != com.github.jsdossier.proto.Comment.getDefaultInstance()) {
          overrides_ =
            com.github.jsdossier.proto.Comment.newBuilder(overrides_).mergeFrom(value).buildPartial();
        } else {
          overrides_ = value;
        }
        onChanged();
      } else {
        overridesBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000080;
      return this;
    }
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    public Builder clearOverrides() {
      if (overridesBuilder_ == null) {
        overrides_ = com.github.jsdossier.proto.Comment.getDefaultInstance();
        onChanged();
      } else {
        overridesBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000080);
      return this;
    }
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment.Builder getOverridesBuilder() {
      bitField0_ |= 0x00000080;
      onChanged();
      return getOverridesFieldBuilder().getBuilder();
    }
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    public com.github.jsdossier.proto.CommentOrBuilder getOverridesOrBuilder() {
      if (overridesBuilder_ != null) {
        return overridesBuilder_.getMessageOrBuilder();
      } else {
        return overrides_;
      }
    }
    /**
     * <code>optional .dossier.Comment overrides = 8;</code>
     *
     * <pre>
     * Parent class that defines this property.
     * </pre>
     */
    private com.google.protobuf.SingleFieldBuilder<
        com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder> 
        getOverridesFieldBuilder() {
      if (overridesBuilder_ == null) {
        overridesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
            com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder>(
                getOverrides(),
                getParentForChildren(),
                isClean());
        overrides_ = null;
      }
      return overridesBuilder_;
    }

    private java.util.List<com.github.jsdossier.proto.Comment> specifiedBy_ =
      java.util.Collections.emptyList();
    private void ensureSpecifiedByIsMutable() {
      if (!((bitField0_ & 0x00000100) == 0x00000100)) {
        specifiedBy_ = new java.util.ArrayList<com.github.jsdossier.proto.Comment>(specifiedBy_);
        bitField0_ |= 0x00000100;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilder<
        com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder> specifiedByBuilder_;

    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public java.util.List<com.github.jsdossier.proto.Comment> getSpecifiedByList() {
      if (specifiedByBuilder_ == null) {
        return java.util.Collections.unmodifiableList(specifiedBy_);
      } else {
        return specifiedByBuilder_.getMessageList();
      }
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public int getSpecifiedByCount() {
      if (specifiedByBuilder_ == null) {
        return specifiedBy_.size();
      } else {
        return specifiedByBuilder_.getCount();
      }
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment getSpecifiedBy(int index) {
      if (specifiedByBuilder_ == null) {
        return specifiedBy_.get(index);
      } else {
        return specifiedByBuilder_.getMessage(index);
      }
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder setSpecifiedBy(
        int index, com.github.jsdossier.proto.Comment value) {
      if (specifiedByBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSpecifiedByIsMutable();
        specifiedBy_.set(index, value);
        onChanged();
      } else {
        specifiedByBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder setSpecifiedBy(
        int index, com.github.jsdossier.proto.Comment.Builder builderForValue) {
      if (specifiedByBuilder_ == null) {
        ensureSpecifiedByIsMutable();
        specifiedBy_.set(index, builderForValue.build());
        onChanged();
      } else {
        specifiedByBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder addSpecifiedBy(com.github.jsdossier.proto.Comment value) {
      if (specifiedByBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSpecifiedByIsMutable();
        specifiedBy_.add(value);
        onChanged();
      } else {
        specifiedByBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder addSpecifiedBy(
        int index, com.github.jsdossier.proto.Comment value) {
      if (specifiedByBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSpecifiedByIsMutable();
        specifiedBy_.add(index, value);
        onChanged();
      } else {
        specifiedByBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder addSpecifiedBy(
        com.github.jsdossier.proto.Comment.Builder builderForValue) {
      if (specifiedByBuilder_ == null) {
        ensureSpecifiedByIsMutable();
        specifiedBy_.add(builderForValue.build());
        onChanged();
      } else {
        specifiedByBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder addSpecifiedBy(
        int index, com.github.jsdossier.proto.Comment.Builder builderForValue) {
      if (specifiedByBuilder_ == null) {
        ensureSpecifiedByIsMutable();
        specifiedBy_.add(index, builderForValue.build());
        onChanged();
      } else {
        specifiedByBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder addAllSpecifiedBy(
        java.lang.Iterable<? extends com.github.jsdossier.proto.Comment> values) {
      if (specifiedByBuilder_ == null) {
        ensureSpecifiedByIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, specifiedBy_);
        onChanged();
      } else {
        specifiedByBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder clearSpecifiedBy() {
      if (specifiedByBuilder_ == null) {
        specifiedBy_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
      } else {
        specifiedByBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public Builder removeSpecifiedBy(int index) {
      if (specifiedByBuilder_ == null) {
        ensureSpecifiedByIsMutable();
        specifiedBy_.remove(index);
        onChanged();
      } else {
        specifiedByBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment.Builder getSpecifiedByBuilder(
        int index) {
      return getSpecifiedByFieldBuilder().getBuilder(index);
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public com.github.jsdossier.proto.CommentOrBuilder getSpecifiedByOrBuilder(
        int index) {
      if (specifiedByBuilder_ == null) {
        return specifiedBy_.get(index);  } else {
        return specifiedByBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public java.util.List<? extends com.github.jsdossier.proto.CommentOrBuilder> 
         getSpecifiedByOrBuilderList() {
      if (specifiedByBuilder_ != null) {
        return specifiedByBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(specifiedBy_);
      }
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment.Builder addSpecifiedByBuilder() {
      return getSpecifiedByFieldBuilder().addBuilder(
          com.github.jsdossier.proto.Comment.getDefaultInstance());
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public com.github.jsdossier.proto.Comment.Builder addSpecifiedByBuilder(
        int index) {
      return getSpecifiedByFieldBuilder().addBuilder(
          index, com.github.jsdossier.proto.Comment.getDefaultInstance());
    }
    /**
     * <code>repeated .dossier.Comment specified_by = 9;</code>
     *
     * <pre>
     * Interfaces that define this property.
     * </pre>
     */
    public java.util.List<com.github.jsdossier.proto.Comment.Builder> 
         getSpecifiedByBuilderList() {
      return getSpecifiedByFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilder<
        com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder> 
        getSpecifiedByFieldBuilder() {
      if (specifiedByBuilder_ == null) {
        specifiedByBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
            com.github.jsdossier.proto.Comment, com.github.jsdossier.proto.Comment.Builder, com.github.jsdossier.proto.CommentOrBuilder>(
                specifiedBy_,
                ((bitField0_ & 0x00000100) == 0x00000100),
                getParentForChildren(),
                isClean());
        specifiedBy_ = null;
      }
      return specifiedByBuilder_;
    }

    // @@protoc_insertion_point(builder_scope:dossier.BaseProperty)
  }

  static {
    defaultInstance = new BaseProperty(true);
    defaultInstance.initFields();
  }

  // @@protoc_insertion_point(class_scope:dossier.BaseProperty)
}

