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

package edu.cornell.med.icb.goby.reads;

public final class Reads {
  private Reads() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface ReadCollectionOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // repeated .goby.ReadEntry reads = 1;
    java.util.List<edu.cornell.med.icb.goby.reads.Reads.ReadEntry> 
        getReadsList();
    edu.cornell.med.icb.goby.reads.Reads.ReadEntry getReads(int index);
    int getReadsCount();
    java.util.List<? extends edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder> 
        getReadsOrBuilderList();
    edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder getReadsOrBuilder(
        int index);
  }
  public static final class ReadCollection extends
      com.google.protobuf.GeneratedMessage
      implements ReadCollectionOrBuilder {
    // Use ReadCollection.newBuilder() to construct.
    private ReadCollection(Builder builder) {
      super(builder);
    }
    private ReadCollection(boolean noInit) {}
    
    private static final ReadCollection defaultInstance;
    public static ReadCollection getDefaultInstance() {
      return defaultInstance;
    }
    
    public ReadCollection getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_ReadCollection_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_ReadCollection_fieldAccessorTable;
    }
    
    // repeated .goby.ReadEntry reads = 1;
    public static final int READS_FIELD_NUMBER = 1;
    private java.util.List<edu.cornell.med.icb.goby.reads.Reads.ReadEntry> reads_;
    public java.util.List<edu.cornell.med.icb.goby.reads.Reads.ReadEntry> getReadsList() {
      return reads_;
    }
    public java.util.List<? extends edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder> 
        getReadsOrBuilderList() {
      return reads_;
    }
    public int getReadsCount() {
      return reads_.size();
    }
    public edu.cornell.med.icb.goby.reads.Reads.ReadEntry getReads(int index) {
      return reads_.get(index);
    }
    public edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder getReadsOrBuilder(
        int index) {
      return reads_.get(index);
    }
    
    private void initFields() {
      reads_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      for (int i = 0; i < getReadsCount(); i++) {
        if (!getReads(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < reads_.size(); i++) {
        output.writeMessage(1, reads_.get(i));
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (int i = 0; i < reads_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, reads_.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 edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadCollection parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(edu.cornell.med.icb.goby.reads.Reads.ReadCollection 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;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements edu.cornell.med.icb.goby.reads.Reads.ReadCollectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_ReadCollection_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_ReadCollection_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.reads.Reads.ReadCollection.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getReadsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (readsBuilder_ == null) {
          reads_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          readsBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.reads.Reads.ReadCollection.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.ReadCollection getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.reads.Reads.ReadCollection.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.ReadCollection build() {
        edu.cornell.med.icb.goby.reads.Reads.ReadCollection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.reads.Reads.ReadCollection buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.reads.Reads.ReadCollection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.ReadCollection buildPartial() {
        edu.cornell.med.icb.goby.reads.Reads.ReadCollection result = new edu.cornell.med.icb.goby.reads.Reads.ReadCollection(this);
        int from_bitField0_ = bitField0_;
        if (readsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            reads_ = java.util.Collections.unmodifiableList(reads_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.reads_ = reads_;
        } else {
          result.reads_ = readsBuilder_.build();
        }
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.reads.Reads.ReadCollection) {
          return mergeFrom((edu.cornell.med.icb.goby.reads.Reads.ReadCollection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.reads.Reads.ReadCollection other) {
        if (other == edu.cornell.med.icb.goby.reads.Reads.ReadCollection.getDefaultInstance()) return this;
        if (readsBuilder_ == null) {
          if (!other.reads_.isEmpty()) {
            if (reads_.isEmpty()) {
              reads_ = other.reads_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureReadsIsMutable();
              reads_.addAll(other.reads_);
            }
            onChanged();
          }
        } else {
          if (!other.reads_.isEmpty()) {
            if (readsBuilder_.isEmpty()) {
              readsBuilder_.dispose();
              readsBuilder_ = null;
              reads_ = other.reads_;
              bitField0_ = (bitField0_ & ~0x00000001);
              readsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getReadsFieldBuilder() : null;
            } else {
              readsBuilder_.addAllMessages(other.reads_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        for (int i = 0; i < getReadsCount(); i++) {
          if (!getReads(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder subBuilder = edu.cornell.med.icb.goby.reads.Reads.ReadEntry.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addReads(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // repeated .goby.ReadEntry reads = 1;
      private java.util.List<edu.cornell.med.icb.goby.reads.Reads.ReadEntry> reads_ =
        java.util.Collections.emptyList();
      private void ensureReadsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          reads_ = new java.util.ArrayList<edu.cornell.med.icb.goby.reads.Reads.ReadEntry>(reads_);
          bitField0_ |= 0x00000001;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.reads.Reads.ReadEntry, edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder, edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder> readsBuilder_;
      
      public java.util.List<edu.cornell.med.icb.goby.reads.Reads.ReadEntry> getReadsList() {
        if (readsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(reads_);
        } else {
          return readsBuilder_.getMessageList();
        }
      }
      public int getReadsCount() {
        if (readsBuilder_ == null) {
          return reads_.size();
        } else {
          return readsBuilder_.getCount();
        }
      }
      public edu.cornell.med.icb.goby.reads.Reads.ReadEntry getReads(int index) {
        if (readsBuilder_ == null) {
          return reads_.get(index);
        } else {
          return readsBuilder_.getMessage(index);
        }
      }
      public Builder setReads(
          int index, edu.cornell.med.icb.goby.reads.Reads.ReadEntry value) {
        if (readsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReadsIsMutable();
          reads_.set(index, value);
          onChanged();
        } else {
          readsBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setReads(
          int index, edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder builderForValue) {
        if (readsBuilder_ == null) {
          ensureReadsIsMutable();
          reads_.set(index, builderForValue.build());
          onChanged();
        } else {
          readsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addReads(edu.cornell.med.icb.goby.reads.Reads.ReadEntry value) {
        if (readsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReadsIsMutable();
          reads_.add(value);
          onChanged();
        } else {
          readsBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addReads(
          int index, edu.cornell.med.icb.goby.reads.Reads.ReadEntry value) {
        if (readsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureReadsIsMutable();
          reads_.add(index, value);
          onChanged();
        } else {
          readsBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addReads(
          edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder builderForValue) {
        if (readsBuilder_ == null) {
          ensureReadsIsMutable();
          reads_.add(builderForValue.build());
          onChanged();
        } else {
          readsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addReads(
          int index, edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder builderForValue) {
        if (readsBuilder_ == null) {
          ensureReadsIsMutable();
          reads_.add(index, builderForValue.build());
          onChanged();
        } else {
          readsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllReads(
          java.lang.Iterable<? extends edu.cornell.med.icb.goby.reads.Reads.ReadEntry> values) {
        if (readsBuilder_ == null) {
          ensureReadsIsMutable();
          super.addAll(values, reads_);
          onChanged();
        } else {
          readsBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearReads() {
        if (readsBuilder_ == null) {
          reads_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          readsBuilder_.clear();
        }
        return this;
      }
      public Builder removeReads(int index) {
        if (readsBuilder_ == null) {
          ensureReadsIsMutable();
          reads_.remove(index);
          onChanged();
        } else {
          readsBuilder_.remove(index);
        }
        return this;
      }
      public edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder getReadsBuilder(
          int index) {
        return getReadsFieldBuilder().getBuilder(index);
      }
      public edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder getReadsOrBuilder(
          int index) {
        if (readsBuilder_ == null) {
          return reads_.get(index);  } else {
          return readsBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder> 
           getReadsOrBuilderList() {
        if (readsBuilder_ != null) {
          return readsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(reads_);
        }
      }
      public edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder addReadsBuilder() {
        return getReadsFieldBuilder().addBuilder(
            edu.cornell.med.icb.goby.reads.Reads.ReadEntry.getDefaultInstance());
      }
      public edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder addReadsBuilder(
          int index) {
        return getReadsFieldBuilder().addBuilder(
            index, edu.cornell.med.icb.goby.reads.Reads.ReadEntry.getDefaultInstance());
      }
      public java.util.List<edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder> 
           getReadsBuilderList() {
        return getReadsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.reads.Reads.ReadEntry, edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder, edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder> 
          getReadsFieldBuilder() {
        if (readsBuilder_ == null) {
          readsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              edu.cornell.med.icb.goby.reads.Reads.ReadEntry, edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder, edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder>(
                  reads_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          reads_ = null;
        }
        return readsBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.ReadCollection)
    }
    
    static {
      defaultInstance = new ReadCollection(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.ReadCollection)
  }
  
  public interface ReadEntryOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required uint32 read_index = 1;
    boolean hasReadIndex();
    int getReadIndex();
    
    // optional uint32 barcode_index = 10;
    boolean hasBarcodeIndex();
    int getBarcodeIndex();
    
    // optional string read_identifier = 23;
    boolean hasReadIdentifier();
    String getReadIdentifier();
    
    // optional string description = 22;
    boolean hasDescription();
    String getDescription();
    
    // required uint32 read_length = 2;
    boolean hasReadLength();
    int getReadLength();
    
    // optional bytes sequence = 3;
    boolean hasSequence();
    com.google.protobuf.ByteString getSequence();
    
    // optional bytes sequence_pair = 5;
    boolean hasSequencePair();
    com.google.protobuf.ByteString getSequencePair();
    
    // optional uint32 read_length_pair = 6;
    boolean hasReadLengthPair();
    int getReadLengthPair();
    
    // optional bytes quality_scores = 4;
    boolean hasQualityScores();
    com.google.protobuf.ByteString getQualityScores();
    
    // optional bytes quality_scores_pair = 7;
    boolean hasQualityScoresPair();
    com.google.protobuf.ByteString getQualityScoresPair();
    
    // optional bytes compressed_data = 8;
    boolean hasCompressedData();
    com.google.protobuf.ByteString getCompressedData();
    
    // repeated .goby.MetaData meta_data = 25;
    java.util.List<edu.cornell.med.icb.goby.reads.Reads.MetaData> 
        getMetaDataList();
    edu.cornell.med.icb.goby.reads.Reads.MetaData getMetaData(int index);
    int getMetaDataCount();
    java.util.List<? extends edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder> 
        getMetaDataOrBuilderList();
    edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder getMetaDataOrBuilder(
        int index);
  }
  public static final class ReadEntry extends
      com.google.protobuf.GeneratedMessage
      implements ReadEntryOrBuilder {
    // Use ReadEntry.newBuilder() to construct.
    private ReadEntry(Builder builder) {
      super(builder);
    }
    private ReadEntry(boolean noInit) {}
    
    private static final ReadEntry defaultInstance;
    public static ReadEntry getDefaultInstance() {
      return defaultInstance;
    }
    
    public ReadEntry getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_ReadEntry_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_ReadEntry_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required uint32 read_index = 1;
    public static final int READ_INDEX_FIELD_NUMBER = 1;
    private int readIndex_;
    public boolean hasReadIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getReadIndex() {
      return readIndex_;
    }
    
    // optional uint32 barcode_index = 10;
    public static final int BARCODE_INDEX_FIELD_NUMBER = 10;
    private int barcodeIndex_;
    public boolean hasBarcodeIndex() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getBarcodeIndex() {
      return barcodeIndex_;
    }
    
    // optional string read_identifier = 23;
    public static final int READ_IDENTIFIER_FIELD_NUMBER = 23;
    private java.lang.Object readIdentifier_;
    public boolean hasReadIdentifier() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public String getReadIdentifier() {
      java.lang.Object ref = readIdentifier_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          readIdentifier_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getReadIdentifierBytes() {
      java.lang.Object ref = readIdentifier_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        readIdentifier_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string description = 22;
    public static final int DESCRIPTION_FIELD_NUMBER = 22;
    private java.lang.Object description_;
    public boolean hasDescription() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          description_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required uint32 read_length = 2;
    public static final int READ_LENGTH_FIELD_NUMBER = 2;
    private int readLength_;
    public boolean hasReadLength() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public int getReadLength() {
      return readLength_;
    }
    
    // optional bytes sequence = 3;
    public static final int SEQUENCE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString sequence_;
    public boolean hasSequence() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public com.google.protobuf.ByteString getSequence() {
      return sequence_;
    }
    
    // optional bytes sequence_pair = 5;
    public static final int SEQUENCE_PAIR_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString sequencePair_;
    public boolean hasSequencePair() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    public com.google.protobuf.ByteString getSequencePair() {
      return sequencePair_;
    }
    
    // optional uint32 read_length_pair = 6;
    public static final int READ_LENGTH_PAIR_FIELD_NUMBER = 6;
    private int readLengthPair_;
    public boolean hasReadLengthPair() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    public int getReadLengthPair() {
      return readLengthPair_;
    }
    
    // optional bytes quality_scores = 4;
    public static final int QUALITY_SCORES_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString qualityScores_;
    public boolean hasQualityScores() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    public com.google.protobuf.ByteString getQualityScores() {
      return qualityScores_;
    }
    
    // optional bytes quality_scores_pair = 7;
    public static final int QUALITY_SCORES_PAIR_FIELD_NUMBER = 7;
    private com.google.protobuf.ByteString qualityScoresPair_;
    public boolean hasQualityScoresPair() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    public com.google.protobuf.ByteString getQualityScoresPair() {
      return qualityScoresPair_;
    }
    
    // optional bytes compressed_data = 8;
    public static final int COMPRESSED_DATA_FIELD_NUMBER = 8;
    private com.google.protobuf.ByteString compressedData_;
    public boolean hasCompressedData() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    public com.google.protobuf.ByteString getCompressedData() {
      return compressedData_;
    }
    
    // repeated .goby.MetaData meta_data = 25;
    public static final int META_DATA_FIELD_NUMBER = 25;
    private java.util.List<edu.cornell.med.icb.goby.reads.Reads.MetaData> metaData_;
    public java.util.List<edu.cornell.med.icb.goby.reads.Reads.MetaData> getMetaDataList() {
      return metaData_;
    }
    public java.util.List<? extends edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder> 
        getMetaDataOrBuilderList() {
      return metaData_;
    }
    public int getMetaDataCount() {
      return metaData_.size();
    }
    public edu.cornell.med.icb.goby.reads.Reads.MetaData getMetaData(int index) {
      return metaData_.get(index);
    }
    public edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder getMetaDataOrBuilder(
        int index) {
      return metaData_.get(index);
    }
    
    private void initFields() {
      readIndex_ = 0;
      barcodeIndex_ = 0;
      readIdentifier_ = "";
      description_ = "";
      readLength_ = 0;
      sequence_ = com.google.protobuf.ByteString.EMPTY;
      sequencePair_ = com.google.protobuf.ByteString.EMPTY;
      readLengthPair_ = 0;
      qualityScores_ = com.google.protobuf.ByteString.EMPTY;
      qualityScoresPair_ = com.google.protobuf.ByteString.EMPTY;
      compressedData_ = com.google.protobuf.ByteString.EMPTY;
      metaData_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasReadIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReadLength()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getMetaDataCount(); i++) {
        if (!getMetaData(i).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.writeUInt32(1, readIndex_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(2, readLength_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(3, sequence_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBytes(4, qualityScores_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBytes(5, sequencePair_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeUInt32(6, readLengthPair_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBytes(7, qualityScoresPair_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeBytes(8, compressedData_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(10, barcodeIndex_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(22, getDescriptionBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(23, getReadIdentifierBytes());
      }
      for (int i = 0; i < metaData_.size(); i++) {
        output.writeMessage(25, metaData_.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
          .computeUInt32Size(1, readIndex_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, readLength_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, sequence_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, qualityScores_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, sequencePair_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, readLengthPair_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, qualityScoresPair_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, compressedData_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(10, barcodeIndex_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(22, getDescriptionBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(23, getReadIdentifierBytes());
      }
      for (int i = 0; i < metaData_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(25, metaData_.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 edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.ReadEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(edu.cornell.med.icb.goby.reads.Reads.ReadEntry 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;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements edu.cornell.med.icb.goby.reads.Reads.ReadEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_ReadEntry_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_ReadEntry_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.reads.Reads.ReadEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMetaDataFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        readIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        barcodeIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        readIdentifier_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        description_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        readLength_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        sequence_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        sequencePair_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        readLengthPair_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        qualityScores_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        qualityScoresPair_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        compressedData_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        if (metaDataBuilder_ == null) {
          metaData_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
        } else {
          metaDataBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.reads.Reads.ReadEntry.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.ReadEntry getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.reads.Reads.ReadEntry.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.ReadEntry build() {
        edu.cornell.med.icb.goby.reads.Reads.ReadEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.reads.Reads.ReadEntry buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.reads.Reads.ReadEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.ReadEntry buildPartial() {
        edu.cornell.med.icb.goby.reads.Reads.ReadEntry result = new edu.cornell.med.icb.goby.reads.Reads.ReadEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.readIndex_ = readIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.barcodeIndex_ = barcodeIndex_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.readIdentifier_ = readIdentifier_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.description_ = description_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.readLength_ = readLength_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.sequence_ = sequence_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.sequencePair_ = sequencePair_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.readLengthPair_ = readLengthPair_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.qualityScores_ = qualityScores_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.qualityScoresPair_ = qualityScoresPair_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        result.compressedData_ = compressedData_;
        if (metaDataBuilder_ == null) {
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            metaData_ = java.util.Collections.unmodifiableList(metaData_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.metaData_ = metaData_;
        } else {
          result.metaData_ = metaDataBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.reads.Reads.ReadEntry) {
          return mergeFrom((edu.cornell.med.icb.goby.reads.Reads.ReadEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.reads.Reads.ReadEntry other) {
        if (other == edu.cornell.med.icb.goby.reads.Reads.ReadEntry.getDefaultInstance()) return this;
        if (other.hasReadIndex()) {
          setReadIndex(other.getReadIndex());
        }
        if (other.hasBarcodeIndex()) {
          setBarcodeIndex(other.getBarcodeIndex());
        }
        if (other.hasReadIdentifier()) {
          setReadIdentifier(other.getReadIdentifier());
        }
        if (other.hasDescription()) {
          setDescription(other.getDescription());
        }
        if (other.hasReadLength()) {
          setReadLength(other.getReadLength());
        }
        if (other.hasSequence()) {
          setSequence(other.getSequence());
        }
        if (other.hasSequencePair()) {
          setSequencePair(other.getSequencePair());
        }
        if (other.hasReadLengthPair()) {
          setReadLengthPair(other.getReadLengthPair());
        }
        if (other.hasQualityScores()) {
          setQualityScores(other.getQualityScores());
        }
        if (other.hasQualityScoresPair()) {
          setQualityScoresPair(other.getQualityScoresPair());
        }
        if (other.hasCompressedData()) {
          setCompressedData(other.getCompressedData());
        }
        if (metaDataBuilder_ == null) {
          if (!other.metaData_.isEmpty()) {
            if (metaData_.isEmpty()) {
              metaData_ = other.metaData_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureMetaDataIsMutable();
              metaData_.addAll(other.metaData_);
            }
            onChanged();
          }
        } else {
          if (!other.metaData_.isEmpty()) {
            if (metaDataBuilder_.isEmpty()) {
              metaDataBuilder_.dispose();
              metaDataBuilder_ = null;
              metaData_ = other.metaData_;
              bitField0_ = (bitField0_ & ~0x00000800);
              metaDataBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMetaDataFieldBuilder() : null;
            } else {
              metaDataBuilder_.addAllMessages(other.metaData_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasReadIndex()) {
          
          return false;
        }
        if (!hasReadLength()) {
          
          return false;
        }
        for (int i = 0; i < getMetaDataCount(); i++) {
          if (!getMetaData(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              readIndex_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000010;
              readLength_ = input.readUInt32();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000020;
              sequence_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000100;
              qualityScores_ = input.readBytes();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000040;
              sequencePair_ = input.readBytes();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000080;
              readLengthPair_ = input.readUInt32();
              break;
            }
            case 58: {
              bitField0_ |= 0x00000200;
              qualityScoresPair_ = input.readBytes();
              break;
            }
            case 66: {
              bitField0_ |= 0x00000400;
              compressedData_ = input.readBytes();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000002;
              barcodeIndex_ = input.readUInt32();
              break;
            }
            case 178: {
              bitField0_ |= 0x00000008;
              description_ = input.readBytes();
              break;
            }
            case 186: {
              bitField0_ |= 0x00000004;
              readIdentifier_ = input.readBytes();
              break;
            }
            case 202: {
              edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder subBuilder = edu.cornell.med.icb.goby.reads.Reads.MetaData.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addMetaData(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required uint32 read_index = 1;
      private int readIndex_ ;
      public boolean hasReadIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getReadIndex() {
        return readIndex_;
      }
      public Builder setReadIndex(int value) {
        bitField0_ |= 0x00000001;
        readIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearReadIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        readIndex_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 barcode_index = 10;
      private int barcodeIndex_ ;
      public boolean hasBarcodeIndex() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getBarcodeIndex() {
        return barcodeIndex_;
      }
      public Builder setBarcodeIndex(int value) {
        bitField0_ |= 0x00000002;
        barcodeIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearBarcodeIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        barcodeIndex_ = 0;
        onChanged();
        return this;
      }
      
      // optional string read_identifier = 23;
      private java.lang.Object readIdentifier_ = "";
      public boolean hasReadIdentifier() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getReadIdentifier() {
        java.lang.Object ref = readIdentifier_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          readIdentifier_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setReadIdentifier(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        readIdentifier_ = value;
        onChanged();
        return this;
      }
      public Builder clearReadIdentifier() {
        bitField0_ = (bitField0_ & ~0x00000004);
        readIdentifier_ = getDefaultInstance().getReadIdentifier();
        onChanged();
        return this;
      }
      void setReadIdentifier(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000004;
        readIdentifier_ = value;
        onChanged();
      }
      
      // optional string description = 22;
      private java.lang.Object description_ = "";
      public boolean hasDescription() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setDescription(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        description_ = value;
        onChanged();
        return this;
      }
      public Builder clearDescription() {
        bitField0_ = (bitField0_ & ~0x00000008);
        description_ = getDefaultInstance().getDescription();
        onChanged();
        return this;
      }
      void setDescription(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000008;
        description_ = value;
        onChanged();
      }
      
      // required uint32 read_length = 2;
      private int readLength_ ;
      public boolean hasReadLength() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public int getReadLength() {
        return readLength_;
      }
      public Builder setReadLength(int value) {
        bitField0_ |= 0x00000010;
        readLength_ = value;
        onChanged();
        return this;
      }
      public Builder clearReadLength() {
        bitField0_ = (bitField0_ & ~0x00000010);
        readLength_ = 0;
        onChanged();
        return this;
      }
      
      // optional bytes sequence = 3;
      private com.google.protobuf.ByteString sequence_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasSequence() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public com.google.protobuf.ByteString getSequence() {
        return sequence_;
      }
      public Builder setSequence(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        sequence_ = value;
        onChanged();
        return this;
      }
      public Builder clearSequence() {
        bitField0_ = (bitField0_ & ~0x00000020);
        sequence_ = getDefaultInstance().getSequence();
        onChanged();
        return this;
      }
      
      // optional bytes sequence_pair = 5;
      private com.google.protobuf.ByteString sequencePair_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasSequencePair() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public com.google.protobuf.ByteString getSequencePair() {
        return sequencePair_;
      }
      public Builder setSequencePair(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        sequencePair_ = value;
        onChanged();
        return this;
      }
      public Builder clearSequencePair() {
        bitField0_ = (bitField0_ & ~0x00000040);
        sequencePair_ = getDefaultInstance().getSequencePair();
        onChanged();
        return this;
      }
      
      // optional uint32 read_length_pair = 6;
      private int readLengthPair_ ;
      public boolean hasReadLengthPair() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public int getReadLengthPair() {
        return readLengthPair_;
      }
      public Builder setReadLengthPair(int value) {
        bitField0_ |= 0x00000080;
        readLengthPair_ = value;
        onChanged();
        return this;
      }
      public Builder clearReadLengthPair() {
        bitField0_ = (bitField0_ & ~0x00000080);
        readLengthPair_ = 0;
        onChanged();
        return this;
      }
      
      // optional bytes quality_scores = 4;
      private com.google.protobuf.ByteString qualityScores_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasQualityScores() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public com.google.protobuf.ByteString getQualityScores() {
        return qualityScores_;
      }
      public Builder setQualityScores(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000100;
        qualityScores_ = value;
        onChanged();
        return this;
      }
      public Builder clearQualityScores() {
        bitField0_ = (bitField0_ & ~0x00000100);
        qualityScores_ = getDefaultInstance().getQualityScores();
        onChanged();
        return this;
      }
      
      // optional bytes quality_scores_pair = 7;
      private com.google.protobuf.ByteString qualityScoresPair_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasQualityScoresPair() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      public com.google.protobuf.ByteString getQualityScoresPair() {
        return qualityScoresPair_;
      }
      public Builder setQualityScoresPair(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        qualityScoresPair_ = value;
        onChanged();
        return this;
      }
      public Builder clearQualityScoresPair() {
        bitField0_ = (bitField0_ & ~0x00000200);
        qualityScoresPair_ = getDefaultInstance().getQualityScoresPair();
        onChanged();
        return this;
      }
      
      // optional bytes compressed_data = 8;
      private com.google.protobuf.ByteString compressedData_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasCompressedData() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      public com.google.protobuf.ByteString getCompressedData() {
        return compressedData_;
      }
      public Builder setCompressedData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000400;
        compressedData_ = value;
        onChanged();
        return this;
      }
      public Builder clearCompressedData() {
        bitField0_ = (bitField0_ & ~0x00000400);
        compressedData_ = getDefaultInstance().getCompressedData();
        onChanged();
        return this;
      }
      
      // repeated .goby.MetaData meta_data = 25;
      private java.util.List<edu.cornell.med.icb.goby.reads.Reads.MetaData> metaData_ =
        java.util.Collections.emptyList();
      private void ensureMetaDataIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          metaData_ = new java.util.ArrayList<edu.cornell.med.icb.goby.reads.Reads.MetaData>(metaData_);
          bitField0_ |= 0x00000800;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.reads.Reads.MetaData, edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder, edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder> metaDataBuilder_;
      
      public java.util.List<edu.cornell.med.icb.goby.reads.Reads.MetaData> getMetaDataList() {
        if (metaDataBuilder_ == null) {
          return java.util.Collections.unmodifiableList(metaData_);
        } else {
          return metaDataBuilder_.getMessageList();
        }
      }
      public int getMetaDataCount() {
        if (metaDataBuilder_ == null) {
          return metaData_.size();
        } else {
          return metaDataBuilder_.getCount();
        }
      }
      public edu.cornell.med.icb.goby.reads.Reads.MetaData getMetaData(int index) {
        if (metaDataBuilder_ == null) {
          return metaData_.get(index);
        } else {
          return metaDataBuilder_.getMessage(index);
        }
      }
      public Builder setMetaData(
          int index, edu.cornell.med.icb.goby.reads.Reads.MetaData value) {
        if (metaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetaDataIsMutable();
          metaData_.set(index, value);
          onChanged();
        } else {
          metaDataBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setMetaData(
          int index, edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder builderForValue) {
        if (metaDataBuilder_ == null) {
          ensureMetaDataIsMutable();
          metaData_.set(index, builderForValue.build());
          onChanged();
        } else {
          metaDataBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addMetaData(edu.cornell.med.icb.goby.reads.Reads.MetaData value) {
        if (metaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetaDataIsMutable();
          metaData_.add(value);
          onChanged();
        } else {
          metaDataBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addMetaData(
          int index, edu.cornell.med.icb.goby.reads.Reads.MetaData value) {
        if (metaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetaDataIsMutable();
          metaData_.add(index, value);
          onChanged();
        } else {
          metaDataBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addMetaData(
          edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder builderForValue) {
        if (metaDataBuilder_ == null) {
          ensureMetaDataIsMutable();
          metaData_.add(builderForValue.build());
          onChanged();
        } else {
          metaDataBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addMetaData(
          int index, edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder builderForValue) {
        if (metaDataBuilder_ == null) {
          ensureMetaDataIsMutable();
          metaData_.add(index, builderForValue.build());
          onChanged();
        } else {
          metaDataBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllMetaData(
          java.lang.Iterable<? extends edu.cornell.med.icb.goby.reads.Reads.MetaData> values) {
        if (metaDataBuilder_ == null) {
          ensureMetaDataIsMutable();
          super.addAll(values, metaData_);
          onChanged();
        } else {
          metaDataBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearMetaData() {
        if (metaDataBuilder_ == null) {
          metaData_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          metaDataBuilder_.clear();
        }
        return this;
      }
      public Builder removeMetaData(int index) {
        if (metaDataBuilder_ == null) {
          ensureMetaDataIsMutable();
          metaData_.remove(index);
          onChanged();
        } else {
          metaDataBuilder_.remove(index);
        }
        return this;
      }
      public edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder getMetaDataBuilder(
          int index) {
        return getMetaDataFieldBuilder().getBuilder(index);
      }
      public edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder getMetaDataOrBuilder(
          int index) {
        if (metaDataBuilder_ == null) {
          return metaData_.get(index);  } else {
          return metaDataBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder> 
           getMetaDataOrBuilderList() {
        if (metaDataBuilder_ != null) {
          return metaDataBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(metaData_);
        }
      }
      public edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder addMetaDataBuilder() {
        return getMetaDataFieldBuilder().addBuilder(
            edu.cornell.med.icb.goby.reads.Reads.MetaData.getDefaultInstance());
      }
      public edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder addMetaDataBuilder(
          int index) {
        return getMetaDataFieldBuilder().addBuilder(
            index, edu.cornell.med.icb.goby.reads.Reads.MetaData.getDefaultInstance());
      }
      public java.util.List<edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder> 
           getMetaDataBuilderList() {
        return getMetaDataFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.reads.Reads.MetaData, edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder, edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder> 
          getMetaDataFieldBuilder() {
        if (metaDataBuilder_ == null) {
          metaDataBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              edu.cornell.med.icb.goby.reads.Reads.MetaData, edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder, edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder>(
                  metaData_,
                  ((bitField0_ & 0x00000800) == 0x00000800),
                  getParentForChildren(),
                  isClean());
          metaData_ = null;
        }
        return metaDataBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.ReadEntry)
    }
    
    static {
      defaultInstance = new ReadEntry(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.ReadEntry)
  }
  
  public interface MetaDataOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string key = 1;
    boolean hasKey();
    String getKey();
    
    // required string value = 2;
    boolean hasValue();
    String getValue();
  }
  public static final class MetaData extends
      com.google.protobuf.GeneratedMessage
      implements MetaDataOrBuilder {
    // Use MetaData.newBuilder() to construct.
    private MetaData(Builder builder) {
      super(builder);
    }
    private MetaData(boolean noInit) {}
    
    private static final MetaData defaultInstance;
    public static MetaData getDefaultInstance() {
      return defaultInstance;
    }
    
    public MetaData getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_MetaData_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_MetaData_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string key = 1;
    public static final int KEY_FIELD_NUMBER = 1;
    private java.lang.Object key_;
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          key_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required string value = 2;
    public static final int VALUE_FIELD_NUMBER = 2;
    private java.lang.Object value_;
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (com.google.protobuf.Internal.isValidUtf8(bs)) {
          value_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    private void initFields() {
      key_ = "";
      value_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasKey()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        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, getKeyBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getValueBytes());
      }
      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, getKeyBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getValueBytes());
      }
      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 edu.cornell.med.icb.goby.reads.Reads.MetaData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.reads.Reads.MetaData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(edu.cornell.med.icb.goby.reads.Reads.MetaData 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;
    }
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements edu.cornell.med.icb.goby.reads.Reads.MetaDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_MetaData_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.reads.Reads.internal_static_goby_MetaData_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.reads.Reads.MetaData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.reads.Reads.MetaData.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.MetaData getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.reads.Reads.MetaData.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.MetaData build() {
        edu.cornell.med.icb.goby.reads.Reads.MetaData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.reads.Reads.MetaData buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.reads.Reads.MetaData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.reads.Reads.MetaData buildPartial() {
        edu.cornell.med.icb.goby.reads.Reads.MetaData result = new edu.cornell.med.icb.goby.reads.Reads.MetaData(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.reads.Reads.MetaData) {
          return mergeFrom((edu.cornell.med.icb.goby.reads.Reads.MetaData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.reads.Reads.MetaData other) {
        if (other == edu.cornell.med.icb.goby.reads.Reads.MetaData.getDefaultInstance()) return this;
        if (other.hasKey()) {
          setKey(other.getKey());
        }
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasKey()) {
          
          return false;
        }
        if (!hasValue()) {
          
          return false;
        }
        return true;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              key_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              value_ = input.readBytes();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string key = 1;
      private java.lang.Object key_ = "";
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          key_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setKey(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      void setKey(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
      }
      
      // required string value = 2;
      private java.lang.Object value_ = "";
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setValue(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      void setValue(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
      }
      
      // @@protoc_insertion_point(builder_scope:goby.MetaData)
    }
    
    static {
      defaultInstance = new MetaData(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.MetaData)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_ReadCollection_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_ReadCollection_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_ReadEntry_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_ReadEntry_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_MetaData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_MetaData_fieldAccessorTable;
  
  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\013Reads.proto\022\004goby\"0\n\016ReadCollection\022\036\n" +
      "\005reads\030\001 \003(\0132\017.goby.ReadEntry\"\255\002\n\tReadEn" +
      "try\022\022\n\nread_index\030\001 \002(\r\022\025\n\rbarcode_index" +
      "\030\n \001(\r\022\027\n\017read_identifier\030\027 \001(\t\022\023\n\013descr" +
      "iption\030\026 \001(\t\022\023\n\013read_length\030\002 \002(\r\022\020\n\010seq" +
      "uence\030\003 \001(\014\022\025\n\rsequence_pair\030\005 \001(\014\022\030\n\020re" +
      "ad_length_pair\030\006 \001(\r\022\026\n\016quality_scores\030\004" +
      " \001(\014\022\033\n\023quality_scores_pair\030\007 \001(\014\022\027\n\017com" +
      "pressed_data\030\010 \001(\014\022!\n\tmeta_data\030\031 \003(\0132\016." +
      "goby.MetaData\"&\n\010MetaData\022\013\n\003key\030\001 \002(\t\022\r",
      "\n\005value\030\002 \002(\tB\"\n\036edu.cornell.med.icb.gob" +
      "y.readsH\001"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_goby_ReadCollection_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_goby_ReadCollection_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_ReadCollection_descriptor,
              new java.lang.String[] { "Reads", },
              edu.cornell.med.icb.goby.reads.Reads.ReadCollection.class,
              edu.cornell.med.icb.goby.reads.Reads.ReadCollection.Builder.class);
          internal_static_goby_ReadEntry_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_goby_ReadEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_ReadEntry_descriptor,
              new java.lang.String[] { "ReadIndex", "BarcodeIndex", "ReadIdentifier", "Description", "ReadLength", "Sequence", "SequencePair", "ReadLengthPair", "QualityScores", "QualityScoresPair", "CompressedData", "MetaData", },
              edu.cornell.med.icb.goby.reads.Reads.ReadEntry.class,
              edu.cornell.med.icb.goby.reads.Reads.ReadEntry.Builder.class);
          internal_static_goby_MetaData_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_goby_MetaData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_MetaData_descriptor,
              new java.lang.String[] { "Key", "Value", },
              edu.cornell.med.icb.goby.reads.Reads.MetaData.class,
              edu.cornell.med.icb.goby.reads.Reads.MetaData.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }
  
  // @@protoc_insertion_point(outer_class_scope)
}
