// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: src/test/protobuf/test_multiple_files.proto

package org.apache.avro.protobuf.multiplefiles;

/**
 * Protobuf type {@code org.apache.avro.protobuf.multiplefiles.Foo}
 */
public final class Foo extends com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.multiplefiles.Foo)
    FooOrBuilder {
  private static final long serialVersionUID = 0L;

  // Use Foo.newBuilder() to construct.
  private Foo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private Foo() {
    int32_ = 0;
    int64_ = 0L;
    uint32_ = 0;
    uint64_ = 0L;
    sint32_ = 0;
    sint64_ = 0L;
    fixed32_ = 0;
    fixed64_ = 0L;
    sfixed32_ = 0;
    sfixed64_ = 0L;
    float_ = 0F;
    double_ = 0D;
    bool_ = false;
    string_ = "";
    bytes_ = com.google.protobuf.ByteString.EMPTY;
    enum_ = 3;
    intArray_ = java.util.Collections.emptyList();
    fooArray_ = java.util.Collections.emptyList();
    syms_ = java.util.Collections.emptyList();
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    return this.unknownFields;
  }

  private Foo(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new java.lang.NullPointerException();
    }
    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 8: {
          bitField0_ |= 0x00000001;
          int32_ = input.readInt32();
          break;
        }
        case 16: {
          bitField0_ |= 0x00000002;
          int64_ = input.readInt64();
          break;
        }
        case 24: {
          bitField0_ |= 0x00000004;
          uint32_ = input.readUInt32();
          break;
        }
        case 32: {
          bitField0_ |= 0x00000008;
          uint64_ = input.readUInt64();
          break;
        }
        case 40: {
          bitField0_ |= 0x00000010;
          sint32_ = input.readSInt32();
          break;
        }
        case 48: {
          bitField0_ |= 0x00000020;
          sint64_ = input.readSInt64();
          break;
        }
        case 61: {
          bitField0_ |= 0x00000040;
          fixed32_ = input.readFixed32();
          break;
        }
        case 65: {
          bitField0_ |= 0x00000080;
          fixed64_ = input.readFixed64();
          break;
        }
        case 77: {
          bitField0_ |= 0x00000100;
          sfixed32_ = input.readSFixed32();
          break;
        }
        case 81: {
          bitField0_ |= 0x00000200;
          sfixed64_ = input.readSFixed64();
          break;
        }
        case 93: {
          bitField0_ |= 0x00000400;
          float_ = input.readFloat();
          break;
        }
        case 97: {
          bitField0_ |= 0x00000800;
          double_ = input.readDouble();
          break;
        }
        case 104: {
          bitField0_ |= 0x00001000;
          bool_ = input.readBool();
          break;
        }
        case 114: {
          com.google.protobuf.ByteString bs = input.readBytes();
          bitField0_ |= 0x00002000;
          string_ = bs;
          break;
        }
        case 122: {
          bitField0_ |= 0x00004000;
          bytes_ = input.readBytes();
          break;
        }
        case 128: {
          int rawValue = input.readEnum();
          org.apache.avro.protobuf.multiplefiles.A value = org.apache.avro.protobuf.multiplefiles.A.valueOf(rawValue);
          if (value == null) {
            unknownFields.mergeVarintField(16, rawValue);
          } else {
            bitField0_ |= 0x00008000;
            enum_ = rawValue;
          }
          break;
        }
        case 136: {
          if (!((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
            intArray_ = new java.util.ArrayList<java.lang.Integer>();
            mutable_bitField0_ |= 0x00010000;
          }
          intArray_.add(input.readInt32());
          break;
        }
        case 138: {
          int length = input.readRawVarint32();
          int limit = input.pushLimit(length);
          if (!((mutable_bitField0_ & 0x00010000) == 0x00010000) && input.getBytesUntilLimit() > 0) {
            intArray_ = new java.util.ArrayList<java.lang.Integer>();
            mutable_bitField0_ |= 0x00010000;
          }
          while (input.getBytesUntilLimit() > 0) {
            intArray_.add(input.readInt32());
          }
          input.popLimit(limit);
          break;
        }
        case 146: {
          org.apache.avro.protobuf.multiplefiles.Foo.Builder subBuilder = null;
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            subBuilder = foo_.toBuilder();
          }
          foo_ = input.readMessage(org.apache.avro.protobuf.multiplefiles.Foo.PARSER, extensionRegistry);
          if (subBuilder != null) {
            subBuilder.mergeFrom(foo_);
            foo_ = subBuilder.buildPartial();
          }
          bitField0_ |= 0x00010000;
          break;
        }
        case 152: {
          int rawValue = input.readEnum();
          org.apache.avro.protobuf.multiplefiles.A value = org.apache.avro.protobuf.multiplefiles.A.valueOf(rawValue);
          if (value == null) {
            unknownFields.mergeVarintField(19, rawValue);
          } else {
            if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
              syms_ = new java.util.ArrayList<java.lang.Integer>();
              mutable_bitField0_ |= 0x00040000;
            }
            syms_.add(rawValue);
          }
          break;
        }
        case 154: {
          int length = input.readRawVarint32();
          int oldLimit = input.pushLimit(length);
          while (input.getBytesUntilLimit() > 0) {
            int rawValue = input.readEnum();
            org.apache.avro.protobuf.multiplefiles.A value = org.apache.avro.protobuf.multiplefiles.A.valueOf(rawValue);
            if (value == null) {
              unknownFields.mergeVarintField(19, rawValue);
            } else {
              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
                syms_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00040000;
              }
              syms_.add(rawValue);
            }
          }
          input.popLimit(oldLimit);
          break;
        }
        case 162: {
          if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
            fooArray_ = new java.util.ArrayList<org.apache.avro.protobuf.multiplefiles.Foo>();
            mutable_bitField0_ |= 0x00020000;
          }
          fooArray_.add(input.readMessage(org.apache.avro.protobuf.multiplefiles.Foo.PARSER, extensionRegistry));
          break;
        }
        case 170: {
          com.google.protobuf.Timestamp.Builder subBuilder = null;
          if (((bitField0_ & 0x00020000) == 0x00020000)) {
            subBuilder = timestamp_.toBuilder();
          }
          timestamp_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
          if (subBuilder != null) {
            subBuilder.mergeFrom(timestamp_);
            timestamp_ = subBuilder.buildPartial();
          }
          bitField0_ |= 0x00020000;
          break;
        }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
        intArray_ = java.util.Collections.unmodifiableList(intArray_);
      }
      if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
        syms_ = java.util.Collections.unmodifiableList(syms_);
      }
      if (((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
        fooArray_ = java.util.Collections.unmodifiableList(fooArray_);
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }

  public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    return org.apache.avro.protobuf.multiplefiles.TestMultipleFiles.internal_static_org_apache_avro_protobuf_multiplefiles_Foo_descriptor;
  }

  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
    return org.apache.avro.protobuf.multiplefiles.TestMultipleFiles.internal_static_org_apache_avro_protobuf_multiplefiles_Foo_fieldAccessorTable
        .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.multiplefiles.Foo.class,
            org.apache.avro.protobuf.multiplefiles.Foo.Builder.class);
  }

  private int bitField0_;
  public static final int INT32_FIELD_NUMBER = 1;
  private int int32_;

  /**
   * <pre>
   * all the primitive types
   * </pre>
   *
   * <code>required int32 int32 = 1;</code>
   */
  public boolean hasInt32() {
    return ((bitField0_ & 0x00000001) == 0x00000001);
  }

  /**
   * <pre>
   * all the primitive types
   * </pre>
   *
   * <code>required int32 int32 = 1;</code>
   */
  public int getInt32() {
    return int32_;
  }

  public static final int INT64_FIELD_NUMBER = 2;
  private long int64_;

  /**
   * <code>optional int64 int64 = 2;</code>
   */
  public boolean hasInt64() {
    return ((bitField0_ & 0x00000002) == 0x00000002);
  }

  /**
   * <code>optional int64 int64 = 2;</code>
   */
  public long getInt64() {
    return int64_;
  }

  public static final int UINT32_FIELD_NUMBER = 3;
  private int uint32_;

  /**
   * <code>optional uint32 uint32 = 3;</code>
   */
  public boolean hasUint32() {
    return ((bitField0_ & 0x00000004) == 0x00000004);
  }

  /**
   * <code>optional uint32 uint32 = 3;</code>
   */
  public int getUint32() {
    return uint32_;
  }

  public static final int UINT64_FIELD_NUMBER = 4;
  private long uint64_;

  /**
   * <code>optional uint64 uint64 = 4;</code>
   */
  public boolean hasUint64() {
    return ((bitField0_ & 0x00000008) == 0x00000008);
  }

  /**
   * <code>optional uint64 uint64 = 4;</code>
   */
  public long getUint64() {
    return uint64_;
  }

  public static final int SINT32_FIELD_NUMBER = 5;
  private int sint32_;

  /**
   * <code>optional sint32 sint32 = 5;</code>
   */
  public boolean hasSint32() {
    return ((bitField0_ & 0x00000010) == 0x00000010);
  }

  /**
   * <code>optional sint32 sint32 = 5;</code>
   */
  public int getSint32() {
    return sint32_;
  }

  public static final int SINT64_FIELD_NUMBER = 6;
  private long sint64_;

  /**
   * <code>optional sint64 sint64 = 6;</code>
   */
  public boolean hasSint64() {
    return ((bitField0_ & 0x00000020) == 0x00000020);
  }

  /**
   * <code>optional sint64 sint64 = 6;</code>
   */
  public long getSint64() {
    return sint64_;
  }

  public static final int FIXED32_FIELD_NUMBER = 7;
  private int fixed32_;

  /**
   * <code>optional fixed32 fixed32 = 7;</code>
   */
  public boolean hasFixed32() {
    return ((bitField0_ & 0x00000040) == 0x00000040);
  }

  /**
   * <code>optional fixed32 fixed32 = 7;</code>
   */
  public int getFixed32() {
    return fixed32_;
  }

  public static final int FIXED64_FIELD_NUMBER = 8;
  private long fixed64_;

  /**
   * <code>optional fixed64 fixed64 = 8;</code>
   */
  public boolean hasFixed64() {
    return ((bitField0_ & 0x00000080) == 0x00000080);
  }

  /**
   * <code>optional fixed64 fixed64 = 8;</code>
   */
  public long getFixed64() {
    return fixed64_;
  }

  public static final int SFIXED32_FIELD_NUMBER = 9;
  private int sfixed32_;

  /**
   * <code>optional sfixed32 sfixed32 = 9;</code>
   */
  public boolean hasSfixed32() {
    return ((bitField0_ & 0x00000100) == 0x00000100);
  }

  /**
   * <code>optional sfixed32 sfixed32 = 9;</code>
   */
  public int getSfixed32() {
    return sfixed32_;
  }

  public static final int SFIXED64_FIELD_NUMBER = 10;
  private long sfixed64_;

  /**
   * <code>optional sfixed64 sfixed64 = 10;</code>
   */
  public boolean hasSfixed64() {
    return ((bitField0_ & 0x00000200) == 0x00000200);
  }

  /**
   * <code>optional sfixed64 sfixed64 = 10;</code>
   */
  public long getSfixed64() {
    return sfixed64_;
  }

  public static final int FLOAT_FIELD_NUMBER = 11;
  private float float_;

  /**
   * <code>optional float float = 11;</code>
   */
  public boolean hasFloat() {
    return ((bitField0_ & 0x00000400) == 0x00000400);
  }

  /**
   * <code>optional float float = 11;</code>
   */
  public float getFloat() {
    return float_;
  }

  public static final int DOUBLE_FIELD_NUMBER = 12;
  private double double_;

  /**
   * <code>optional double double = 12;</code>
   */
  public boolean hasDouble() {
    return ((bitField0_ & 0x00000800) == 0x00000800);
  }

  /**
   * <code>optional double double = 12;</code>
   */
  public double getDouble() {
    return double_;
  }

  public static final int BOOL_FIELD_NUMBER = 13;
  private boolean bool_;

  /**
   * <code>optional bool bool = 13;</code>
   */
  public boolean hasBool() {
    return ((bitField0_ & 0x00001000) == 0x00001000);
  }

  /**
   * <code>optional bool bool = 13;</code>
   */
  public boolean getBool() {
    return bool_;
  }

  public static final int STRING_FIELD_NUMBER = 14;
  private volatile java.lang.Object string_;

  /**
   * <code>optional string string = 14;</code>
   */
  public boolean hasString() {
    return ((bitField0_ & 0x00002000) == 0x00002000);
  }

  /**
   * <code>optional string string = 14;</code>
   */
  public java.lang.String getString() {
    java.lang.Object ref = string_;
    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()) {
        string_ = s;
      }
      return s;
    }
  }

  /**
   * <code>optional string string = 14;</code>
   */
  public com.google.protobuf.ByteString getStringBytes() {
    java.lang.Object ref = string_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      string_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int BYTES_FIELD_NUMBER = 15;
  private com.google.protobuf.ByteString bytes_;

  /**
   * <code>optional bytes bytes = 15;</code>
   */
  public boolean hasBytes() {
    return ((bitField0_ & 0x00004000) == 0x00004000);
  }

  /**
   * <code>optional bytes bytes = 15;</code>
   */
  public com.google.protobuf.ByteString getBytes() {
    return bytes_;
  }

  public static final int ENUM_FIELD_NUMBER = 16;
  private int enum_;

  /**
   * <code>optional .org.apache.avro.protobuf.multiplefiles.A enum = 16 [default = Z];</code>
   */
  public boolean hasEnum() {
    return ((bitField0_ & 0x00008000) == 0x00008000);
  }

  /**
   * <code>optional .org.apache.avro.protobuf.multiplefiles.A enum = 16 [default = Z];</code>
   */
  public org.apache.avro.protobuf.multiplefiles.A getEnum() {
    org.apache.avro.protobuf.multiplefiles.A result = org.apache.avro.protobuf.multiplefiles.A.valueOf(enum_);
    return result == null ? org.apache.avro.protobuf.multiplefiles.A.Z : result;
  }

  public static final int INTARRAY_FIELD_NUMBER = 17;
  private java.util.List<java.lang.Integer> intArray_;

  /**
   * <pre>
   * some repeated types
   * </pre>
   *
   * <code>repeated int32 intArray = 17;</code>
   */
  public java.util.List<java.lang.Integer> getIntArrayList() {
    return intArray_;
  }

  /**
   * <pre>
   * some repeated types
   * </pre>
   *
   * <code>repeated int32 intArray = 17;</code>
   */
  public int getIntArrayCount() {
    return intArray_.size();
  }

  /**
   * <pre>
   * some repeated types
   * </pre>
   *
   * <code>repeated int32 intArray = 17;</code>
   */
  public int getIntArray(int index) {
    return intArray_.get(index);
  }

  public static final int FOOARRAY_FIELD_NUMBER = 20;
  private java.util.List<org.apache.avro.protobuf.multiplefiles.Foo> fooArray_;

  /**
   * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
   */
  public java.util.List<org.apache.avro.protobuf.multiplefiles.Foo> getFooArrayList() {
    return fooArray_;
  }

  /**
   * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
   */
  public java.util.List<? extends org.apache.avro.protobuf.multiplefiles.FooOrBuilder> getFooArrayOrBuilderList() {
    return fooArray_;
  }

  /**
   * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
   */
  public int getFooArrayCount() {
    return fooArray_.size();
  }

  /**
   * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
   */
  public org.apache.avro.protobuf.multiplefiles.Foo getFooArray(int index) {
    return fooArray_.get(index);
  }

  /**
   * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
   */
  public org.apache.avro.protobuf.multiplefiles.FooOrBuilder getFooArrayOrBuilder(int index) {
    return fooArray_.get(index);
  }

  public static final int SYMS_FIELD_NUMBER = 19;
  private java.util.List<java.lang.Integer> syms_;
  private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, org.apache.avro.protobuf.multiplefiles.A> syms_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, org.apache.avro.protobuf.multiplefiles.A>() {
    public org.apache.avro.protobuf.multiplefiles.A convert(java.lang.Integer from) {
      org.apache.avro.protobuf.multiplefiles.A result = org.apache.avro.protobuf.multiplefiles.A.valueOf(from);
      return result == null ? org.apache.avro.protobuf.multiplefiles.A.X : result;
    }
  };

  /**
   * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
   */
  public java.util.List<org.apache.avro.protobuf.multiplefiles.A> getSymsList() {
    return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, org.apache.avro.protobuf.multiplefiles.A>(
        syms_, syms_converter_);
  }

  /**
   * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
   */
  public int getSymsCount() {
    return syms_.size();
  }

  /**
   * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
   */
  public org.apache.avro.protobuf.multiplefiles.A getSyms(int index) {
    return syms_converter_.convert(syms_.get(index));
  }

  public static final int FOO_FIELD_NUMBER = 18;
  private org.apache.avro.protobuf.multiplefiles.Foo foo_;

  /**
   * <pre>
   * a recursive type
   * </pre>
   *
   * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
   */
  public boolean hasFoo() {
    return ((bitField0_ & 0x00010000) == 0x00010000);
  }

  /**
   * <pre>
   * a recursive type
   * </pre>
   *
   * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
   */
  public org.apache.avro.protobuf.multiplefiles.Foo getFoo() {
    return foo_ == null ? org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance() : foo_;
  }

  /**
   * <pre>
   * a recursive type
   * </pre>
   *
   * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
   */
  public org.apache.avro.protobuf.multiplefiles.FooOrBuilder getFooOrBuilder() {
    return foo_ == null ? org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance() : foo_;
  }

  public static final int TIMESTAMP_FIELD_NUMBER = 21;
  private com.google.protobuf.Timestamp timestamp_;

  /**
   * <pre>
   * a predefined message type
   * </pre>
   *
   * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
   */
  public boolean hasTimestamp() {
    return ((bitField0_ & 0x00020000) == 0x00020000);
  }

  /**
   * <pre>
   * a predefined message type
   * </pre>
   *
   * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
   */
  public com.google.protobuf.Timestamp getTimestamp() {
    return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_;
  }

  /**
   * <pre>
   * a predefined message type
   * </pre>
   *
   * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
   */
  public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() {
    return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_;
  }

  private byte memoizedIsInitialized = -1;

  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1)
      return true;
    if (isInitialized == 0)
      return false;

    if (!hasInt32()) {
      memoizedIsInitialized = 0;
      return false;
    }
    for (int i = 0; i < getFooArrayCount(); i++) {
      if (!getFooArray(i).isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
    }
    if (hasFoo()) {
      if (!getFoo().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
    }
    memoizedIsInitialized = 1;
    return true;
  }

  public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
    if (((bitField0_ & 0x00000001) == 0x00000001)) {
      output.writeInt32(1, int32_);
    }
    if (((bitField0_ & 0x00000002) == 0x00000002)) {
      output.writeInt64(2, int64_);
    }
    if (((bitField0_ & 0x00000004) == 0x00000004)) {
      output.writeUInt32(3, uint32_);
    }
    if (((bitField0_ & 0x00000008) == 0x00000008)) {
      output.writeUInt64(4, uint64_);
    }
    if (((bitField0_ & 0x00000010) == 0x00000010)) {
      output.writeSInt32(5, sint32_);
    }
    if (((bitField0_ & 0x00000020) == 0x00000020)) {
      output.writeSInt64(6, sint64_);
    }
    if (((bitField0_ & 0x00000040) == 0x00000040)) {
      output.writeFixed32(7, fixed32_);
    }
    if (((bitField0_ & 0x00000080) == 0x00000080)) {
      output.writeFixed64(8, fixed64_);
    }
    if (((bitField0_ & 0x00000100) == 0x00000100)) {
      output.writeSFixed32(9, sfixed32_);
    }
    if (((bitField0_ & 0x00000200) == 0x00000200)) {
      output.writeSFixed64(10, sfixed64_);
    }
    if (((bitField0_ & 0x00000400) == 0x00000400)) {
      output.writeFloat(11, float_);
    }
    if (((bitField0_ & 0x00000800) == 0x00000800)) {
      output.writeDouble(12, double_);
    }
    if (((bitField0_ & 0x00001000) == 0x00001000)) {
      output.writeBool(13, bool_);
    }
    if (((bitField0_ & 0x00002000) == 0x00002000)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 14, string_);
    }
    if (((bitField0_ & 0x00004000) == 0x00004000)) {
      output.writeBytes(15, bytes_);
    }
    if (((bitField0_ & 0x00008000) == 0x00008000)) {
      output.writeEnum(16, enum_);
    }
    for (int i = 0; i < intArray_.size(); i++) {
      output.writeInt32(17, intArray_.get(i));
    }
    if (((bitField0_ & 0x00010000) == 0x00010000)) {
      output.writeMessage(18, getFoo());
    }
    for (int i = 0; i < syms_.size(); i++) {
      output.writeEnum(19, syms_.get(i));
    }
    for (int i = 0; i < fooArray_.size(); i++) {
      output.writeMessage(20, fooArray_.get(i));
    }
    if (((bitField0_ & 0x00020000) == 0x00020000)) {
      output.writeMessage(21, getTimestamp());
    }
    unknownFields.writeTo(output);
  }

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

    size = 0;
    if (((bitField0_ & 0x00000001) == 0x00000001)) {
      size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, int32_);
    }
    if (((bitField0_ & 0x00000002) == 0x00000002)) {
      size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, int64_);
    }
    if (((bitField0_ & 0x00000004) == 0x00000004)) {
      size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, uint32_);
    }
    if (((bitField0_ & 0x00000008) == 0x00000008)) {
      size += com.google.protobuf.CodedOutputStream.computeUInt64Size(4, uint64_);
    }
    if (((bitField0_ & 0x00000010) == 0x00000010)) {
      size += com.google.protobuf.CodedOutputStream.computeSInt32Size(5, sint32_);
    }
    if (((bitField0_ & 0x00000020) == 0x00000020)) {
      size += com.google.protobuf.CodedOutputStream.computeSInt64Size(6, sint64_);
    }
    if (((bitField0_ & 0x00000040) == 0x00000040)) {
      size += com.google.protobuf.CodedOutputStream.computeFixed32Size(7, fixed32_);
    }
    if (((bitField0_ & 0x00000080) == 0x00000080)) {
      size += com.google.protobuf.CodedOutputStream.computeFixed64Size(8, fixed64_);
    }
    if (((bitField0_ & 0x00000100) == 0x00000100)) {
      size += com.google.protobuf.CodedOutputStream.computeSFixed32Size(9, sfixed32_);
    }
    if (((bitField0_ & 0x00000200) == 0x00000200)) {
      size += com.google.protobuf.CodedOutputStream.computeSFixed64Size(10, sfixed64_);
    }
    if (((bitField0_ & 0x00000400) == 0x00000400)) {
      size += com.google.protobuf.CodedOutputStream.computeFloatSize(11, float_);
    }
    if (((bitField0_ & 0x00000800) == 0x00000800)) {
      size += com.google.protobuf.CodedOutputStream.computeDoubleSize(12, double_);
    }
    if (((bitField0_ & 0x00001000) == 0x00001000)) {
      size += com.google.protobuf.CodedOutputStream.computeBoolSize(13, bool_);
    }
    if (((bitField0_ & 0x00002000) == 0x00002000)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, string_);
    }
    if (((bitField0_ & 0x00004000) == 0x00004000)) {
      size += com.google.protobuf.CodedOutputStream.computeBytesSize(15, bytes_);
    }
    if (((bitField0_ & 0x00008000) == 0x00008000)) {
      size += com.google.protobuf.CodedOutputStream.computeEnumSize(16, enum_);
    }
    {
      int dataSize = 0;
      for (int i = 0; i < intArray_.size(); i++) {
        dataSize += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(intArray_.get(i));
      }
      size += dataSize;
      size += 2 * getIntArrayList().size();
    }
    if (((bitField0_ & 0x00010000) == 0x00010000)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(18, getFoo());
    }
    {
      int dataSize = 0;
      for (int i = 0; i < syms_.size(); i++) {
        dataSize += com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(syms_.get(i));
      }
      size += dataSize;
      size += 2 * syms_.size();
    }
    for (int i = 0; i < fooArray_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(20, fooArray_.get(i));
    }
    if (((bitField0_ & 0x00020000) == 0x00020000)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(21, getTimestamp());
    }
    size += unknownFields.getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof org.apache.avro.protobuf.multiplefiles.Foo)) {
      return super.equals(obj);
    }
    org.apache.avro.protobuf.multiplefiles.Foo other = (org.apache.avro.protobuf.multiplefiles.Foo) obj;

    boolean result = true;
    result = result && (hasInt32() == other.hasInt32());
    if (hasInt32()) {
      result = result && (getInt32() == other.getInt32());
    }
    result = result && (hasInt64() == other.hasInt64());
    if (hasInt64()) {
      result = result && (getInt64() == other.getInt64());
    }
    result = result && (hasUint32() == other.hasUint32());
    if (hasUint32()) {
      result = result && (getUint32() == other.getUint32());
    }
    result = result && (hasUint64() == other.hasUint64());
    if (hasUint64()) {
      result = result && (getUint64() == other.getUint64());
    }
    result = result && (hasSint32() == other.hasSint32());
    if (hasSint32()) {
      result = result && (getSint32() == other.getSint32());
    }
    result = result && (hasSint64() == other.hasSint64());
    if (hasSint64()) {
      result = result && (getSint64() == other.getSint64());
    }
    result = result && (hasFixed32() == other.hasFixed32());
    if (hasFixed32()) {
      result = result && (getFixed32() == other.getFixed32());
    }
    result = result && (hasFixed64() == other.hasFixed64());
    if (hasFixed64()) {
      result = result && (getFixed64() == other.getFixed64());
    }
    result = result && (hasSfixed32() == other.hasSfixed32());
    if (hasSfixed32()) {
      result = result && (getSfixed32() == other.getSfixed32());
    }
    result = result && (hasSfixed64() == other.hasSfixed64());
    if (hasSfixed64()) {
      result = result && (getSfixed64() == other.getSfixed64());
    }
    result = result && (hasFloat() == other.hasFloat());
    if (hasFloat()) {
      result = result
          && (java.lang.Float.floatToIntBits(getFloat()) == java.lang.Float.floatToIntBits(other.getFloat()));
    }
    result = result && (hasDouble() == other.hasDouble());
    if (hasDouble()) {
      result = result
          && (java.lang.Double.doubleToLongBits(getDouble()) == java.lang.Double.doubleToLongBits(other.getDouble()));
    }
    result = result && (hasBool() == other.hasBool());
    if (hasBool()) {
      result = result && (getBool() == other.getBool());
    }
    result = result && (hasString() == other.hasString());
    if (hasString()) {
      result = result && getString().equals(other.getString());
    }
    result = result && (hasBytes() == other.hasBytes());
    if (hasBytes()) {
      result = result && getBytes().equals(other.getBytes());
    }
    result = result && (hasEnum() == other.hasEnum());
    if (hasEnum()) {
      result = result && enum_ == other.enum_;
    }
    result = result && getIntArrayList().equals(other.getIntArrayList());
    result = result && getFooArrayList().equals(other.getFooArrayList());
    result = result && syms_.equals(other.syms_);
    result = result && (hasFoo() == other.hasFoo());
    if (hasFoo()) {
      result = result && getFoo().equals(other.getFoo());
    }
    result = result && (hasTimestamp() == other.hasTimestamp());
    if (hasTimestamp()) {
      result = result && getTimestamp().equals(other.getTimestamp());
    }
    result = result && unknownFields.equals(other.unknownFields);
    return result;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (hasInt32()) {
      hash = (37 * hash) + INT32_FIELD_NUMBER;
      hash = (53 * hash) + getInt32();
    }
    if (hasInt64()) {
      hash = (37 * hash) + INT64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getInt64());
    }
    if (hasUint32()) {
      hash = (37 * hash) + UINT32_FIELD_NUMBER;
      hash = (53 * hash) + getUint32();
    }
    if (hasUint64()) {
      hash = (37 * hash) + UINT64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getUint64());
    }
    if (hasSint32()) {
      hash = (37 * hash) + SINT32_FIELD_NUMBER;
      hash = (53 * hash) + getSint32();
    }
    if (hasSint64()) {
      hash = (37 * hash) + SINT64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getSint64());
    }
    if (hasFixed32()) {
      hash = (37 * hash) + FIXED32_FIELD_NUMBER;
      hash = (53 * hash) + getFixed32();
    }
    if (hasFixed64()) {
      hash = (37 * hash) + FIXED64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getFixed64());
    }
    if (hasSfixed32()) {
      hash = (37 * hash) + SFIXED32_FIELD_NUMBER;
      hash = (53 * hash) + getSfixed32();
    }
    if (hasSfixed64()) {
      hash = (37 * hash) + SFIXED64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getSfixed64());
    }
    if (hasFloat()) {
      hash = (37 * hash) + FLOAT_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(getFloat());
    }
    if (hasDouble()) {
      hash = (37 * hash) + DOUBLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getDouble()));
    }
    if (hasBool()) {
      hash = (37 * hash) + BOOL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getBool());
    }
    if (hasString()) {
      hash = (37 * hash) + STRING_FIELD_NUMBER;
      hash = (53 * hash) + getString().hashCode();
    }
    if (hasBytes()) {
      hash = (37 * hash) + BYTES_FIELD_NUMBER;
      hash = (53 * hash) + getBytes().hashCode();
    }
    if (hasEnum()) {
      hash = (37 * hash) + ENUM_FIELD_NUMBER;
      hash = (53 * hash) + enum_;
    }
    if (getIntArrayCount() > 0) {
      hash = (37 * hash) + INTARRAY_FIELD_NUMBER;
      hash = (53 * hash) + getIntArrayList().hashCode();
    }
    if (getFooArrayCount() > 0) {
      hash = (37 * hash) + FOOARRAY_FIELD_NUMBER;
      hash = (53 * hash) + getFooArrayList().hashCode();
    }
    if (getSymsCount() > 0) {
      hash = (37 * hash) + SYMS_FIELD_NUMBER;
      hash = (53 * hash) + syms_.hashCode();
    }
    if (hasFoo()) {
      hash = (37 * hash) + FOO_FIELD_NUMBER;
      hash = (53 * hash) + getFoo().hashCode();
    }
    if (hasTimestamp()) {
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + getTimestamp().hashCode();
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo parseFrom(java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo parseFrom(java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo parseFrom(com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo parseFrom(com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo parseFrom(byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo 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 org.apache.avro.protobuf.multiplefiles.Foo parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo 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 org.apache.avro.protobuf.multiplefiles.Foo parseFrom(com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo parseFrom(com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
  }

  public Builder newBuilderForType() {
    return newBuilder();
  }

  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }

  public static Builder newBuilder(org.apache.avro.protobuf.multiplefiles.Foo prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }

  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 org.apache.avro.protobuf.multiplefiles.Foo}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:org.apache.avro.protobuf.multiplefiles.Foo)
      org.apache.avro.protobuf.multiplefiles.FooOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return org.apache.avro.protobuf.multiplefiles.TestMultipleFiles.internal_static_org_apache_avro_protobuf_multiplefiles_Foo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
      return org.apache.avro.protobuf.multiplefiles.TestMultipleFiles.internal_static_org_apache_avro_protobuf_multiplefiles_Foo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.multiplefiles.Foo.class,
              org.apache.avro.protobuf.multiplefiles.Foo.Builder.class);
    }

    // Construct using org.apache.avro.protobuf.multiplefiles.Foo.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

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

    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
        getFooArrayFieldBuilder();
        getFooFieldBuilder();
        getTimestampFieldBuilder();
      }
    }

    public Builder clear() {
      super.clear();
      int32_ = 0;
      bitField0_ = (bitField0_ & ~0x00000001);
      int64_ = 0L;
      bitField0_ = (bitField0_ & ~0x00000002);
      uint32_ = 0;
      bitField0_ = (bitField0_ & ~0x00000004);
      uint64_ = 0L;
      bitField0_ = (bitField0_ & ~0x00000008);
      sint32_ = 0;
      bitField0_ = (bitField0_ & ~0x00000010);
      sint64_ = 0L;
      bitField0_ = (bitField0_ & ~0x00000020);
      fixed32_ = 0;
      bitField0_ = (bitField0_ & ~0x00000040);
      fixed64_ = 0L;
      bitField0_ = (bitField0_ & ~0x00000080);
      sfixed32_ = 0;
      bitField0_ = (bitField0_ & ~0x00000100);
      sfixed64_ = 0L;
      bitField0_ = (bitField0_ & ~0x00000200);
      float_ = 0F;
      bitField0_ = (bitField0_ & ~0x00000400);
      double_ = 0D;
      bitField0_ = (bitField0_ & ~0x00000800);
      bool_ = false;
      bitField0_ = (bitField0_ & ~0x00001000);
      string_ = "";
      bitField0_ = (bitField0_ & ~0x00002000);
      bytes_ = com.google.protobuf.ByteString.EMPTY;
      bitField0_ = (bitField0_ & ~0x00004000);
      enum_ = 3;
      bitField0_ = (bitField0_ & ~0x00008000);
      intArray_ = java.util.Collections.emptyList();
      bitField0_ = (bitField0_ & ~0x00010000);
      if (fooArrayBuilder_ == null) {
        fooArray_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00020000);
      } else {
        fooArrayBuilder_.clear();
      }
      syms_ = java.util.Collections.emptyList();
      bitField0_ = (bitField0_ & ~0x00040000);
      if (fooBuilder_ == null) {
        foo_ = null;
      } else {
        fooBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00080000);
      if (timestampBuilder_ == null) {
        timestamp_ = null;
      } else {
        timestampBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00100000);
      return this;
    }

    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return org.apache.avro.protobuf.multiplefiles.TestMultipleFiles.internal_static_org_apache_avro_protobuf_multiplefiles_Foo_descriptor;
    }

    public org.apache.avro.protobuf.multiplefiles.Foo getDefaultInstanceForType() {
      return org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance();
    }

    public org.apache.avro.protobuf.multiplefiles.Foo build() {
      org.apache.avro.protobuf.multiplefiles.Foo result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    public org.apache.avro.protobuf.multiplefiles.Foo buildPartial() {
      org.apache.avro.protobuf.multiplefiles.Foo result = new org.apache.avro.protobuf.multiplefiles.Foo(this);
      int from_bitField0_ = bitField0_;
      int to_bitField0_ = 0;
      if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
        to_bitField0_ |= 0x00000001;
      }
      result.int32_ = int32_;
      if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
        to_bitField0_ |= 0x00000002;
      }
      result.int64_ = int64_;
      if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
        to_bitField0_ |= 0x00000004;
      }
      result.uint32_ = uint32_;
      if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
        to_bitField0_ |= 0x00000008;
      }
      result.uint64_ = uint64_;
      if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
        to_bitField0_ |= 0x00000010;
      }
      result.sint32_ = sint32_;
      if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
        to_bitField0_ |= 0x00000020;
      }
      result.sint64_ = sint64_;
      if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
        to_bitField0_ |= 0x00000040;
      }
      result.fixed32_ = fixed32_;
      if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
        to_bitField0_ |= 0x00000080;
      }
      result.fixed64_ = fixed64_;
      if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
        to_bitField0_ |= 0x00000100;
      }
      result.sfixed32_ = sfixed32_;
      if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
        to_bitField0_ |= 0x00000200;
      }
      result.sfixed64_ = sfixed64_;
      if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
        to_bitField0_ |= 0x00000400;
      }
      result.float_ = float_;
      if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
        to_bitField0_ |= 0x00000800;
      }
      result.double_ = double_;
      if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
        to_bitField0_ |= 0x00001000;
      }
      result.bool_ = bool_;
      if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
        to_bitField0_ |= 0x00002000;
      }
      result.string_ = string_;
      if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
        to_bitField0_ |= 0x00004000;
      }
      result.bytes_ = bytes_;
      if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
        to_bitField0_ |= 0x00008000;
      }
      result.enum_ = enum_;
      if (((bitField0_ & 0x00010000) == 0x00010000)) {
        intArray_ = java.util.Collections.unmodifiableList(intArray_);
        bitField0_ = (bitField0_ & ~0x00010000);
      }
      result.intArray_ = intArray_;
      if (fooArrayBuilder_ == null) {
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          fooArray_ = java.util.Collections.unmodifiableList(fooArray_);
          bitField0_ = (bitField0_ & ~0x00020000);
        }
        result.fooArray_ = fooArray_;
      } else {
        result.fooArray_ = fooArrayBuilder_.build();
      }
      if (((bitField0_ & 0x00040000) == 0x00040000)) {
        syms_ = java.util.Collections.unmodifiableList(syms_);
        bitField0_ = (bitField0_ & ~0x00040000);
      }
      result.syms_ = syms_;
      if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
        to_bitField0_ |= 0x00010000;
      }
      if (fooBuilder_ == null) {
        result.foo_ = foo_;
      } else {
        result.foo_ = fooBuilder_.build();
      }
      if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
        to_bitField0_ |= 0x00020000;
      }
      if (timestampBuilder_ == null) {
        result.timestamp_ = timestamp_;
      } else {
        result.timestamp_ = timestampBuilder_.build();
      }
      result.bitField0_ = to_bitField0_;
      onBuilt();
      return result;
    }

    public Builder clone() {
      return (Builder) super.clone();
    }

    public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return (Builder) super.setField(field, value);
    }

    public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
      return (Builder) super.clearField(field);
    }

    public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return (Builder) super.clearOneof(oneof);
    }

    public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index,
        java.lang.Object value) {
      return (Builder) super.setRepeatedField(field, index, value);
    }

    public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return (Builder) super.addRepeatedField(field, value);
    }

    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof org.apache.avro.protobuf.multiplefiles.Foo) {
        return mergeFrom((org.apache.avro.protobuf.multiplefiles.Foo) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(org.apache.avro.protobuf.multiplefiles.Foo other) {
      if (other == org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance())
        return this;
      if (other.hasInt32()) {
        setInt32(other.getInt32());
      }
      if (other.hasInt64()) {
        setInt64(other.getInt64());
      }
      if (other.hasUint32()) {
        setUint32(other.getUint32());
      }
      if (other.hasUint64()) {
        setUint64(other.getUint64());
      }
      if (other.hasSint32()) {
        setSint32(other.getSint32());
      }
      if (other.hasSint64()) {
        setSint64(other.getSint64());
      }
      if (other.hasFixed32()) {
        setFixed32(other.getFixed32());
      }
      if (other.hasFixed64()) {
        setFixed64(other.getFixed64());
      }
      if (other.hasSfixed32()) {
        setSfixed32(other.getSfixed32());
      }
      if (other.hasSfixed64()) {
        setSfixed64(other.getSfixed64());
      }
      if (other.hasFloat()) {
        setFloat(other.getFloat());
      }
      if (other.hasDouble()) {
        setDouble(other.getDouble());
      }
      if (other.hasBool()) {
        setBool(other.getBool());
      }
      if (other.hasString()) {
        bitField0_ |= 0x00002000;
        string_ = other.string_;
        onChanged();
      }
      if (other.hasBytes()) {
        setBytes(other.getBytes());
      }
      if (other.hasEnum()) {
        setEnum(other.getEnum());
      }
      if (!other.intArray_.isEmpty()) {
        if (intArray_.isEmpty()) {
          intArray_ = other.intArray_;
          bitField0_ = (bitField0_ & ~0x00010000);
        } else {
          ensureIntArrayIsMutable();
          intArray_.addAll(other.intArray_);
        }
        onChanged();
      }
      if (fooArrayBuilder_ == null) {
        if (!other.fooArray_.isEmpty()) {
          if (fooArray_.isEmpty()) {
            fooArray_ = other.fooArray_;
            bitField0_ = (bitField0_ & ~0x00020000);
          } else {
            ensureFooArrayIsMutable();
            fooArray_.addAll(other.fooArray_);
          }
          onChanged();
        }
      } else {
        if (!other.fooArray_.isEmpty()) {
          if (fooArrayBuilder_.isEmpty()) {
            fooArrayBuilder_.dispose();
            fooArrayBuilder_ = null;
            fooArray_ = other.fooArray_;
            bitField0_ = (bitField0_ & ~0x00020000);
            fooArrayBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getFooArrayFieldBuilder()
                : null;
          } else {
            fooArrayBuilder_.addAllMessages(other.fooArray_);
          }
        }
      }
      if (!other.syms_.isEmpty()) {
        if (syms_.isEmpty()) {
          syms_ = other.syms_;
          bitField0_ = (bitField0_ & ~0x00040000);
        } else {
          ensureSymsIsMutable();
          syms_.addAll(other.syms_);
        }
        onChanged();
      }
      if (other.hasFoo()) {
        mergeFoo(other.getFoo());
      }
      if (other.hasTimestamp()) {
        mergeTimestamp(other.getTimestamp());
      }
      this.mergeUnknownFields(other.unknownFields);
      onChanged();
      return this;
    }

    public final boolean isInitialized() {
      if (!hasInt32()) {
        return false;
      }
      for (int i = 0; i < getFooArrayCount(); i++) {
        if (!getFooArray(i).isInitialized()) {
          return false;
        }
      }
      if (hasFoo()) {
        if (!getFoo().isInitialized()) {
          return false;
        }
      }
      return true;
    }

    public Builder mergeFrom(com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
      org.apache.avro.protobuf.multiplefiles.Foo parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (org.apache.avro.protobuf.multiplefiles.Foo) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }

    private int bitField0_;

    private int int32_;

    /**
     * <pre>
     * all the primitive types
     * </pre>
     *
     * <code>required int32 int32 = 1;</code>
     */
    public boolean hasInt32() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }

    /**
     * <pre>
     * all the primitive types
     * </pre>
     *
     * <code>required int32 int32 = 1;</code>
     */
    public int getInt32() {
      return int32_;
    }

    /**
     * <pre>
     * all the primitive types
     * </pre>
     *
     * <code>required int32 int32 = 1;</code>
     */
    public Builder setInt32(int value) {
      bitField0_ |= 0x00000001;
      int32_ = value;
      onChanged();
      return this;
    }

    /**
     * <pre>
     * all the primitive types
     * </pre>
     *
     * <code>required int32 int32 = 1;</code>
     */
    public Builder clearInt32() {
      bitField0_ = (bitField0_ & ~0x00000001);
      int32_ = 0;
      onChanged();
      return this;
    }

    private long int64_;

    /**
     * <code>optional int64 int64 = 2;</code>
     */
    public boolean hasInt64() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }

    /**
     * <code>optional int64 int64 = 2;</code>
     */
    public long getInt64() {
      return int64_;
    }

    /**
     * <code>optional int64 int64 = 2;</code>
     */
    public Builder setInt64(long value) {
      bitField0_ |= 0x00000002;
      int64_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional int64 int64 = 2;</code>
     */
    public Builder clearInt64() {
      bitField0_ = (bitField0_ & ~0x00000002);
      int64_ = 0L;
      onChanged();
      return this;
    }

    private int uint32_;

    /**
     * <code>optional uint32 uint32 = 3;</code>
     */
    public boolean hasUint32() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }

    /**
     * <code>optional uint32 uint32 = 3;</code>
     */
    public int getUint32() {
      return uint32_;
    }

    /**
     * <code>optional uint32 uint32 = 3;</code>
     */
    public Builder setUint32(int value) {
      bitField0_ |= 0x00000004;
      uint32_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional uint32 uint32 = 3;</code>
     */
    public Builder clearUint32() {
      bitField0_ = (bitField0_ & ~0x00000004);
      uint32_ = 0;
      onChanged();
      return this;
    }

    private long uint64_;

    /**
     * <code>optional uint64 uint64 = 4;</code>
     */
    public boolean hasUint64() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }

    /**
     * <code>optional uint64 uint64 = 4;</code>
     */
    public long getUint64() {
      return uint64_;
    }

    /**
     * <code>optional uint64 uint64 = 4;</code>
     */
    public Builder setUint64(long value) {
      bitField0_ |= 0x00000008;
      uint64_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional uint64 uint64 = 4;</code>
     */
    public Builder clearUint64() {
      bitField0_ = (bitField0_ & ~0x00000008);
      uint64_ = 0L;
      onChanged();
      return this;
    }

    private int sint32_;

    /**
     * <code>optional sint32 sint32 = 5;</code>
     */
    public boolean hasSint32() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }

    /**
     * <code>optional sint32 sint32 = 5;</code>
     */
    public int getSint32() {
      return sint32_;
    }

    /**
     * <code>optional sint32 sint32 = 5;</code>
     */
    public Builder setSint32(int value) {
      bitField0_ |= 0x00000010;
      sint32_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional sint32 sint32 = 5;</code>
     */
    public Builder clearSint32() {
      bitField0_ = (bitField0_ & ~0x00000010);
      sint32_ = 0;
      onChanged();
      return this;
    }

    private long sint64_;

    /**
     * <code>optional sint64 sint64 = 6;</code>
     */
    public boolean hasSint64() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }

    /**
     * <code>optional sint64 sint64 = 6;</code>
     */
    public long getSint64() {
      return sint64_;
    }

    /**
     * <code>optional sint64 sint64 = 6;</code>
     */
    public Builder setSint64(long value) {
      bitField0_ |= 0x00000020;
      sint64_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional sint64 sint64 = 6;</code>
     */
    public Builder clearSint64() {
      bitField0_ = (bitField0_ & ~0x00000020);
      sint64_ = 0L;
      onChanged();
      return this;
    }

    private int fixed32_;

    /**
     * <code>optional fixed32 fixed32 = 7;</code>
     */
    public boolean hasFixed32() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }

    /**
     * <code>optional fixed32 fixed32 = 7;</code>
     */
    public int getFixed32() {
      return fixed32_;
    }

    /**
     * <code>optional fixed32 fixed32 = 7;</code>
     */
    public Builder setFixed32(int value) {
      bitField0_ |= 0x00000040;
      fixed32_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional fixed32 fixed32 = 7;</code>
     */
    public Builder clearFixed32() {
      bitField0_ = (bitField0_ & ~0x00000040);
      fixed32_ = 0;
      onChanged();
      return this;
    }

    private long fixed64_;

    /**
     * <code>optional fixed64 fixed64 = 8;</code>
     */
    public boolean hasFixed64() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }

    /**
     * <code>optional fixed64 fixed64 = 8;</code>
     */
    public long getFixed64() {
      return fixed64_;
    }

    /**
     * <code>optional fixed64 fixed64 = 8;</code>
     */
    public Builder setFixed64(long value) {
      bitField0_ |= 0x00000080;
      fixed64_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional fixed64 fixed64 = 8;</code>
     */
    public Builder clearFixed64() {
      bitField0_ = (bitField0_ & ~0x00000080);
      fixed64_ = 0L;
      onChanged();
      return this;
    }

    private int sfixed32_;

    /**
     * <code>optional sfixed32 sfixed32 = 9;</code>
     */
    public boolean hasSfixed32() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }

    /**
     * <code>optional sfixed32 sfixed32 = 9;</code>
     */
    public int getSfixed32() {
      return sfixed32_;
    }

    /**
     * <code>optional sfixed32 sfixed32 = 9;</code>
     */
    public Builder setSfixed32(int value) {
      bitField0_ |= 0x00000100;
      sfixed32_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional sfixed32 sfixed32 = 9;</code>
     */
    public Builder clearSfixed32() {
      bitField0_ = (bitField0_ & ~0x00000100);
      sfixed32_ = 0;
      onChanged();
      return this;
    }

    private long sfixed64_;

    /**
     * <code>optional sfixed64 sfixed64 = 10;</code>
     */
    public boolean hasSfixed64() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }

    /**
     * <code>optional sfixed64 sfixed64 = 10;</code>
     */
    public long getSfixed64() {
      return sfixed64_;
    }

    /**
     * <code>optional sfixed64 sfixed64 = 10;</code>
     */
    public Builder setSfixed64(long value) {
      bitField0_ |= 0x00000200;
      sfixed64_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional sfixed64 sfixed64 = 10;</code>
     */
    public Builder clearSfixed64() {
      bitField0_ = (bitField0_ & ~0x00000200);
      sfixed64_ = 0L;
      onChanged();
      return this;
    }

    private float float_;

    /**
     * <code>optional float float = 11;</code>
     */
    public boolean hasFloat() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }

    /**
     * <code>optional float float = 11;</code>
     */
    public float getFloat() {
      return float_;
    }

    /**
     * <code>optional float float = 11;</code>
     */
    public Builder setFloat(float value) {
      bitField0_ |= 0x00000400;
      float_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional float float = 11;</code>
     */
    public Builder clearFloat() {
      bitField0_ = (bitField0_ & ~0x00000400);
      float_ = 0F;
      onChanged();
      return this;
    }

    private double double_;

    /**
     * <code>optional double double = 12;</code>
     */
    public boolean hasDouble() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }

    /**
     * <code>optional double double = 12;</code>
     */
    public double getDouble() {
      return double_;
    }

    /**
     * <code>optional double double = 12;</code>
     */
    public Builder setDouble(double value) {
      bitField0_ |= 0x00000800;
      double_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional double double = 12;</code>
     */
    public Builder clearDouble() {
      bitField0_ = (bitField0_ & ~0x00000800);
      double_ = 0D;
      onChanged();
      return this;
    }

    private boolean bool_;

    /**
     * <code>optional bool bool = 13;</code>
     */
    public boolean hasBool() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }

    /**
     * <code>optional bool bool = 13;</code>
     */
    public boolean getBool() {
      return bool_;
    }

    /**
     * <code>optional bool bool = 13;</code>
     */
    public Builder setBool(boolean value) {
      bitField0_ |= 0x00001000;
      bool_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional bool bool = 13;</code>
     */
    public Builder clearBool() {
      bitField0_ = (bitField0_ & ~0x00001000);
      bool_ = false;
      onChanged();
      return this;
    }

    private java.lang.Object string_ = "";

    /**
     * <code>optional string string = 14;</code>
     */
    public boolean hasString() {
      return ((bitField0_ & 0x00002000) == 0x00002000);
    }

    /**
     * <code>optional string string = 14;</code>
     */
    public java.lang.String getString() {
      java.lang.Object ref = string_;
      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()) {
          string_ = s;
        }
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }

    /**
     * <code>optional string string = 14;</code>
     */
    public com.google.protobuf.ByteString getStringBytes() {
      java.lang.Object ref = string_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        string_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    /**
     * <code>optional string string = 14;</code>
     */
    public Builder setString(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00002000;
      string_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional string string = 14;</code>
     */
    public Builder clearString() {
      bitField0_ = (bitField0_ & ~0x00002000);
      string_ = getDefaultInstance().getString();
      onChanged();
      return this;
    }

    /**
     * <code>optional string string = 14;</code>
     */
    public Builder setStringBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00002000;
      string_ = value;
      onChanged();
      return this;
    }

    private com.google.protobuf.ByteString bytes_ = com.google.protobuf.ByteString.EMPTY;

    /**
     * <code>optional bytes bytes = 15;</code>
     */
    public boolean hasBytes() {
      return ((bitField0_ & 0x00004000) == 0x00004000);
    }

    /**
     * <code>optional bytes bytes = 15;</code>
     */
    public com.google.protobuf.ByteString getBytes() {
      return bytes_;
    }

    /**
     * <code>optional bytes bytes = 15;</code>
     */
    public Builder setBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00004000;
      bytes_ = value;
      onChanged();
      return this;
    }

    /**
     * <code>optional bytes bytes = 15;</code>
     */
    public Builder clearBytes() {
      bitField0_ = (bitField0_ & ~0x00004000);
      bytes_ = getDefaultInstance().getBytes();
      onChanged();
      return this;
    }

    private int enum_ = 3;

    /**
     * <code>optional .org.apache.avro.protobuf.multiplefiles.A enum = 16 [default = Z];</code>
     */
    public boolean hasEnum() {
      return ((bitField0_ & 0x00008000) == 0x00008000);
    }

    /**
     * <code>optional .org.apache.avro.protobuf.multiplefiles.A enum = 16 [default = Z];</code>
     */
    public org.apache.avro.protobuf.multiplefiles.A getEnum() {
      org.apache.avro.protobuf.multiplefiles.A result = org.apache.avro.protobuf.multiplefiles.A.valueOf(enum_);
      return result == null ? org.apache.avro.protobuf.multiplefiles.A.Z : result;
    }

    /**
     * <code>optional .org.apache.avro.protobuf.multiplefiles.A enum = 16 [default = Z];</code>
     */
    public Builder setEnum(org.apache.avro.protobuf.multiplefiles.A value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00008000;
      enum_ = value.getNumber();
      onChanged();
      return this;
    }

    /**
     * <code>optional .org.apache.avro.protobuf.multiplefiles.A enum = 16 [default = Z];</code>
     */
    public Builder clearEnum() {
      bitField0_ = (bitField0_ & ~0x00008000);
      enum_ = 3;
      onChanged();
      return this;
    }

    private java.util.List<java.lang.Integer> intArray_ = java.util.Collections.emptyList();

    private void ensureIntArrayIsMutable() {
      if (!((bitField0_ & 0x00010000) == 0x00010000)) {
        intArray_ = new java.util.ArrayList<java.lang.Integer>(intArray_);
        bitField0_ |= 0x00010000;
      }
    }

    /**
     * <pre>
     * some repeated types
     * </pre>
     *
     * <code>repeated int32 intArray = 17;</code>
     */
    public java.util.List<java.lang.Integer> getIntArrayList() {
      return java.util.Collections.unmodifiableList(intArray_);
    }

    /**
     * <pre>
     * some repeated types
     * </pre>
     *
     * <code>repeated int32 intArray = 17;</code>
     */
    public int getIntArrayCount() {
      return intArray_.size();
    }

    /**
     * <pre>
     * some repeated types
     * </pre>
     *
     * <code>repeated int32 intArray = 17;</code>
     */
    public int getIntArray(int index) {
      return intArray_.get(index);
    }

    /**
     * <pre>
     * some repeated types
     * </pre>
     *
     * <code>repeated int32 intArray = 17;</code>
     */
    public Builder setIntArray(int index, int value) {
      ensureIntArrayIsMutable();
      intArray_.set(index, value);
      onChanged();
      return this;
    }

    /**
     * <pre>
     * some repeated types
     * </pre>
     *
     * <code>repeated int32 intArray = 17;</code>
     */
    public Builder addIntArray(int value) {
      ensureIntArrayIsMutable();
      intArray_.add(value);
      onChanged();
      return this;
    }

    /**
     * <pre>
     * some repeated types
     * </pre>
     *
     * <code>repeated int32 intArray = 17;</code>
     */
    public Builder addAllIntArray(java.lang.Iterable<? extends java.lang.Integer> values) {
      ensureIntArrayIsMutable();
      com.google.protobuf.AbstractMessageLite.Builder.addAll(values, intArray_);
      onChanged();
      return this;
    }

    /**
     * <pre>
     * some repeated types
     * </pre>
     *
     * <code>repeated int32 intArray = 17;</code>
     */
    public Builder clearIntArray() {
      intArray_ = java.util.Collections.emptyList();
      bitField0_ = (bitField0_ & ~0x00010000);
      onChanged();
      return this;
    }

    private java.util.List<org.apache.avro.protobuf.multiplefiles.Foo> fooArray_ = java.util.Collections.emptyList();

    private void ensureFooArrayIsMutable() {
      if (!((bitField0_ & 0x00020000) == 0x00020000)) {
        fooArray_ = new java.util.ArrayList<org.apache.avro.protobuf.multiplefiles.Foo>(fooArray_);
        bitField0_ |= 0x00020000;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<org.apache.avro.protobuf.multiplefiles.Foo, org.apache.avro.protobuf.multiplefiles.Foo.Builder, org.apache.avro.protobuf.multiplefiles.FooOrBuilder> fooArrayBuilder_;

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public java.util.List<org.apache.avro.protobuf.multiplefiles.Foo> getFooArrayList() {
      if (fooArrayBuilder_ == null) {
        return java.util.Collections.unmodifiableList(fooArray_);
      } else {
        return fooArrayBuilder_.getMessageList();
      }
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public int getFooArrayCount() {
      if (fooArrayBuilder_ == null) {
        return fooArray_.size();
      } else {
        return fooArrayBuilder_.getCount();
      }
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.Foo getFooArray(int index) {
      if (fooArrayBuilder_ == null) {
        return fooArray_.get(index);
      } else {
        return fooArrayBuilder_.getMessage(index);
      }
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder setFooArray(int index, org.apache.avro.protobuf.multiplefiles.Foo value) {
      if (fooArrayBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFooArrayIsMutable();
        fooArray_.set(index, value);
        onChanged();
      } else {
        fooArrayBuilder_.setMessage(index, value);
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder setFooArray(int index, org.apache.avro.protobuf.multiplefiles.Foo.Builder builderForValue) {
      if (fooArrayBuilder_ == null) {
        ensureFooArrayIsMutable();
        fooArray_.set(index, builderForValue.build());
        onChanged();
      } else {
        fooArrayBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder addFooArray(org.apache.avro.protobuf.multiplefiles.Foo value) {
      if (fooArrayBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFooArrayIsMutable();
        fooArray_.add(value);
        onChanged();
      } else {
        fooArrayBuilder_.addMessage(value);
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder addFooArray(int index, org.apache.avro.protobuf.multiplefiles.Foo value) {
      if (fooArrayBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFooArrayIsMutable();
        fooArray_.add(index, value);
        onChanged();
      } else {
        fooArrayBuilder_.addMessage(index, value);
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder addFooArray(org.apache.avro.protobuf.multiplefiles.Foo.Builder builderForValue) {
      if (fooArrayBuilder_ == null) {
        ensureFooArrayIsMutable();
        fooArray_.add(builderForValue.build());
        onChanged();
      } else {
        fooArrayBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder addFooArray(int index, org.apache.avro.protobuf.multiplefiles.Foo.Builder builderForValue) {
      if (fooArrayBuilder_ == null) {
        ensureFooArrayIsMutable();
        fooArray_.add(index, builderForValue.build());
        onChanged();
      } else {
        fooArrayBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder addAllFooArray(java.lang.Iterable<? extends org.apache.avro.protobuf.multiplefiles.Foo> values) {
      if (fooArrayBuilder_ == null) {
        ensureFooArrayIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, fooArray_);
        onChanged();
      } else {
        fooArrayBuilder_.addAllMessages(values);
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder clearFooArray() {
      if (fooArrayBuilder_ == null) {
        fooArray_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
      } else {
        fooArrayBuilder_.clear();
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public Builder removeFooArray(int index) {
      if (fooArrayBuilder_ == null) {
        ensureFooArrayIsMutable();
        fooArray_.remove(index);
        onChanged();
      } else {
        fooArrayBuilder_.remove(index);
      }
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.Foo.Builder getFooArrayBuilder(int index) {
      return getFooArrayFieldBuilder().getBuilder(index);
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.FooOrBuilder getFooArrayOrBuilder(int index) {
      if (fooArrayBuilder_ == null) {
        return fooArray_.get(index);
      } else {
        return fooArrayBuilder_.getMessageOrBuilder(index);
      }
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public java.util.List<? extends org.apache.avro.protobuf.multiplefiles.FooOrBuilder> getFooArrayOrBuilderList() {
      if (fooArrayBuilder_ != null) {
        return fooArrayBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(fooArray_);
      }
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.Foo.Builder addFooArrayBuilder() {
      return getFooArrayFieldBuilder().addBuilder(org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance());
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.Foo.Builder addFooArrayBuilder(int index) {
      return getFooArrayFieldBuilder().addBuilder(index,
          org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance());
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.Foo fooArray = 20;</code>
     */
    public java.util.List<org.apache.avro.protobuf.multiplefiles.Foo.Builder> getFooArrayBuilderList() {
      return getFooArrayFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<org.apache.avro.protobuf.multiplefiles.Foo, org.apache.avro.protobuf.multiplefiles.Foo.Builder, org.apache.avro.protobuf.multiplefiles.FooOrBuilder> getFooArrayFieldBuilder() {
      if (fooArrayBuilder_ == null) {
        fooArrayBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<org.apache.avro.protobuf.multiplefiles.Foo, org.apache.avro.protobuf.multiplefiles.Foo.Builder, org.apache.avro.protobuf.multiplefiles.FooOrBuilder>(
            fooArray_, ((bitField0_ & 0x00020000) == 0x00020000), getParentForChildren(), isClean());
        fooArray_ = null;
      }
      return fooArrayBuilder_;
    }

    private java.util.List<java.lang.Integer> syms_ = java.util.Collections.emptyList();

    private void ensureSymsIsMutable() {
      if (!((bitField0_ & 0x00040000) == 0x00040000)) {
        syms_ = new java.util.ArrayList<java.lang.Integer>(syms_);
        bitField0_ |= 0x00040000;
      }
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
     */
    public java.util.List<org.apache.avro.protobuf.multiplefiles.A> getSymsList() {
      return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, org.apache.avro.protobuf.multiplefiles.A>(
          syms_, syms_converter_);
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
     */
    public int getSymsCount() {
      return syms_.size();
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.A getSyms(int index) {
      return syms_converter_.convert(syms_.get(index));
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
     */
    public Builder setSyms(int index, org.apache.avro.protobuf.multiplefiles.A value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureSymsIsMutable();
      syms_.set(index, value.getNumber());
      onChanged();
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
     */
    public Builder addSyms(org.apache.avro.protobuf.multiplefiles.A value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureSymsIsMutable();
      syms_.add(value.getNumber());
      onChanged();
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
     */
    public Builder addAllSyms(java.lang.Iterable<? extends org.apache.avro.protobuf.multiplefiles.A> values) {
      ensureSymsIsMutable();
      for (org.apache.avro.protobuf.multiplefiles.A value : values) {
        syms_.add(value.getNumber());
      }
      onChanged();
      return this;
    }

    /**
     * <code>repeated .org.apache.avro.protobuf.multiplefiles.A syms = 19;</code>
     */
    public Builder clearSyms() {
      syms_ = java.util.Collections.emptyList();
      bitField0_ = (bitField0_ & ~0x00040000);
      onChanged();
      return this;
    }

    private org.apache.avro.protobuf.multiplefiles.Foo foo_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<org.apache.avro.protobuf.multiplefiles.Foo, org.apache.avro.protobuf.multiplefiles.Foo.Builder, org.apache.avro.protobuf.multiplefiles.FooOrBuilder> fooBuilder_;

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    public boolean hasFoo() {
      return ((bitField0_ & 0x00080000) == 0x00080000);
    }

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.Foo getFoo() {
      if (fooBuilder_ == null) {
        return foo_ == null ? org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance() : foo_;
      } else {
        return fooBuilder_.getMessage();
      }
    }

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    public Builder setFoo(org.apache.avro.protobuf.multiplefiles.Foo value) {
      if (fooBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        foo_ = value;
        onChanged();
      } else {
        fooBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00080000;
      return this;
    }

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    public Builder setFoo(org.apache.avro.protobuf.multiplefiles.Foo.Builder builderForValue) {
      if (fooBuilder_ == null) {
        foo_ = builderForValue.build();
        onChanged();
      } else {
        fooBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00080000;
      return this;
    }

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    public Builder mergeFoo(org.apache.avro.protobuf.multiplefiles.Foo value) {
      if (fooBuilder_ == null) {
        if (((bitField0_ & 0x00080000) == 0x00080000) && foo_ != null
            && foo_ != org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance()) {
          foo_ = org.apache.avro.protobuf.multiplefiles.Foo.newBuilder(foo_).mergeFrom(value).buildPartial();
        } else {
          foo_ = value;
        }
        onChanged();
      } else {
        fooBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00080000;
      return this;
    }

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    public Builder clearFoo() {
      if (fooBuilder_ == null) {
        foo_ = null;
        onChanged();
      } else {
        fooBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00080000);
      return this;
    }

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.Foo.Builder getFooBuilder() {
      bitField0_ |= 0x00080000;
      onChanged();
      return getFooFieldBuilder().getBuilder();
    }

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    public org.apache.avro.protobuf.multiplefiles.FooOrBuilder getFooOrBuilder() {
      if (fooBuilder_ != null) {
        return fooBuilder_.getMessageOrBuilder();
      } else {
        return foo_ == null ? org.apache.avro.protobuf.multiplefiles.Foo.getDefaultInstance() : foo_;
      }
    }

    /**
     * <pre>
     * a recursive type
     * </pre>
     *
     * <code>optional .org.apache.avro.protobuf.multiplefiles.Foo foo = 18;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<org.apache.avro.protobuf.multiplefiles.Foo, org.apache.avro.protobuf.multiplefiles.Foo.Builder, org.apache.avro.protobuf.multiplefiles.FooOrBuilder> getFooFieldBuilder() {
      if (fooBuilder_ == null) {
        fooBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<org.apache.avro.protobuf.multiplefiles.Foo, org.apache.avro.protobuf.multiplefiles.Foo.Builder, org.apache.avro.protobuf.multiplefiles.FooOrBuilder>(
            getFoo(), getParentForChildren(), isClean());
        foo_ = null;
      }
      return fooBuilder_;
    }

    private com.google.protobuf.Timestamp timestamp_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> timestampBuilder_;

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00100000) == 0x00100000);
    }

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    public com.google.protobuf.Timestamp getTimestamp() {
      if (timestampBuilder_ == null) {
        return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_;
      } else {
        return timestampBuilder_.getMessage();
      }
    }

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    public Builder setTimestamp(com.google.protobuf.Timestamp value) {
      if (timestampBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        timestamp_ = value;
        onChanged();
      } else {
        timestampBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00100000;
      return this;
    }

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    public Builder setTimestamp(com.google.protobuf.Timestamp.Builder builderForValue) {
      if (timestampBuilder_ == null) {
        timestamp_ = builderForValue.build();
        onChanged();
      } else {
        timestampBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00100000;
      return this;
    }

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    public Builder mergeTimestamp(com.google.protobuf.Timestamp value) {
      if (timestampBuilder_ == null) {
        if (((bitField0_ & 0x00100000) == 0x00100000) && timestamp_ != null
            && timestamp_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
          timestamp_ = com.google.protobuf.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
        } else {
          timestamp_ = value;
        }
        onChanged();
      } else {
        timestampBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00100000;
      return this;
    }

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    public Builder clearTimestamp() {
      if (timestampBuilder_ == null) {
        timestamp_ = null;
        onChanged();
      } else {
        timestampBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00100000);
      return this;
    }

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    public com.google.protobuf.Timestamp.Builder getTimestampBuilder() {
      bitField0_ |= 0x00100000;
      onChanged();
      return getTimestampFieldBuilder().getBuilder();
    }

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() {
      if (timestampBuilder_ != null) {
        return timestampBuilder_.getMessageOrBuilder();
      } else {
        return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_;
      }
    }

    /**
     * <pre>
     * a predefined message type
     * </pre>
     *
     * <code>optional .google.protobuf.Timestamp timestamp = 21;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> getTimestampFieldBuilder() {
      if (timestampBuilder_ == null) {
        timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
            getTimestamp(), getParentForChildren(), isClean());
        timestamp_ = null;
      }
      return timestampBuilder_;
    }

    public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

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

    // @@protoc_insertion_point(builder_scope:org.apache.avro.protobuf.multiplefiles.Foo)
  }

  // @@protoc_insertion_point(class_scope:org.apache.avro.protobuf.multiplefiles.Foo)
  private static final org.apache.avro.protobuf.multiplefiles.Foo DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new org.apache.avro.protobuf.multiplefiles.Foo();
  }

  public static org.apache.avro.protobuf.multiplefiles.Foo getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  @java.lang.Deprecated
  public static final com.google.protobuf.Parser<Foo> PARSER = new com.google.protobuf.AbstractParser<Foo>() {
    public Foo parsePartialFrom(com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return new Foo(input, extensionRegistry);
    }
  };

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

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

  public org.apache.avro.protobuf.multiplefiles.Foo getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}
