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

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

public final class Alignments {
  private Alignments() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface AlignmentCollectionOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // repeated .goby.AlignmentEntry alignment_entries = 1;
    java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry> 
        getAlignmentEntriesList();
    edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry getAlignmentEntries(int index);
    int getAlignmentEntriesCount();
    java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder> 
        getAlignmentEntriesOrBuilderList();
    edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder getAlignmentEntriesOrBuilder(
        int index);
  }
  public static final class AlignmentCollection extends
      com.google.protobuf.GeneratedMessage
      implements AlignmentCollectionOrBuilder {
    // Use AlignmentCollection.newBuilder() to construct.
    private AlignmentCollection(Builder builder) {
      super(builder);
    }
    private AlignmentCollection(boolean noInit) {}
    
    private static final AlignmentCollection defaultInstance;
    public static AlignmentCollection getDefaultInstance() {
      return defaultInstance;
    }
    
    public AlignmentCollection getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentCollection_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentCollection_fieldAccessorTable;
    }
    
    // repeated .goby.AlignmentEntry alignment_entries = 1;
    public static final int ALIGNMENT_ENTRIES_FIELD_NUMBER = 1;
    private java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry> alignmentEntries_;
    public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry> getAlignmentEntriesList() {
      return alignmentEntries_;
    }
    public java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder> 
        getAlignmentEntriesOrBuilderList() {
      return alignmentEntries_;
    }
    public int getAlignmentEntriesCount() {
      return alignmentEntries_.size();
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry getAlignmentEntries(int index) {
      return alignmentEntries_.get(index);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder getAlignmentEntriesOrBuilder(
        int index) {
      return alignmentEntries_.get(index);
    }
    
    private void initFields() {
      alignmentEntries_ = 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 < getAlignmentEntriesCount(); i++) {
        if (!getAlignmentEntries(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 < alignmentEntries_.size(); i++) {
        output.writeMessage(1, alignmentEntries_.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 < alignmentEntries_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, alignmentEntries_.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.alignments.Alignments.AlignmentCollection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection 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.alignments.Alignments.AlignmentCollection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection 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.alignments.Alignments.AlignmentCollection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection 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.alignments.Alignments.AlignmentCollection 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.alignments.Alignments.AlignmentCollection 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.alignments.Alignments.AlignmentCollection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection 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.alignments.Alignments.AlignmentCollection 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.alignments.Alignments.AlignmentCollectionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentCollection_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentCollection_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAlignmentEntriesFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (alignmentEntriesBuilder_ == null) {
          alignmentEntries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          alignmentEntriesBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection build() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection result = new edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection(this);
        int from_bitField0_ = bitField0_;
        if (alignmentEntriesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            alignmentEntries_ = java.util.Collections.unmodifiableList(alignmentEntries_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.alignmentEntries_ = alignmentEntries_;
        } else {
          result.alignmentEntries_ = alignmentEntriesBuilder_.build();
        }
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection.getDefaultInstance()) return this;
        if (alignmentEntriesBuilder_ == null) {
          if (!other.alignmentEntries_.isEmpty()) {
            if (alignmentEntries_.isEmpty()) {
              alignmentEntries_ = other.alignmentEntries_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAlignmentEntriesIsMutable();
              alignmentEntries_.addAll(other.alignmentEntries_);
            }
            onChanged();
          }
        } else {
          if (!other.alignmentEntries_.isEmpty()) {
            if (alignmentEntriesBuilder_.isEmpty()) {
              alignmentEntriesBuilder_.dispose();
              alignmentEntriesBuilder_ = null;
              alignmentEntries_ = other.alignmentEntries_;
              bitField0_ = (bitField0_ & ~0x00000001);
              alignmentEntriesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAlignmentEntriesFieldBuilder() : null;
            } else {
              alignmentEntriesBuilder_.addAllMessages(other.alignmentEntries_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        for (int i = 0; i < getAlignmentEntriesCount(); i++) {
          if (!getAlignmentEntries(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.alignments.Alignments.AlignmentEntry.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addAlignmentEntries(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // repeated .goby.AlignmentEntry alignment_entries = 1;
      private java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry> alignmentEntries_ =
        java.util.Collections.emptyList();
      private void ensureAlignmentEntriesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          alignmentEntries_ = new java.util.ArrayList<edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry>(alignmentEntries_);
          bitField0_ |= 0x00000001;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder> alignmentEntriesBuilder_;
      
      public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry> getAlignmentEntriesList() {
        if (alignmentEntriesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(alignmentEntries_);
        } else {
          return alignmentEntriesBuilder_.getMessageList();
        }
      }
      public int getAlignmentEntriesCount() {
        if (alignmentEntriesBuilder_ == null) {
          return alignmentEntries_.size();
        } else {
          return alignmentEntriesBuilder_.getCount();
        }
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry getAlignmentEntries(int index) {
        if (alignmentEntriesBuilder_ == null) {
          return alignmentEntries_.get(index);
        } else {
          return alignmentEntriesBuilder_.getMessage(index);
        }
      }
      public Builder setAlignmentEntries(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry value) {
        if (alignmentEntriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAlignmentEntriesIsMutable();
          alignmentEntries_.set(index, value);
          onChanged();
        } else {
          alignmentEntriesBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setAlignmentEntries(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder builderForValue) {
        if (alignmentEntriesBuilder_ == null) {
          ensureAlignmentEntriesIsMutable();
          alignmentEntries_.set(index, builderForValue.build());
          onChanged();
        } else {
          alignmentEntriesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAlignmentEntries(edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry value) {
        if (alignmentEntriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAlignmentEntriesIsMutable();
          alignmentEntries_.add(value);
          onChanged();
        } else {
          alignmentEntriesBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addAlignmentEntries(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry value) {
        if (alignmentEntriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAlignmentEntriesIsMutable();
          alignmentEntries_.add(index, value);
          onChanged();
        } else {
          alignmentEntriesBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addAlignmentEntries(
          edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder builderForValue) {
        if (alignmentEntriesBuilder_ == null) {
          ensureAlignmentEntriesIsMutable();
          alignmentEntries_.add(builderForValue.build());
          onChanged();
        } else {
          alignmentEntriesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addAlignmentEntries(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder builderForValue) {
        if (alignmentEntriesBuilder_ == null) {
          ensureAlignmentEntriesIsMutable();
          alignmentEntries_.add(index, builderForValue.build());
          onChanged();
        } else {
          alignmentEntriesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllAlignmentEntries(
          java.lang.Iterable<? extends edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry> values) {
        if (alignmentEntriesBuilder_ == null) {
          ensureAlignmentEntriesIsMutable();
          super.addAll(values, alignmentEntries_);
          onChanged();
        } else {
          alignmentEntriesBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearAlignmentEntries() {
        if (alignmentEntriesBuilder_ == null) {
          alignmentEntries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          alignmentEntriesBuilder_.clear();
        }
        return this;
      }
      public Builder removeAlignmentEntries(int index) {
        if (alignmentEntriesBuilder_ == null) {
          ensureAlignmentEntriesIsMutable();
          alignmentEntries_.remove(index);
          onChanged();
        } else {
          alignmentEntriesBuilder_.remove(index);
        }
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder getAlignmentEntriesBuilder(
          int index) {
        return getAlignmentEntriesFieldBuilder().getBuilder(index);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder getAlignmentEntriesOrBuilder(
          int index) {
        if (alignmentEntriesBuilder_ == null) {
          return alignmentEntries_.get(index);  } else {
          return alignmentEntriesBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder> 
           getAlignmentEntriesOrBuilderList() {
        if (alignmentEntriesBuilder_ != null) {
          return alignmentEntriesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(alignmentEntries_);
        }
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder addAlignmentEntriesBuilder() {
        return getAlignmentEntriesFieldBuilder().addBuilder(
            edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.getDefaultInstance());
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder addAlignmentEntriesBuilder(
          int index) {
        return getAlignmentEntriesFieldBuilder().addBuilder(
            index, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.getDefaultInstance());
      }
      public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder> 
           getAlignmentEntriesBuilderList() {
        return getAlignmentEntriesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder> 
          getAlignmentEntriesFieldBuilder() {
        if (alignmentEntriesBuilder_ == null) {
          alignmentEntriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntryOrBuilder>(
                  alignmentEntries_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          alignmentEntries_ = null;
        }
        return alignmentEntriesBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.AlignmentCollection)
    }
    
    static {
      defaultInstance = new AlignmentCollection(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.AlignmentCollection)
  }
  
  public interface AlignmentEntryOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional uint32 multiplicity = 7;
    boolean hasMultiplicity();
    int getMultiplicity();
    
    // required uint32 query_index = 1;
    boolean hasQueryIndex();
    int getQueryIndex();
    
    // required uint32 target_index = 2;
    boolean hasTargetIndex();
    int getTargetIndex();
    
    // required uint32 position = 3;
    boolean hasPosition();
    int getPosition();
    
    // required bool matching_reverse_strand = 6;
    boolean hasMatchingReverseStrand();
    boolean getMatchingReverseStrand();
    
    // optional uint32 query_position = 5;
    boolean hasQueryPosition();
    int getQueryPosition();
    
    // optional float score = 4;
    boolean hasScore();
    float getScore();
    
    // optional uint32 number_of_mismatches = 8;
    boolean hasNumberOfMismatches();
    int getNumberOfMismatches();
    
    // optional uint32 number_of_indels = 9;
    boolean hasNumberOfIndels();
    int getNumberOfIndels();
    
    // optional uint32 query_aligned_length = 11;
    boolean hasQueryAlignedLength();
    int getQueryAlignedLength();
    
    // optional uint32 target_aligned_length = 12;
    boolean hasTargetAlignedLength();
    int getTargetAlignedLength();
    
    // repeated .goby.SequenceVariation sequence_variations = 13;
    java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation> 
        getSequenceVariationsList();
    edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation getSequenceVariations(int index);
    int getSequenceVariationsCount();
    java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder> 
        getSequenceVariationsOrBuilderList();
    edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder getSequenceVariationsOrBuilder(
        int index);
    
    // optional uint32 query_length = 10;
    boolean hasQueryLength();
    int getQueryLength();
    
    // optional int32 mapping_quality = 14;
    boolean hasMappingQuality();
    int getMappingQuality();
    
    // optional uint32 pair_flags = 15;
    boolean hasPairFlags();
    int getPairFlags();
    
    // optional .goby.RelatedAlignmentEntry pair_alignment_link = 16;
    boolean hasPairAlignmentLink();
    edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getPairAlignmentLink();
    edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getPairAlignmentLinkOrBuilder();
    
    // optional uint32 fragment_index = 17;
    boolean hasFragmentIndex();
    int getFragmentIndex();
    
    // optional .goby.RelatedAlignmentEntry spliced_forward_alignment_link = 18;
    boolean hasSplicedForwardAlignmentLink();
    edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getSplicedForwardAlignmentLink();
    edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getSplicedForwardAlignmentLinkOrBuilder();
    
    // optional .goby.RelatedAlignmentEntry spliced_backward_alignment_link = 22;
    boolean hasSplicedBackwardAlignmentLink();
    edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getSplicedBackwardAlignmentLink();
    edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getSplicedBackwardAlignmentLinkOrBuilder();
    
    // optional uint32 spliced_flags = 19;
    boolean hasSplicedFlags();
    int getSplicedFlags();
    
    // optional uint32 insert_size = 20;
    boolean hasInsertSize();
    int getInsertSize();
    
    // optional uint32 sample_index = 21;
    boolean hasSampleIndex();
    int getSampleIndex();
  }
  public static final class AlignmentEntry extends
      com.google.protobuf.GeneratedMessage
      implements AlignmentEntryOrBuilder {
    // Use AlignmentEntry.newBuilder() to construct.
    private AlignmentEntry(Builder builder) {
      super(builder);
    }
    private AlignmentEntry(boolean noInit) {}
    
    private static final AlignmentEntry defaultInstance;
    public static AlignmentEntry getDefaultInstance() {
      return defaultInstance;
    }
    
    public AlignmentEntry getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentEntry_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentEntry_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional uint32 multiplicity = 7;
    public static final int MULTIPLICITY_FIELD_NUMBER = 7;
    private int multiplicity_;
    public boolean hasMultiplicity() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getMultiplicity() {
      return multiplicity_;
    }
    
    // required uint32 query_index = 1;
    public static final int QUERY_INDEX_FIELD_NUMBER = 1;
    private int queryIndex_;
    public boolean hasQueryIndex() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getQueryIndex() {
      return queryIndex_;
    }
    
    // required uint32 target_index = 2;
    public static final int TARGET_INDEX_FIELD_NUMBER = 2;
    private int targetIndex_;
    public boolean hasTargetIndex() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public int getTargetIndex() {
      return targetIndex_;
    }
    
    // required uint32 position = 3;
    public static final int POSITION_FIELD_NUMBER = 3;
    private int position_;
    public boolean hasPosition() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public int getPosition() {
      return position_;
    }
    
    // required bool matching_reverse_strand = 6;
    public static final int MATCHING_REVERSE_STRAND_FIELD_NUMBER = 6;
    private boolean matchingReverseStrand_;
    public boolean hasMatchingReverseStrand() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public boolean getMatchingReverseStrand() {
      return matchingReverseStrand_;
    }
    
    // optional uint32 query_position = 5;
    public static final int QUERY_POSITION_FIELD_NUMBER = 5;
    private int queryPosition_;
    public boolean hasQueryPosition() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public int getQueryPosition() {
      return queryPosition_;
    }
    
    // optional float score = 4;
    public static final int SCORE_FIELD_NUMBER = 4;
    private float score_;
    public boolean hasScore() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    public float getScore() {
      return score_;
    }
    
    // optional uint32 number_of_mismatches = 8;
    public static final int NUMBER_OF_MISMATCHES_FIELD_NUMBER = 8;
    private int numberOfMismatches_;
    public boolean hasNumberOfMismatches() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    public int getNumberOfMismatches() {
      return numberOfMismatches_;
    }
    
    // optional uint32 number_of_indels = 9;
    public static final int NUMBER_OF_INDELS_FIELD_NUMBER = 9;
    private int numberOfIndels_;
    public boolean hasNumberOfIndels() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    public int getNumberOfIndels() {
      return numberOfIndels_;
    }
    
    // optional uint32 query_aligned_length = 11;
    public static final int QUERY_ALIGNED_LENGTH_FIELD_NUMBER = 11;
    private int queryAlignedLength_;
    public boolean hasQueryAlignedLength() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    public int getQueryAlignedLength() {
      return queryAlignedLength_;
    }
    
    // optional uint32 target_aligned_length = 12;
    public static final int TARGET_ALIGNED_LENGTH_FIELD_NUMBER = 12;
    private int targetAlignedLength_;
    public boolean hasTargetAlignedLength() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    public int getTargetAlignedLength() {
      return targetAlignedLength_;
    }
    
    // repeated .goby.SequenceVariation sequence_variations = 13;
    public static final int SEQUENCE_VARIATIONS_FIELD_NUMBER = 13;
    private java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation> sequenceVariations_;
    public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation> getSequenceVariationsList() {
      return sequenceVariations_;
    }
    public java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder> 
        getSequenceVariationsOrBuilderList() {
      return sequenceVariations_;
    }
    public int getSequenceVariationsCount() {
      return sequenceVariations_.size();
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation getSequenceVariations(int index) {
      return sequenceVariations_.get(index);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder getSequenceVariationsOrBuilder(
        int index) {
      return sequenceVariations_.get(index);
    }
    
    // optional uint32 query_length = 10;
    public static final int QUERY_LENGTH_FIELD_NUMBER = 10;
    private int queryLength_;
    public boolean hasQueryLength() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    public int getQueryLength() {
      return queryLength_;
    }
    
    // optional int32 mapping_quality = 14;
    public static final int MAPPING_QUALITY_FIELD_NUMBER = 14;
    private int mappingQuality_;
    public boolean hasMappingQuality() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }
    public int getMappingQuality() {
      return mappingQuality_;
    }
    
    // optional uint32 pair_flags = 15;
    public static final int PAIR_FLAGS_FIELD_NUMBER = 15;
    private int pairFlags_;
    public boolean hasPairFlags() {
      return ((bitField0_ & 0x00002000) == 0x00002000);
    }
    public int getPairFlags() {
      return pairFlags_;
    }
    
    // optional .goby.RelatedAlignmentEntry pair_alignment_link = 16;
    public static final int PAIR_ALIGNMENT_LINK_FIELD_NUMBER = 16;
    private edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry pairAlignmentLink_;
    public boolean hasPairAlignmentLink() {
      return ((bitField0_ & 0x00004000) == 0x00004000);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getPairAlignmentLink() {
      return pairAlignmentLink_;
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getPairAlignmentLinkOrBuilder() {
      return pairAlignmentLink_;
    }
    
    // optional uint32 fragment_index = 17;
    public static final int FRAGMENT_INDEX_FIELD_NUMBER = 17;
    private int fragmentIndex_;
    public boolean hasFragmentIndex() {
      return ((bitField0_ & 0x00008000) == 0x00008000);
    }
    public int getFragmentIndex() {
      return fragmentIndex_;
    }
    
    // optional .goby.RelatedAlignmentEntry spliced_forward_alignment_link = 18;
    public static final int SPLICED_FORWARD_ALIGNMENT_LINK_FIELD_NUMBER = 18;
    private edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry splicedForwardAlignmentLink_;
    public boolean hasSplicedForwardAlignmentLink() {
      return ((bitField0_ & 0x00010000) == 0x00010000);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getSplicedForwardAlignmentLink() {
      return splicedForwardAlignmentLink_;
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getSplicedForwardAlignmentLinkOrBuilder() {
      return splicedForwardAlignmentLink_;
    }
    
    // optional .goby.RelatedAlignmentEntry spliced_backward_alignment_link = 22;
    public static final int SPLICED_BACKWARD_ALIGNMENT_LINK_FIELD_NUMBER = 22;
    private edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry splicedBackwardAlignmentLink_;
    public boolean hasSplicedBackwardAlignmentLink() {
      return ((bitField0_ & 0x00020000) == 0x00020000);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getSplicedBackwardAlignmentLink() {
      return splicedBackwardAlignmentLink_;
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getSplicedBackwardAlignmentLinkOrBuilder() {
      return splicedBackwardAlignmentLink_;
    }
    
    // optional uint32 spliced_flags = 19;
    public static final int SPLICED_FLAGS_FIELD_NUMBER = 19;
    private int splicedFlags_;
    public boolean hasSplicedFlags() {
      return ((bitField0_ & 0x00040000) == 0x00040000);
    }
    public int getSplicedFlags() {
      return splicedFlags_;
    }
    
    // optional uint32 insert_size = 20;
    public static final int INSERT_SIZE_FIELD_NUMBER = 20;
    private int insertSize_;
    public boolean hasInsertSize() {
      return ((bitField0_ & 0x00080000) == 0x00080000);
    }
    public int getInsertSize() {
      return insertSize_;
    }
    
    // optional uint32 sample_index = 21;
    public static final int SAMPLE_INDEX_FIELD_NUMBER = 21;
    private int sampleIndex_;
    public boolean hasSampleIndex() {
      return ((bitField0_ & 0x00100000) == 0x00100000);
    }
    public int getSampleIndex() {
      return sampleIndex_;
    }
    
    private void initFields() {
      multiplicity_ = 0;
      queryIndex_ = 0;
      targetIndex_ = 0;
      position_ = 0;
      matchingReverseStrand_ = false;
      queryPosition_ = 0;
      score_ = 0F;
      numberOfMismatches_ = 0;
      numberOfIndels_ = 0;
      queryAlignedLength_ = 0;
      targetAlignedLength_ = 0;
      sequenceVariations_ = java.util.Collections.emptyList();
      queryLength_ = 0;
      mappingQuality_ = 0;
      pairFlags_ = 0;
      pairAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
      fragmentIndex_ = 0;
      splicedForwardAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
      splicedBackwardAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
      splicedFlags_ = 0;
      insertSize_ = 0;
      sampleIndex_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasQueryIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTargetIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPosition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMatchingReverseStrand()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSequenceVariationsCount(); i++) {
        if (!getSequenceVariations(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPairAlignmentLink()) {
        if (!getPairAlignmentLink().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSplicedForwardAlignmentLink()) {
        if (!getSplicedForwardAlignmentLink().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSplicedBackwardAlignmentLink()) {
        if (!getSplicedBackwardAlignmentLink().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(1, queryIndex_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(2, targetIndex_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(3, position_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeFloat(4, score_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeUInt32(5, queryPosition_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(6, matchingReverseStrand_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(7, multiplicity_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeUInt32(8, numberOfMismatches_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeUInt32(9, numberOfIndels_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeUInt32(10, queryLength_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeUInt32(11, queryAlignedLength_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeUInt32(12, targetAlignedLength_);
      }
      for (int i = 0; i < sequenceVariations_.size(); i++) {
        output.writeMessage(13, sequenceVariations_.get(i));
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeInt32(14, mappingQuality_);
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        output.writeUInt32(15, pairFlags_);
      }
      if (((bitField0_ & 0x00004000) == 0x00004000)) {
        output.writeMessage(16, pairAlignmentLink_);
      }
      if (((bitField0_ & 0x00008000) == 0x00008000)) {
        output.writeUInt32(17, fragmentIndex_);
      }
      if (((bitField0_ & 0x00010000) == 0x00010000)) {
        output.writeMessage(18, splicedForwardAlignmentLink_);
      }
      if (((bitField0_ & 0x00040000) == 0x00040000)) {
        output.writeUInt32(19, splicedFlags_);
      }
      if (((bitField0_ & 0x00080000) == 0x00080000)) {
        output.writeUInt32(20, insertSize_);
      }
      if (((bitField0_ & 0x00100000) == 0x00100000)) {
        output.writeUInt32(21, sampleIndex_);
      }
      if (((bitField0_ & 0x00020000) == 0x00020000)) {
        output.writeMessage(22, splicedBackwardAlignmentLink_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, queryIndex_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, targetIndex_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, position_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(4, score_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, queryPosition_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, matchingReverseStrand_);
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, multiplicity_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(8, numberOfMismatches_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(9, numberOfIndels_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(10, queryLength_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(11, queryAlignedLength_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(12, targetAlignedLength_);
      }
      for (int i = 0; i < sequenceVariations_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, sequenceVariations_.get(i));
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(14, mappingQuality_);
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(15, pairFlags_);
      }
      if (((bitField0_ & 0x00004000) == 0x00004000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, pairAlignmentLink_);
      }
      if (((bitField0_ & 0x00008000) == 0x00008000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(17, fragmentIndex_);
      }
      if (((bitField0_ & 0x00010000) == 0x00010000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, splicedForwardAlignmentLink_);
      }
      if (((bitField0_ & 0x00040000) == 0x00040000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(19, splicedFlags_);
      }
      if (((bitField0_ & 0x00080000) == 0x00080000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(20, insertSize_);
      }
      if (((bitField0_ & 0x00100000) == 0x00100000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(21, sampleIndex_);
      }
      if (((bitField0_ & 0x00020000) == 0x00020000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, splicedBackwardAlignmentLink_);
      }
      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.alignments.Alignments.AlignmentEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry 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.alignments.Alignments.AlignmentEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry 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.alignments.Alignments.AlignmentEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry 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.alignments.Alignments.AlignmentEntry 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.alignments.Alignments.AlignmentEntry 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.alignments.Alignments.AlignmentEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry 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.alignments.Alignments.AlignmentEntry 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.alignments.Alignments.AlignmentEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentEntry_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentEntry_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getSequenceVariationsFieldBuilder();
          getPairAlignmentLinkFieldBuilder();
          getSplicedForwardAlignmentLinkFieldBuilder();
          getSplicedBackwardAlignmentLinkFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        multiplicity_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        queryIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        targetIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        position_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        matchingReverseStrand_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        queryPosition_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        score_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000040);
        numberOfMismatches_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        numberOfIndels_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        queryAlignedLength_ = 0;
        bitField0_ = (bitField0_ & ~0x00000200);
        targetAlignedLength_ = 0;
        bitField0_ = (bitField0_ & ~0x00000400);
        if (sequenceVariationsBuilder_ == null) {
          sequenceVariations_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
        } else {
          sequenceVariationsBuilder_.clear();
        }
        queryLength_ = 0;
        bitField0_ = (bitField0_ & ~0x00001000);
        mappingQuality_ = 0;
        bitField0_ = (bitField0_ & ~0x00002000);
        pairFlags_ = 0;
        bitField0_ = (bitField0_ & ~0x00004000);
        if (pairAlignmentLinkBuilder_ == null) {
          pairAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
        } else {
          pairAlignmentLinkBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00008000);
        fragmentIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00010000);
        if (splicedForwardAlignmentLinkBuilder_ == null) {
          splicedForwardAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
        } else {
          splicedForwardAlignmentLinkBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00020000);
        if (splicedBackwardAlignmentLinkBuilder_ == null) {
          splicedBackwardAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
        } else {
          splicedBackwardAlignmentLinkBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00040000);
        splicedFlags_ = 0;
        bitField0_ = (bitField0_ & ~0x00080000);
        insertSize_ = 0;
        bitField0_ = (bitField0_ & ~0x00100000);
        sampleIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00200000);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry build() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry result = new edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.multiplicity_ = multiplicity_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.queryIndex_ = queryIndex_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.targetIndex_ = targetIndex_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.position_ = position_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.matchingReverseStrand_ = matchingReverseStrand_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.queryPosition_ = queryPosition_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.score_ = score_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.numberOfMismatches_ = numberOfMismatches_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.numberOfIndels_ = numberOfIndels_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.queryAlignedLength_ = queryAlignedLength_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        result.targetAlignedLength_ = targetAlignedLength_;
        if (sequenceVariationsBuilder_ == null) {
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            sequenceVariations_ = java.util.Collections.unmodifiableList(sequenceVariations_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.sequenceVariations_ = sequenceVariations_;
        } else {
          result.sequenceVariations_ = sequenceVariationsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00000800;
        }
        result.queryLength_ = queryLength_;
        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
          to_bitField0_ |= 0x00001000;
        }
        result.mappingQuality_ = mappingQuality_;
        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
          to_bitField0_ |= 0x00002000;
        }
        result.pairFlags_ = pairFlags_;
        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
          to_bitField0_ |= 0x00004000;
        }
        if (pairAlignmentLinkBuilder_ == null) {
          result.pairAlignmentLink_ = pairAlignmentLink_;
        } else {
          result.pairAlignmentLink_ = pairAlignmentLinkBuilder_.build();
        }
        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
          to_bitField0_ |= 0x00008000;
        }
        result.fragmentIndex_ = fragmentIndex_;
        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
          to_bitField0_ |= 0x00010000;
        }
        if (splicedForwardAlignmentLinkBuilder_ == null) {
          result.splicedForwardAlignmentLink_ = splicedForwardAlignmentLink_;
        } else {
          result.splicedForwardAlignmentLink_ = splicedForwardAlignmentLinkBuilder_.build();
        }
        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
          to_bitField0_ |= 0x00020000;
        }
        if (splicedBackwardAlignmentLinkBuilder_ == null) {
          result.splicedBackwardAlignmentLink_ = splicedBackwardAlignmentLink_;
        } else {
          result.splicedBackwardAlignmentLink_ = splicedBackwardAlignmentLinkBuilder_.build();
        }
        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
          to_bitField0_ |= 0x00040000;
        }
        result.splicedFlags_ = splicedFlags_;
        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
          to_bitField0_ |= 0x00080000;
        }
        result.insertSize_ = insertSize_;
        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
          to_bitField0_ |= 0x00100000;
        }
        result.sampleIndex_ = sampleIndex_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.getDefaultInstance()) return this;
        if (other.hasMultiplicity()) {
          setMultiplicity(other.getMultiplicity());
        }
        if (other.hasQueryIndex()) {
          setQueryIndex(other.getQueryIndex());
        }
        if (other.hasTargetIndex()) {
          setTargetIndex(other.getTargetIndex());
        }
        if (other.hasPosition()) {
          setPosition(other.getPosition());
        }
        if (other.hasMatchingReverseStrand()) {
          setMatchingReverseStrand(other.getMatchingReverseStrand());
        }
        if (other.hasQueryPosition()) {
          setQueryPosition(other.getQueryPosition());
        }
        if (other.hasScore()) {
          setScore(other.getScore());
        }
        if (other.hasNumberOfMismatches()) {
          setNumberOfMismatches(other.getNumberOfMismatches());
        }
        if (other.hasNumberOfIndels()) {
          setNumberOfIndels(other.getNumberOfIndels());
        }
        if (other.hasQueryAlignedLength()) {
          setQueryAlignedLength(other.getQueryAlignedLength());
        }
        if (other.hasTargetAlignedLength()) {
          setTargetAlignedLength(other.getTargetAlignedLength());
        }
        if (sequenceVariationsBuilder_ == null) {
          if (!other.sequenceVariations_.isEmpty()) {
            if (sequenceVariations_.isEmpty()) {
              sequenceVariations_ = other.sequenceVariations_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureSequenceVariationsIsMutable();
              sequenceVariations_.addAll(other.sequenceVariations_);
            }
            onChanged();
          }
        } else {
          if (!other.sequenceVariations_.isEmpty()) {
            if (sequenceVariationsBuilder_.isEmpty()) {
              sequenceVariationsBuilder_.dispose();
              sequenceVariationsBuilder_ = null;
              sequenceVariations_ = other.sequenceVariations_;
              bitField0_ = (bitField0_ & ~0x00000800);
              sequenceVariationsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSequenceVariationsFieldBuilder() : null;
            } else {
              sequenceVariationsBuilder_.addAllMessages(other.sequenceVariations_);
            }
          }
        }
        if (other.hasQueryLength()) {
          setQueryLength(other.getQueryLength());
        }
        if (other.hasMappingQuality()) {
          setMappingQuality(other.getMappingQuality());
        }
        if (other.hasPairFlags()) {
          setPairFlags(other.getPairFlags());
        }
        if (other.hasPairAlignmentLink()) {
          mergePairAlignmentLink(other.getPairAlignmentLink());
        }
        if (other.hasFragmentIndex()) {
          setFragmentIndex(other.getFragmentIndex());
        }
        if (other.hasSplicedForwardAlignmentLink()) {
          mergeSplicedForwardAlignmentLink(other.getSplicedForwardAlignmentLink());
        }
        if (other.hasSplicedBackwardAlignmentLink()) {
          mergeSplicedBackwardAlignmentLink(other.getSplicedBackwardAlignmentLink());
        }
        if (other.hasSplicedFlags()) {
          setSplicedFlags(other.getSplicedFlags());
        }
        if (other.hasInsertSize()) {
          setInsertSize(other.getInsertSize());
        }
        if (other.hasSampleIndex()) {
          setSampleIndex(other.getSampleIndex());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasQueryIndex()) {
          
          return false;
        }
        if (!hasTargetIndex()) {
          
          return false;
        }
        if (!hasPosition()) {
          
          return false;
        }
        if (!hasMatchingReverseStrand()) {
          
          return false;
        }
        for (int i = 0; i < getSequenceVariationsCount(); i++) {
          if (!getSequenceVariations(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasPairAlignmentLink()) {
          if (!getPairAlignmentLink().isInitialized()) {
            
            return false;
          }
        }
        if (hasSplicedForwardAlignmentLink()) {
          if (!getSplicedForwardAlignmentLink().isInitialized()) {
            
            return false;
          }
        }
        if (hasSplicedBackwardAlignmentLink()) {
          if (!getSplicedBackwardAlignmentLink().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_ |= 0x00000002;
              queryIndex_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000004;
              targetIndex_ = input.readUInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000008;
              position_ = input.readUInt32();
              break;
            }
            case 37: {
              bitField0_ |= 0x00000040;
              score_ = input.readFloat();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000020;
              queryPosition_ = input.readUInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000010;
              matchingReverseStrand_ = input.readBool();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000001;
              multiplicity_ = input.readUInt32();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              numberOfMismatches_ = input.readUInt32();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              numberOfIndels_ = input.readUInt32();
              break;
            }
            case 80: {
              bitField0_ |= 0x00001000;
              queryLength_ = input.readUInt32();
              break;
            }
            case 88: {
              bitField0_ |= 0x00000200;
              queryAlignedLength_ = input.readUInt32();
              break;
            }
            case 96: {
              bitField0_ |= 0x00000400;
              targetAlignedLength_ = input.readUInt32();
              break;
            }
            case 106: {
              edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addSequenceVariations(subBuilder.buildPartial());
              break;
            }
            case 112: {
              bitField0_ |= 0x00002000;
              mappingQuality_ = input.readInt32();
              break;
            }
            case 120: {
              bitField0_ |= 0x00004000;
              pairFlags_ = input.readUInt32();
              break;
            }
            case 130: {
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.newBuilder();
              if (hasPairAlignmentLink()) {
                subBuilder.mergeFrom(getPairAlignmentLink());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setPairAlignmentLink(subBuilder.buildPartial());
              break;
            }
            case 136: {
              bitField0_ |= 0x00010000;
              fragmentIndex_ = input.readUInt32();
              break;
            }
            case 146: {
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.newBuilder();
              if (hasSplicedForwardAlignmentLink()) {
                subBuilder.mergeFrom(getSplicedForwardAlignmentLink());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setSplicedForwardAlignmentLink(subBuilder.buildPartial());
              break;
            }
            case 152: {
              bitField0_ |= 0x00080000;
              splicedFlags_ = input.readUInt32();
              break;
            }
            case 160: {
              bitField0_ |= 0x00100000;
              insertSize_ = input.readUInt32();
              break;
            }
            case 168: {
              bitField0_ |= 0x00200000;
              sampleIndex_ = input.readUInt32();
              break;
            }
            case 178: {
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.newBuilder();
              if (hasSplicedBackwardAlignmentLink()) {
                subBuilder.mergeFrom(getSplicedBackwardAlignmentLink());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setSplicedBackwardAlignmentLink(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional uint32 multiplicity = 7;
      private int multiplicity_ ;
      public boolean hasMultiplicity() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getMultiplicity() {
        return multiplicity_;
      }
      public Builder setMultiplicity(int value) {
        bitField0_ |= 0x00000001;
        multiplicity_ = value;
        onChanged();
        return this;
      }
      public Builder clearMultiplicity() {
        bitField0_ = (bitField0_ & ~0x00000001);
        multiplicity_ = 0;
        onChanged();
        return this;
      }
      
      // required uint32 query_index = 1;
      private int queryIndex_ ;
      public boolean hasQueryIndex() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getQueryIndex() {
        return queryIndex_;
      }
      public Builder setQueryIndex(int value) {
        bitField0_ |= 0x00000002;
        queryIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearQueryIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        queryIndex_ = 0;
        onChanged();
        return this;
      }
      
      // required uint32 target_index = 2;
      private int targetIndex_ ;
      public boolean hasTargetIndex() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public int getTargetIndex() {
        return targetIndex_;
      }
      public Builder setTargetIndex(int value) {
        bitField0_ |= 0x00000004;
        targetIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearTargetIndex() {
        bitField0_ = (bitField0_ & ~0x00000004);
        targetIndex_ = 0;
        onChanged();
        return this;
      }
      
      // required uint32 position = 3;
      private int position_ ;
      public boolean hasPosition() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public int getPosition() {
        return position_;
      }
      public Builder setPosition(int value) {
        bitField0_ |= 0x00000008;
        position_ = value;
        onChanged();
        return this;
      }
      public Builder clearPosition() {
        bitField0_ = (bitField0_ & ~0x00000008);
        position_ = 0;
        onChanged();
        return this;
      }
      
      // required bool matching_reverse_strand = 6;
      private boolean matchingReverseStrand_ ;
      public boolean hasMatchingReverseStrand() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public boolean getMatchingReverseStrand() {
        return matchingReverseStrand_;
      }
      public Builder setMatchingReverseStrand(boolean value) {
        bitField0_ |= 0x00000010;
        matchingReverseStrand_ = value;
        onChanged();
        return this;
      }
      public Builder clearMatchingReverseStrand() {
        bitField0_ = (bitField0_ & ~0x00000010);
        matchingReverseStrand_ = false;
        onChanged();
        return this;
      }
      
      // optional uint32 query_position = 5;
      private int queryPosition_ ;
      public boolean hasQueryPosition() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public int getQueryPosition() {
        return queryPosition_;
      }
      public Builder setQueryPosition(int value) {
        bitField0_ |= 0x00000020;
        queryPosition_ = value;
        onChanged();
        return this;
      }
      public Builder clearQueryPosition() {
        bitField0_ = (bitField0_ & ~0x00000020);
        queryPosition_ = 0;
        onChanged();
        return this;
      }
      
      // optional float score = 4;
      private float score_ ;
      public boolean hasScore() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public float getScore() {
        return score_;
      }
      public Builder setScore(float value) {
        bitField0_ |= 0x00000040;
        score_ = value;
        onChanged();
        return this;
      }
      public Builder clearScore() {
        bitField0_ = (bitField0_ & ~0x00000040);
        score_ = 0F;
        onChanged();
        return this;
      }
      
      // optional uint32 number_of_mismatches = 8;
      private int numberOfMismatches_ ;
      public boolean hasNumberOfMismatches() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      public int getNumberOfMismatches() {
        return numberOfMismatches_;
      }
      public Builder setNumberOfMismatches(int value) {
        bitField0_ |= 0x00000080;
        numberOfMismatches_ = value;
        onChanged();
        return this;
      }
      public Builder clearNumberOfMismatches() {
        bitField0_ = (bitField0_ & ~0x00000080);
        numberOfMismatches_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 number_of_indels = 9;
      private int numberOfIndels_ ;
      public boolean hasNumberOfIndels() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public int getNumberOfIndels() {
        return numberOfIndels_;
      }
      public Builder setNumberOfIndels(int value) {
        bitField0_ |= 0x00000100;
        numberOfIndels_ = value;
        onChanged();
        return this;
      }
      public Builder clearNumberOfIndels() {
        bitField0_ = (bitField0_ & ~0x00000100);
        numberOfIndels_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 query_aligned_length = 11;
      private int queryAlignedLength_ ;
      public boolean hasQueryAlignedLength() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      public int getQueryAlignedLength() {
        return queryAlignedLength_;
      }
      public Builder setQueryAlignedLength(int value) {
        bitField0_ |= 0x00000200;
        queryAlignedLength_ = value;
        onChanged();
        return this;
      }
      public Builder clearQueryAlignedLength() {
        bitField0_ = (bitField0_ & ~0x00000200);
        queryAlignedLength_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 target_aligned_length = 12;
      private int targetAlignedLength_ ;
      public boolean hasTargetAlignedLength() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      public int getTargetAlignedLength() {
        return targetAlignedLength_;
      }
      public Builder setTargetAlignedLength(int value) {
        bitField0_ |= 0x00000400;
        targetAlignedLength_ = value;
        onChanged();
        return this;
      }
      public Builder clearTargetAlignedLength() {
        bitField0_ = (bitField0_ & ~0x00000400);
        targetAlignedLength_ = 0;
        onChanged();
        return this;
      }
      
      // repeated .goby.SequenceVariation sequence_variations = 13;
      private java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation> sequenceVariations_ =
        java.util.Collections.emptyList();
      private void ensureSequenceVariationsIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          sequenceVariations_ = new java.util.ArrayList<edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation>(sequenceVariations_);
          bitField0_ |= 0x00000800;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder> sequenceVariationsBuilder_;
      
      public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation> getSequenceVariationsList() {
        if (sequenceVariationsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sequenceVariations_);
        } else {
          return sequenceVariationsBuilder_.getMessageList();
        }
      }
      public int getSequenceVariationsCount() {
        if (sequenceVariationsBuilder_ == null) {
          return sequenceVariations_.size();
        } else {
          return sequenceVariationsBuilder_.getCount();
        }
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation getSequenceVariations(int index) {
        if (sequenceVariationsBuilder_ == null) {
          return sequenceVariations_.get(index);
        } else {
          return sequenceVariationsBuilder_.getMessage(index);
        }
      }
      public Builder setSequenceVariations(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation value) {
        if (sequenceVariationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSequenceVariationsIsMutable();
          sequenceVariations_.set(index, value);
          onChanged();
        } else {
          sequenceVariationsBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setSequenceVariations(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder builderForValue) {
        if (sequenceVariationsBuilder_ == null) {
          ensureSequenceVariationsIsMutable();
          sequenceVariations_.set(index, builderForValue.build());
          onChanged();
        } else {
          sequenceVariationsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addSequenceVariations(edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation value) {
        if (sequenceVariationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSequenceVariationsIsMutable();
          sequenceVariations_.add(value);
          onChanged();
        } else {
          sequenceVariationsBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addSequenceVariations(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation value) {
        if (sequenceVariationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSequenceVariationsIsMutable();
          sequenceVariations_.add(index, value);
          onChanged();
        } else {
          sequenceVariationsBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addSequenceVariations(
          edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder builderForValue) {
        if (sequenceVariationsBuilder_ == null) {
          ensureSequenceVariationsIsMutable();
          sequenceVariations_.add(builderForValue.build());
          onChanged();
        } else {
          sequenceVariationsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addSequenceVariations(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder builderForValue) {
        if (sequenceVariationsBuilder_ == null) {
          ensureSequenceVariationsIsMutable();
          sequenceVariations_.add(index, builderForValue.build());
          onChanged();
        } else {
          sequenceVariationsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllSequenceVariations(
          java.lang.Iterable<? extends edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation> values) {
        if (sequenceVariationsBuilder_ == null) {
          ensureSequenceVariationsIsMutable();
          super.addAll(values, sequenceVariations_);
          onChanged();
        } else {
          sequenceVariationsBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearSequenceVariations() {
        if (sequenceVariationsBuilder_ == null) {
          sequenceVariations_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          sequenceVariationsBuilder_.clear();
        }
        return this;
      }
      public Builder removeSequenceVariations(int index) {
        if (sequenceVariationsBuilder_ == null) {
          ensureSequenceVariationsIsMutable();
          sequenceVariations_.remove(index);
          onChanged();
        } else {
          sequenceVariationsBuilder_.remove(index);
        }
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder getSequenceVariationsBuilder(
          int index) {
        return getSequenceVariationsFieldBuilder().getBuilder(index);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder getSequenceVariationsOrBuilder(
          int index) {
        if (sequenceVariationsBuilder_ == null) {
          return sequenceVariations_.get(index);  } else {
          return sequenceVariationsBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder> 
           getSequenceVariationsOrBuilderList() {
        if (sequenceVariationsBuilder_ != null) {
          return sequenceVariationsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sequenceVariations_);
        }
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder addSequenceVariationsBuilder() {
        return getSequenceVariationsFieldBuilder().addBuilder(
            edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.getDefaultInstance());
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder addSequenceVariationsBuilder(
          int index) {
        return getSequenceVariationsFieldBuilder().addBuilder(
            index, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.getDefaultInstance());
      }
      public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder> 
           getSequenceVariationsBuilderList() {
        return getSequenceVariationsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder> 
          getSequenceVariationsFieldBuilder() {
        if (sequenceVariationsBuilder_ == null) {
          sequenceVariationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder, edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariationOrBuilder>(
                  sequenceVariations_,
                  ((bitField0_ & 0x00000800) == 0x00000800),
                  getParentForChildren(),
                  isClean());
          sequenceVariations_ = null;
        }
        return sequenceVariationsBuilder_;
      }
      
      // optional uint32 query_length = 10;
      private int queryLength_ ;
      public boolean hasQueryLength() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      public int getQueryLength() {
        return queryLength_;
      }
      public Builder setQueryLength(int value) {
        bitField0_ |= 0x00001000;
        queryLength_ = value;
        onChanged();
        return this;
      }
      public Builder clearQueryLength() {
        bitField0_ = (bitField0_ & ~0x00001000);
        queryLength_ = 0;
        onChanged();
        return this;
      }
      
      // optional int32 mapping_quality = 14;
      private int mappingQuality_ ;
      public boolean hasMappingQuality() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      public int getMappingQuality() {
        return mappingQuality_;
      }
      public Builder setMappingQuality(int value) {
        bitField0_ |= 0x00002000;
        mappingQuality_ = value;
        onChanged();
        return this;
      }
      public Builder clearMappingQuality() {
        bitField0_ = (bitField0_ & ~0x00002000);
        mappingQuality_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 pair_flags = 15;
      private int pairFlags_ ;
      public boolean hasPairFlags() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      public int getPairFlags() {
        return pairFlags_;
      }
      public Builder setPairFlags(int value) {
        bitField0_ |= 0x00004000;
        pairFlags_ = value;
        onChanged();
        return this;
      }
      public Builder clearPairFlags() {
        bitField0_ = (bitField0_ & ~0x00004000);
        pairFlags_ = 0;
        onChanged();
        return this;
      }
      
      // optional .goby.RelatedAlignmentEntry pair_alignment_link = 16;
      private edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry pairAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder> pairAlignmentLinkBuilder_;
      public boolean hasPairAlignmentLink() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getPairAlignmentLink() {
        if (pairAlignmentLinkBuilder_ == null) {
          return pairAlignmentLink_;
        } else {
          return pairAlignmentLinkBuilder_.getMessage();
        }
      }
      public Builder setPairAlignmentLink(edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry value) {
        if (pairAlignmentLinkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          pairAlignmentLink_ = value;
          onChanged();
        } else {
          pairAlignmentLinkBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00008000;
        return this;
      }
      public Builder setPairAlignmentLink(
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder builderForValue) {
        if (pairAlignmentLinkBuilder_ == null) {
          pairAlignmentLink_ = builderForValue.build();
          onChanged();
        } else {
          pairAlignmentLinkBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00008000;
        return this;
      }
      public Builder mergePairAlignmentLink(edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry value) {
        if (pairAlignmentLinkBuilder_ == null) {
          if (((bitField0_ & 0x00008000) == 0x00008000) &&
              pairAlignmentLink_ != edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance()) {
            pairAlignmentLink_ =
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.newBuilder(pairAlignmentLink_).mergeFrom(value).buildPartial();
          } else {
            pairAlignmentLink_ = value;
          }
          onChanged();
        } else {
          pairAlignmentLinkBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00008000;
        return this;
      }
      public Builder clearPairAlignmentLink() {
        if (pairAlignmentLinkBuilder_ == null) {
          pairAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
          onChanged();
        } else {
          pairAlignmentLinkBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00008000);
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder getPairAlignmentLinkBuilder() {
        bitField0_ |= 0x00008000;
        onChanged();
        return getPairAlignmentLinkFieldBuilder().getBuilder();
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getPairAlignmentLinkOrBuilder() {
        if (pairAlignmentLinkBuilder_ != null) {
          return pairAlignmentLinkBuilder_.getMessageOrBuilder();
        } else {
          return pairAlignmentLink_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder> 
          getPairAlignmentLinkFieldBuilder() {
        if (pairAlignmentLinkBuilder_ == null) {
          pairAlignmentLinkBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder>(
                  pairAlignmentLink_,
                  getParentForChildren(),
                  isClean());
          pairAlignmentLink_ = null;
        }
        return pairAlignmentLinkBuilder_;
      }
      
      // optional uint32 fragment_index = 17;
      private int fragmentIndex_ ;
      public boolean hasFragmentIndex() {
        return ((bitField0_ & 0x00010000) == 0x00010000);
      }
      public int getFragmentIndex() {
        return fragmentIndex_;
      }
      public Builder setFragmentIndex(int value) {
        bitField0_ |= 0x00010000;
        fragmentIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearFragmentIndex() {
        bitField0_ = (bitField0_ & ~0x00010000);
        fragmentIndex_ = 0;
        onChanged();
        return this;
      }
      
      // optional .goby.RelatedAlignmentEntry spliced_forward_alignment_link = 18;
      private edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry splicedForwardAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder> splicedForwardAlignmentLinkBuilder_;
      public boolean hasSplicedForwardAlignmentLink() {
        return ((bitField0_ & 0x00020000) == 0x00020000);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getSplicedForwardAlignmentLink() {
        if (splicedForwardAlignmentLinkBuilder_ == null) {
          return splicedForwardAlignmentLink_;
        } else {
          return splicedForwardAlignmentLinkBuilder_.getMessage();
        }
      }
      public Builder setSplicedForwardAlignmentLink(edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry value) {
        if (splicedForwardAlignmentLinkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          splicedForwardAlignmentLink_ = value;
          onChanged();
        } else {
          splicedForwardAlignmentLinkBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00020000;
        return this;
      }
      public Builder setSplicedForwardAlignmentLink(
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder builderForValue) {
        if (splicedForwardAlignmentLinkBuilder_ == null) {
          splicedForwardAlignmentLink_ = builderForValue.build();
          onChanged();
        } else {
          splicedForwardAlignmentLinkBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00020000;
        return this;
      }
      public Builder mergeSplicedForwardAlignmentLink(edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry value) {
        if (splicedForwardAlignmentLinkBuilder_ == null) {
          if (((bitField0_ & 0x00020000) == 0x00020000) &&
              splicedForwardAlignmentLink_ != edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance()) {
            splicedForwardAlignmentLink_ =
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.newBuilder(splicedForwardAlignmentLink_).mergeFrom(value).buildPartial();
          } else {
            splicedForwardAlignmentLink_ = value;
          }
          onChanged();
        } else {
          splicedForwardAlignmentLinkBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00020000;
        return this;
      }
      public Builder clearSplicedForwardAlignmentLink() {
        if (splicedForwardAlignmentLinkBuilder_ == null) {
          splicedForwardAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
          onChanged();
        } else {
          splicedForwardAlignmentLinkBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00020000);
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder getSplicedForwardAlignmentLinkBuilder() {
        bitField0_ |= 0x00020000;
        onChanged();
        return getSplicedForwardAlignmentLinkFieldBuilder().getBuilder();
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getSplicedForwardAlignmentLinkOrBuilder() {
        if (splicedForwardAlignmentLinkBuilder_ != null) {
          return splicedForwardAlignmentLinkBuilder_.getMessageOrBuilder();
        } else {
          return splicedForwardAlignmentLink_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder> 
          getSplicedForwardAlignmentLinkFieldBuilder() {
        if (splicedForwardAlignmentLinkBuilder_ == null) {
          splicedForwardAlignmentLinkBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder>(
                  splicedForwardAlignmentLink_,
                  getParentForChildren(),
                  isClean());
          splicedForwardAlignmentLink_ = null;
        }
        return splicedForwardAlignmentLinkBuilder_;
      }
      
      // optional .goby.RelatedAlignmentEntry spliced_backward_alignment_link = 22;
      private edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry splicedBackwardAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder> splicedBackwardAlignmentLinkBuilder_;
      public boolean hasSplicedBackwardAlignmentLink() {
        return ((bitField0_ & 0x00040000) == 0x00040000);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getSplicedBackwardAlignmentLink() {
        if (splicedBackwardAlignmentLinkBuilder_ == null) {
          return splicedBackwardAlignmentLink_;
        } else {
          return splicedBackwardAlignmentLinkBuilder_.getMessage();
        }
      }
      public Builder setSplicedBackwardAlignmentLink(edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry value) {
        if (splicedBackwardAlignmentLinkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          splicedBackwardAlignmentLink_ = value;
          onChanged();
        } else {
          splicedBackwardAlignmentLinkBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00040000;
        return this;
      }
      public Builder setSplicedBackwardAlignmentLink(
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder builderForValue) {
        if (splicedBackwardAlignmentLinkBuilder_ == null) {
          splicedBackwardAlignmentLink_ = builderForValue.build();
          onChanged();
        } else {
          splicedBackwardAlignmentLinkBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00040000;
        return this;
      }
      public Builder mergeSplicedBackwardAlignmentLink(edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry value) {
        if (splicedBackwardAlignmentLinkBuilder_ == null) {
          if (((bitField0_ & 0x00040000) == 0x00040000) &&
              splicedBackwardAlignmentLink_ != edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance()) {
            splicedBackwardAlignmentLink_ =
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.newBuilder(splicedBackwardAlignmentLink_).mergeFrom(value).buildPartial();
          } else {
            splicedBackwardAlignmentLink_ = value;
          }
          onChanged();
        } else {
          splicedBackwardAlignmentLinkBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00040000;
        return this;
      }
      public Builder clearSplicedBackwardAlignmentLink() {
        if (splicedBackwardAlignmentLinkBuilder_ == null) {
          splicedBackwardAlignmentLink_ = edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
          onChanged();
        } else {
          splicedBackwardAlignmentLinkBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00040000);
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder getSplicedBackwardAlignmentLinkBuilder() {
        bitField0_ |= 0x00040000;
        onChanged();
        return getSplicedBackwardAlignmentLinkFieldBuilder().getBuilder();
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder getSplicedBackwardAlignmentLinkOrBuilder() {
        if (splicedBackwardAlignmentLinkBuilder_ != null) {
          return splicedBackwardAlignmentLinkBuilder_.getMessageOrBuilder();
        } else {
          return splicedBackwardAlignmentLink_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder> 
          getSplicedBackwardAlignmentLinkFieldBuilder() {
        if (splicedBackwardAlignmentLinkBuilder_ == null) {
          splicedBackwardAlignmentLinkBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder, edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntryOrBuilder>(
                  splicedBackwardAlignmentLink_,
                  getParentForChildren(),
                  isClean());
          splicedBackwardAlignmentLink_ = null;
        }
        return splicedBackwardAlignmentLinkBuilder_;
      }
      
      // optional uint32 spliced_flags = 19;
      private int splicedFlags_ ;
      public boolean hasSplicedFlags() {
        return ((bitField0_ & 0x00080000) == 0x00080000);
      }
      public int getSplicedFlags() {
        return splicedFlags_;
      }
      public Builder setSplicedFlags(int value) {
        bitField0_ |= 0x00080000;
        splicedFlags_ = value;
        onChanged();
        return this;
      }
      public Builder clearSplicedFlags() {
        bitField0_ = (bitField0_ & ~0x00080000);
        splicedFlags_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 insert_size = 20;
      private int insertSize_ ;
      public boolean hasInsertSize() {
        return ((bitField0_ & 0x00100000) == 0x00100000);
      }
      public int getInsertSize() {
        return insertSize_;
      }
      public Builder setInsertSize(int value) {
        bitField0_ |= 0x00100000;
        insertSize_ = value;
        onChanged();
        return this;
      }
      public Builder clearInsertSize() {
        bitField0_ = (bitField0_ & ~0x00100000);
        insertSize_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 sample_index = 21;
      private int sampleIndex_ ;
      public boolean hasSampleIndex() {
        return ((bitField0_ & 0x00200000) == 0x00200000);
      }
      public int getSampleIndex() {
        return sampleIndex_;
      }
      public Builder setSampleIndex(int value) {
        bitField0_ |= 0x00200000;
        sampleIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearSampleIndex() {
        bitField0_ = (bitField0_ & ~0x00200000);
        sampleIndex_ = 0;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.AlignmentEntry)
    }
    
    static {
      defaultInstance = new AlignmentEntry(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.AlignmentEntry)
  }
  
  public interface RelatedAlignmentEntryOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required uint32 target_index = 1;
    boolean hasTargetIndex();
    int getTargetIndex();
    
    // required uint32 position = 2;
    boolean hasPosition();
    int getPosition();
    
    // required uint32 fragment_index = 3;
    boolean hasFragmentIndex();
    int getFragmentIndex();
  }
  public static final class RelatedAlignmentEntry extends
      com.google.protobuf.GeneratedMessage
      implements RelatedAlignmentEntryOrBuilder {
    // Use RelatedAlignmentEntry.newBuilder() to construct.
    private RelatedAlignmentEntry(Builder builder) {
      super(builder);
    }
    private RelatedAlignmentEntry(boolean noInit) {}
    
    private static final RelatedAlignmentEntry defaultInstance;
    public static RelatedAlignmentEntry getDefaultInstance() {
      return defaultInstance;
    }
    
    public RelatedAlignmentEntry getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_RelatedAlignmentEntry_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_RelatedAlignmentEntry_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required uint32 target_index = 1;
    public static final int TARGET_INDEX_FIELD_NUMBER = 1;
    private int targetIndex_;
    public boolean hasTargetIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getTargetIndex() {
      return targetIndex_;
    }
    
    // required uint32 position = 2;
    public static final int POSITION_FIELD_NUMBER = 2;
    private int position_;
    public boolean hasPosition() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getPosition() {
      return position_;
    }
    
    // required uint32 fragment_index = 3;
    public static final int FRAGMENT_INDEX_FIELD_NUMBER = 3;
    private int fragmentIndex_;
    public boolean hasFragmentIndex() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public int getFragmentIndex() {
      return fragmentIndex_;
    }
    
    private void initFields() {
      targetIndex_ = 0;
      position_ = 0;
      fragmentIndex_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasTargetIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPosition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasFragmentIndex()) {
        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, targetIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, position_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, fragmentIndex_);
      }
      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, targetIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, position_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, fragmentIndex_);
      }
      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.alignments.Alignments.RelatedAlignmentEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry 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.alignments.Alignments.RelatedAlignmentEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry 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.alignments.Alignments.RelatedAlignmentEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry 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.alignments.Alignments.RelatedAlignmentEntry 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.alignments.Alignments.RelatedAlignmentEntry 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.alignments.Alignments.RelatedAlignmentEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry 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.alignments.Alignments.RelatedAlignmentEntry 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.alignments.Alignments.RelatedAlignmentEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_RelatedAlignmentEntry_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_RelatedAlignmentEntry_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.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();
        targetIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        position_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        fragmentIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry build() {
        edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry result = new edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.targetIndex_ = targetIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.position_ = position_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.fragmentIndex_ = fragmentIndex_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.getDefaultInstance()) return this;
        if (other.hasTargetIndex()) {
          setTargetIndex(other.getTargetIndex());
        }
        if (other.hasPosition()) {
          setPosition(other.getPosition());
        }
        if (other.hasFragmentIndex()) {
          setFragmentIndex(other.getFragmentIndex());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasTargetIndex()) {
          
          return false;
        }
        if (!hasPosition()) {
          
          return false;
        }
        if (!hasFragmentIndex()) {
          
          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;
              targetIndex_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              position_ = input.readUInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              fragmentIndex_ = input.readUInt32();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required uint32 target_index = 1;
      private int targetIndex_ ;
      public boolean hasTargetIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getTargetIndex() {
        return targetIndex_;
      }
      public Builder setTargetIndex(int value) {
        bitField0_ |= 0x00000001;
        targetIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearTargetIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetIndex_ = 0;
        onChanged();
        return this;
      }
      
      // required uint32 position = 2;
      private int position_ ;
      public boolean hasPosition() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getPosition() {
        return position_;
      }
      public Builder setPosition(int value) {
        bitField0_ |= 0x00000002;
        position_ = value;
        onChanged();
        return this;
      }
      public Builder clearPosition() {
        bitField0_ = (bitField0_ & ~0x00000002);
        position_ = 0;
        onChanged();
        return this;
      }
      
      // required uint32 fragment_index = 3;
      private int fragmentIndex_ ;
      public boolean hasFragmentIndex() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public int getFragmentIndex() {
        return fragmentIndex_;
      }
      public Builder setFragmentIndex(int value) {
        bitField0_ |= 0x00000004;
        fragmentIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearFragmentIndex() {
        bitField0_ = (bitField0_ & ~0x00000004);
        fragmentIndex_ = 0;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.RelatedAlignmentEntry)
    }
    
    static {
      defaultInstance = new RelatedAlignmentEntry(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.RelatedAlignmentEntry)
  }
  
  public interface SequenceVariationOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string from = 2;
    boolean hasFrom();
    String getFrom();
    
    // required string to = 1;
    boolean hasTo();
    String getTo();
    
    // required uint32 position = 3;
    boolean hasPosition();
    int getPosition();
    
    // required uint32 read_index = 5;
    boolean hasReadIndex();
    int getReadIndex();
    
    // optional bytes to_quality = 4;
    boolean hasToQuality();
    com.google.protobuf.ByteString getToQuality();
  }
  public static final class SequenceVariation extends
      com.google.protobuf.GeneratedMessage
      implements SequenceVariationOrBuilder {
    // Use SequenceVariation.newBuilder() to construct.
    private SequenceVariation(Builder builder) {
      super(builder);
    }
    private SequenceVariation(boolean noInit) {}
    
    private static final SequenceVariation defaultInstance;
    public static SequenceVariation getDefaultInstance() {
      return defaultInstance;
    }
    
    public SequenceVariation getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_SequenceVariation_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_SequenceVariation_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string from = 2;
    public static final int FROM_FIELD_NUMBER = 2;
    private java.lang.Object from_;
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getFrom() {
      java.lang.Object ref = from_;
      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)) {
          from_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getFromBytes() {
      java.lang.Object ref = from_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        from_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required string to = 1;
    public static final int TO_FIELD_NUMBER = 1;
    private java.lang.Object to_;
    public boolean hasTo() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public String getTo() {
      java.lang.Object ref = to_;
      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)) {
          to_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getToBytes() {
      java.lang.Object ref = to_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        to_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required uint32 position = 3;
    public static final int POSITION_FIELD_NUMBER = 3;
    private int position_;
    public boolean hasPosition() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public int getPosition() {
      return position_;
    }
    
    // required uint32 read_index = 5;
    public static final int READ_INDEX_FIELD_NUMBER = 5;
    private int readIndex_;
    public boolean hasReadIndex() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public int getReadIndex() {
      return readIndex_;
    }
    
    // optional bytes to_quality = 4;
    public static final int TO_QUALITY_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString toQuality_;
    public boolean hasToQuality() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public com.google.protobuf.ByteString getToQuality() {
      return toQuality_;
    }
    
    private void initFields() {
      from_ = "";
      to_ = "";
      position_ = 0;
      readIndex_ = 0;
      toQuality_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasFrom()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTo()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPosition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReadIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(1, getToBytes());
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(2, getFromBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, position_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(4, toQuality_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(5, readIndex_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getToBytes());
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getFromBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, position_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, toQuality_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, readIndex_);
      }
      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.alignments.Alignments.SequenceVariation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation 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.alignments.Alignments.SequenceVariation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation 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.alignments.Alignments.SequenceVariation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation 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.alignments.Alignments.SequenceVariation 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.alignments.Alignments.SequenceVariation 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.alignments.Alignments.SequenceVariation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation 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.alignments.Alignments.SequenceVariation 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.alignments.Alignments.SequenceVariationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_SequenceVariation_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_SequenceVariation_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.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();
        from_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        to_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        position_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        readIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        toQuality_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation build() {
        edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation result = new edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.from_ = from_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.to_ = to_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.position_ = position_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.readIndex_ = readIndex_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.toQuality_ = toQuality_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          setFrom(other.getFrom());
        }
        if (other.hasTo()) {
          setTo(other.getTo());
        }
        if (other.hasPosition()) {
          setPosition(other.getPosition());
        }
        if (other.hasReadIndex()) {
          setReadIndex(other.getReadIndex());
        }
        if (other.hasToQuality()) {
          setToQuality(other.getToQuality());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasFrom()) {
          
          return false;
        }
        if (!hasTo()) {
          
          return false;
        }
        if (!hasPosition()) {
          
          return false;
        }
        if (!hasReadIndex()) {
          
          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_ |= 0x00000002;
              to_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000001;
              from_ = input.readBytes();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              position_ = input.readUInt32();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000010;
              toQuality_ = input.readBytes();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              readIndex_ = input.readUInt32();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string from = 2;
      private java.lang.Object from_ = "";
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getFrom() {
        java.lang.Object ref = from_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          from_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setFrom(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        from_ = value;
        onChanged();
        return this;
      }
      public Builder clearFrom() {
        bitField0_ = (bitField0_ & ~0x00000001);
        from_ = getDefaultInstance().getFrom();
        onChanged();
        return this;
      }
      void setFrom(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        from_ = value;
        onChanged();
      }
      
      // required string to = 1;
      private java.lang.Object to_ = "";
      public boolean hasTo() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getTo() {
        java.lang.Object ref = to_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          to_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setTo(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        to_ = value;
        onChanged();
        return this;
      }
      public Builder clearTo() {
        bitField0_ = (bitField0_ & ~0x00000002);
        to_ = getDefaultInstance().getTo();
        onChanged();
        return this;
      }
      void setTo(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000002;
        to_ = value;
        onChanged();
      }
      
      // required uint32 position = 3;
      private int position_ ;
      public boolean hasPosition() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public int getPosition() {
        return position_;
      }
      public Builder setPosition(int value) {
        bitField0_ |= 0x00000004;
        position_ = value;
        onChanged();
        return this;
      }
      public Builder clearPosition() {
        bitField0_ = (bitField0_ & ~0x00000004);
        position_ = 0;
        onChanged();
        return this;
      }
      
      // required uint32 read_index = 5;
      private int readIndex_ ;
      public boolean hasReadIndex() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public int getReadIndex() {
        return readIndex_;
      }
      public Builder setReadIndex(int value) {
        bitField0_ |= 0x00000008;
        readIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearReadIndex() {
        bitField0_ = (bitField0_ & ~0x00000008);
        readIndex_ = 0;
        onChanged();
        return this;
      }
      
      // optional bytes to_quality = 4;
      private com.google.protobuf.ByteString toQuality_ = com.google.protobuf.ByteString.EMPTY;
      public boolean hasToQuality() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public com.google.protobuf.ByteString getToQuality() {
        return toQuality_;
      }
      public Builder setToQuality(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        toQuality_ = value;
        onChanged();
        return this;
      }
      public Builder clearToQuality() {
        bitField0_ = (bitField0_ & ~0x00000010);
        toQuality_ = getDefaultInstance().getToQuality();
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.SequenceVariation)
    }
    
    static {
      defaultInstance = new SequenceVariation(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.SequenceVariation)
  }
  
  public interface AlignmentHeaderOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // optional uint32 smallest_split_query_index = 9;
    boolean hasSmallestSplitQueryIndex();
    int getSmallestSplitQueryIndex();
    
    // optional uint32 largest_split_query_index = 11;
    boolean hasLargestSplitQueryIndex();
    int getLargestSplitQueryIndex();
    
    // optional .goby.IdentifierMapping query_name_mapping = 1;
    boolean hasQueryNameMapping();
    edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping getQueryNameMapping();
    edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder getQueryNameMappingOrBuilder();
    
    // optional .goby.IdentifierMapping target_name_mapping = 2;
    boolean hasTargetNameMapping();
    edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping getTargetNameMapping();
    edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder getTargetNameMappingOrBuilder();
    
    // optional uint32 number_of_queries = 5;
    boolean hasNumberOfQueries();
    int getNumberOfQueries();
    
    // optional uint32 number_of_targets = 6;
    boolean hasNumberOfTargets();
    int getNumberOfTargets();
    
    // optional uint32 number_of_aligned_reads = 7;
    boolean hasNumberOfAlignedReads();
    int getNumberOfAlignedReads();
    
    // repeated uint32 query_length = 3 [deprecated = true];
    @java.lang.Deprecated java.util.List<java.lang.Integer> getQueryLengthList();
    @java.lang.Deprecated int getQueryLengthCount();
    @java.lang.Deprecated int getQueryLength(int index);
    
    // optional uint32 constant_query_length = 10;
    boolean hasConstantQueryLength();
    int getConstantQueryLength();
    
    // repeated uint32 target_length = 8;
    java.util.List<java.lang.Integer> getTargetLengthList();
    int getTargetLengthCount();
    int getTargetLength(int index);
    
    // optional bool sorted = 13;
    boolean hasSorted();
    boolean getSorted();
    
    // optional bool indexed = 14;
    boolean hasIndexed();
    boolean getIndexed();
    
    // optional bool query_lengths_stored_in_entries = 15;
    boolean hasQueryLengthsStoredInEntries();
    boolean getQueryLengthsStoredInEntries();
    
    // optional string aligner_name = 17;
    boolean hasAlignerName();
    String getAlignerName();
    
    // optional string aligner_version = 18;
    boolean hasAlignerVersion();
    String getAlignerVersion();
    
    // optional string version = 25;
    boolean hasVersion();
    String getVersion();
    
    // repeated string sample_basename = 30;
    java.util.List<String> getSampleBasenameList();
    int getSampleBasenameCount();
    String getSampleBasename(int index);
  }
  public static final class AlignmentHeader extends
      com.google.protobuf.GeneratedMessage
      implements AlignmentHeaderOrBuilder {
    // Use AlignmentHeader.newBuilder() to construct.
    private AlignmentHeader(Builder builder) {
      super(builder);
    }
    private AlignmentHeader(boolean noInit) {}
    
    private static final AlignmentHeader defaultInstance;
    public static AlignmentHeader getDefaultInstance() {
      return defaultInstance;
    }
    
    public AlignmentHeader getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentHeader_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentHeader_fieldAccessorTable;
    }
    
    private int bitField0_;
    // optional uint32 smallest_split_query_index = 9;
    public static final int SMALLEST_SPLIT_QUERY_INDEX_FIELD_NUMBER = 9;
    private int smallestSplitQueryIndex_;
    public boolean hasSmallestSplitQueryIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getSmallestSplitQueryIndex() {
      return smallestSplitQueryIndex_;
    }
    
    // optional uint32 largest_split_query_index = 11;
    public static final int LARGEST_SPLIT_QUERY_INDEX_FIELD_NUMBER = 11;
    private int largestSplitQueryIndex_;
    public boolean hasLargestSplitQueryIndex() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getLargestSplitQueryIndex() {
      return largestSplitQueryIndex_;
    }
    
    // optional .goby.IdentifierMapping query_name_mapping = 1;
    public static final int QUERY_NAME_MAPPING_FIELD_NUMBER = 1;
    private edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping queryNameMapping_;
    public boolean hasQueryNameMapping() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping getQueryNameMapping() {
      return queryNameMapping_;
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder getQueryNameMappingOrBuilder() {
      return queryNameMapping_;
    }
    
    // optional .goby.IdentifierMapping target_name_mapping = 2;
    public static final int TARGET_NAME_MAPPING_FIELD_NUMBER = 2;
    private edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping targetNameMapping_;
    public boolean hasTargetNameMapping() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping getTargetNameMapping() {
      return targetNameMapping_;
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder getTargetNameMappingOrBuilder() {
      return targetNameMapping_;
    }
    
    // optional uint32 number_of_queries = 5;
    public static final int NUMBER_OF_QUERIES_FIELD_NUMBER = 5;
    private int numberOfQueries_;
    public boolean hasNumberOfQueries() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    public int getNumberOfQueries() {
      return numberOfQueries_;
    }
    
    // optional uint32 number_of_targets = 6;
    public static final int NUMBER_OF_TARGETS_FIELD_NUMBER = 6;
    private int numberOfTargets_;
    public boolean hasNumberOfTargets() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    public int getNumberOfTargets() {
      return numberOfTargets_;
    }
    
    // optional uint32 number_of_aligned_reads = 7;
    public static final int NUMBER_OF_ALIGNED_READS_FIELD_NUMBER = 7;
    private int numberOfAlignedReads_;
    public boolean hasNumberOfAlignedReads() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    public int getNumberOfAlignedReads() {
      return numberOfAlignedReads_;
    }
    
    // repeated uint32 query_length = 3 [deprecated = true];
    public static final int QUERY_LENGTH_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> queryLength_;
    @java.lang.Deprecated public java.util.List<java.lang.Integer>
        getQueryLengthList() {
      return queryLength_;
    }
    @java.lang.Deprecated public int getQueryLengthCount() {
      return queryLength_.size();
    }
    @java.lang.Deprecated public int getQueryLength(int index) {
      return queryLength_.get(index);
    }
    
    // optional uint32 constant_query_length = 10;
    public static final int CONSTANT_QUERY_LENGTH_FIELD_NUMBER = 10;
    private int constantQueryLength_;
    public boolean hasConstantQueryLength() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    public int getConstantQueryLength() {
      return constantQueryLength_;
    }
    
    // repeated uint32 target_length = 8;
    public static final int TARGET_LENGTH_FIELD_NUMBER = 8;
    private java.util.List<java.lang.Integer> targetLength_;
    public java.util.List<java.lang.Integer>
        getTargetLengthList() {
      return targetLength_;
    }
    public int getTargetLengthCount() {
      return targetLength_.size();
    }
    public int getTargetLength(int index) {
      return targetLength_.get(index);
    }
    
    // optional bool sorted = 13;
    public static final int SORTED_FIELD_NUMBER = 13;
    private boolean sorted_;
    public boolean hasSorted() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    public boolean getSorted() {
      return sorted_;
    }
    
    // optional bool indexed = 14;
    public static final int INDEXED_FIELD_NUMBER = 14;
    private boolean indexed_;
    public boolean hasIndexed() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    public boolean getIndexed() {
      return indexed_;
    }
    
    // optional bool query_lengths_stored_in_entries = 15;
    public static final int QUERY_LENGTHS_STORED_IN_ENTRIES_FIELD_NUMBER = 15;
    private boolean queryLengthsStoredInEntries_;
    public boolean hasQueryLengthsStoredInEntries() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    public boolean getQueryLengthsStoredInEntries() {
      return queryLengthsStoredInEntries_;
    }
    
    // optional string aligner_name = 17;
    public static final int ALIGNER_NAME_FIELD_NUMBER = 17;
    private java.lang.Object alignerName_;
    public boolean hasAlignerName() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    public String getAlignerName() {
      java.lang.Object ref = alignerName_;
      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)) {
          alignerName_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getAlignerNameBytes() {
      java.lang.Object ref = alignerName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        alignerName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string aligner_version = 18;
    public static final int ALIGNER_VERSION_FIELD_NUMBER = 18;
    private java.lang.Object alignerVersion_;
    public boolean hasAlignerVersion() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }
    public String getAlignerVersion() {
      java.lang.Object ref = alignerVersion_;
      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)) {
          alignerVersion_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getAlignerVersionBytes() {
      java.lang.Object ref = alignerVersion_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        alignerVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // optional string version = 25;
    public static final int VERSION_FIELD_NUMBER = 25;
    private java.lang.Object version_;
    public boolean hasVersion() {
      return ((bitField0_ & 0x00002000) == 0x00002000);
    }
    public String getVersion() {
      java.lang.Object ref = version_;
      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)) {
          version_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // repeated string sample_basename = 30;
    public static final int SAMPLE_BASENAME_FIELD_NUMBER = 30;
    private com.google.protobuf.LazyStringList sampleBasename_;
    public java.util.List<String>
        getSampleBasenameList() {
      return sampleBasename_;
    }
    public int getSampleBasenameCount() {
      return sampleBasename_.size();
    }
    public String getSampleBasename(int index) {
      return sampleBasename_.get(index);
    }
    
    private void initFields() {
      smallestSplitQueryIndex_ = 0;
      largestSplitQueryIndex_ = 0;
      queryNameMapping_ = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
      targetNameMapping_ = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
      numberOfQueries_ = 0;
      numberOfTargets_ = 0;
      numberOfAlignedReads_ = 0;
      queryLength_ = java.util.Collections.emptyList();;
      constantQueryLength_ = 0;
      targetLength_ = java.util.Collections.emptyList();;
      sorted_ = false;
      indexed_ = false;
      queryLengthsStoredInEntries_ = false;
      alignerName_ = "";
      alignerVersion_ = "";
      version_ = "";
      sampleBasename_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (hasQueryNameMapping()) {
        if (!getQueryNameMapping().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTargetNameMapping()) {
        if (!getTargetNameMapping().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(1, queryNameMapping_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(2, targetNameMapping_);
      }
      for (int i = 0; i < queryLength_.size(); i++) {
        output.writeUInt32(3, queryLength_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(5, numberOfQueries_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeUInt32(6, numberOfTargets_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeUInt32(7, numberOfAlignedReads_);
      }
      for (int i = 0; i < targetLength_.size(); i++) {
        output.writeUInt32(8, targetLength_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(9, smallestSplitQueryIndex_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeUInt32(10, constantQueryLength_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(11, largestSplitQueryIndex_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBool(13, sorted_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBool(14, indexed_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeBool(15, queryLengthsStoredInEntries_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeBytes(17, getAlignerNameBytes());
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeBytes(18, getAlignerVersionBytes());
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        output.writeBytes(25, getVersionBytes());
      }
      for (int i = 0; i < sampleBasename_.size(); i++) {
        output.writeBytes(30, sampleBasename_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, queryNameMapping_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, targetNameMapping_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < queryLength_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(queryLength_.get(i));
        }
        size += dataSize;
        size += 1 * getQueryLengthList().size();
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, numberOfQueries_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, numberOfTargets_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, numberOfAlignedReads_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < targetLength_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(targetLength_.get(i));
        }
        size += dataSize;
        size += 1 * getTargetLengthList().size();
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(9, smallestSplitQueryIndex_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(10, constantQueryLength_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(11, largestSplitQueryIndex_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, sorted_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(14, indexed_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(15, queryLengthsStoredInEntries_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(17, getAlignerNameBytes());
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(18, getAlignerVersionBytes());
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(25, getVersionBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sampleBasename_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(sampleBasename_.getByteString(i));
        }
        size += dataSize;
        size += 2 * getSampleBasenameList().size();
      }
      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.alignments.Alignments.AlignmentHeader parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader 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.alignments.Alignments.AlignmentHeader parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader 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.alignments.Alignments.AlignmentHeader parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader 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.alignments.Alignments.AlignmentHeader 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.alignments.Alignments.AlignmentHeader 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.alignments.Alignments.AlignmentHeader parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader 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.alignments.Alignments.AlignmentHeader 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.alignments.Alignments.AlignmentHeaderOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentHeader_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentHeader_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getQueryNameMappingFieldBuilder();
          getTargetNameMappingFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        smallestSplitQueryIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        largestSplitQueryIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (queryNameMappingBuilder_ == null) {
          queryNameMapping_ = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
        } else {
          queryNameMappingBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (targetNameMappingBuilder_ == null) {
          targetNameMapping_ = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
        } else {
          targetNameMappingBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        numberOfQueries_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        numberOfTargets_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        numberOfAlignedReads_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        queryLength_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000080);
        constantQueryLength_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        targetLength_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000200);
        sorted_ = false;
        bitField0_ = (bitField0_ & ~0x00000400);
        indexed_ = false;
        bitField0_ = (bitField0_ & ~0x00000800);
        queryLengthsStoredInEntries_ = false;
        bitField0_ = (bitField0_ & ~0x00001000);
        alignerName_ = "";
        bitField0_ = (bitField0_ & ~0x00002000);
        alignerVersion_ = "";
        bitField0_ = (bitField0_ & ~0x00004000);
        version_ = "";
        bitField0_ = (bitField0_ & ~0x00008000);
        sampleBasename_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00010000);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader build() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader result = new edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.smallestSplitQueryIndex_ = smallestSplitQueryIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.largestSplitQueryIndex_ = largestSplitQueryIndex_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (queryNameMappingBuilder_ == null) {
          result.queryNameMapping_ = queryNameMapping_;
        } else {
          result.queryNameMapping_ = queryNameMappingBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (targetNameMappingBuilder_ == null) {
          result.targetNameMapping_ = targetNameMapping_;
        } else {
          result.targetNameMapping_ = targetNameMappingBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.numberOfQueries_ = numberOfQueries_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.numberOfTargets_ = numberOfTargets_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.numberOfAlignedReads_ = numberOfAlignedReads_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          queryLength_ = java.util.Collections.unmodifiableList(queryLength_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.queryLength_ = queryLength_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000080;
        }
        result.constantQueryLength_ = constantQueryLength_;
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          targetLength_ = java.util.Collections.unmodifiableList(targetLength_);
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.targetLength_ = targetLength_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000100;
        }
        result.sorted_ = sorted_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000200;
        }
        result.indexed_ = indexed_;
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00000400;
        }
        result.queryLengthsStoredInEntries_ = queryLengthsStoredInEntries_;
        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
          to_bitField0_ |= 0x00000800;
        }
        result.alignerName_ = alignerName_;
        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
          to_bitField0_ |= 0x00001000;
        }
        result.alignerVersion_ = alignerVersion_;
        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
          to_bitField0_ |= 0x00002000;
        }
        result.version_ = version_;
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          sampleBasename_ = new com.google.protobuf.UnmodifiableLazyStringList(
              sampleBasename_);
          bitField0_ = (bitField0_ & ~0x00010000);
        }
        result.sampleBasename_ = sampleBasename_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader.getDefaultInstance()) return this;
        if (other.hasSmallestSplitQueryIndex()) {
          setSmallestSplitQueryIndex(other.getSmallestSplitQueryIndex());
        }
        if (other.hasLargestSplitQueryIndex()) {
          setLargestSplitQueryIndex(other.getLargestSplitQueryIndex());
        }
        if (other.hasQueryNameMapping()) {
          mergeQueryNameMapping(other.getQueryNameMapping());
        }
        if (other.hasTargetNameMapping()) {
          mergeTargetNameMapping(other.getTargetNameMapping());
        }
        if (other.hasNumberOfQueries()) {
          setNumberOfQueries(other.getNumberOfQueries());
        }
        if (other.hasNumberOfTargets()) {
          setNumberOfTargets(other.getNumberOfTargets());
        }
        if (other.hasNumberOfAlignedReads()) {
          setNumberOfAlignedReads(other.getNumberOfAlignedReads());
        }
        if (!other.queryLength_.isEmpty()) {
          if (queryLength_.isEmpty()) {
            queryLength_ = other.queryLength_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureQueryLengthIsMutable();
            queryLength_.addAll(other.queryLength_);
          }
          onChanged();
        }
        if (other.hasConstantQueryLength()) {
          setConstantQueryLength(other.getConstantQueryLength());
        }
        if (!other.targetLength_.isEmpty()) {
          if (targetLength_.isEmpty()) {
            targetLength_ = other.targetLength_;
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            ensureTargetLengthIsMutable();
            targetLength_.addAll(other.targetLength_);
          }
          onChanged();
        }
        if (other.hasSorted()) {
          setSorted(other.getSorted());
        }
        if (other.hasIndexed()) {
          setIndexed(other.getIndexed());
        }
        if (other.hasQueryLengthsStoredInEntries()) {
          setQueryLengthsStoredInEntries(other.getQueryLengthsStoredInEntries());
        }
        if (other.hasAlignerName()) {
          setAlignerName(other.getAlignerName());
        }
        if (other.hasAlignerVersion()) {
          setAlignerVersion(other.getAlignerVersion());
        }
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (!other.sampleBasename_.isEmpty()) {
          if (sampleBasename_.isEmpty()) {
            sampleBasename_ = other.sampleBasename_;
            bitField0_ = (bitField0_ & ~0x00010000);
          } else {
            ensureSampleBasenameIsMutable();
            sampleBasename_.addAll(other.sampleBasename_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (hasQueryNameMapping()) {
          if (!getQueryNameMapping().isInitialized()) {
            
            return false;
          }
        }
        if (hasTargetNameMapping()) {
          if (!getTargetNameMapping().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.alignments.Alignments.IdentifierMapping.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.newBuilder();
              if (hasQueryNameMapping()) {
                subBuilder.mergeFrom(getQueryNameMapping());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setQueryNameMapping(subBuilder.buildPartial());
              break;
            }
            case 18: {
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.newBuilder();
              if (hasTargetNameMapping()) {
                subBuilder.mergeFrom(getTargetNameMapping());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setTargetNameMapping(subBuilder.buildPartial());
              break;
            }
            case 24: {
              ensureQueryLengthIsMutable();
              queryLength_.add(input.readUInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              while (input.getBytesUntilLimit() > 0) {
                addQueryLength(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              numberOfQueries_ = input.readUInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              numberOfTargets_ = input.readUInt32();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              numberOfAlignedReads_ = input.readUInt32();
              break;
            }
            case 64: {
              ensureTargetLengthIsMutable();
              targetLength_.add(input.readUInt32());
              break;
            }
            case 66: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              while (input.getBytesUntilLimit() > 0) {
                addTargetLength(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 72: {
              bitField0_ |= 0x00000001;
              smallestSplitQueryIndex_ = input.readUInt32();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000100;
              constantQueryLength_ = input.readUInt32();
              break;
            }
            case 88: {
              bitField0_ |= 0x00000002;
              largestSplitQueryIndex_ = input.readUInt32();
              break;
            }
            case 104: {
              bitField0_ |= 0x00000400;
              sorted_ = input.readBool();
              break;
            }
            case 112: {
              bitField0_ |= 0x00000800;
              indexed_ = input.readBool();
              break;
            }
            case 120: {
              bitField0_ |= 0x00001000;
              queryLengthsStoredInEntries_ = input.readBool();
              break;
            }
            case 138: {
              bitField0_ |= 0x00002000;
              alignerName_ = input.readBytes();
              break;
            }
            case 146: {
              bitField0_ |= 0x00004000;
              alignerVersion_ = input.readBytes();
              break;
            }
            case 202: {
              bitField0_ |= 0x00008000;
              version_ = input.readBytes();
              break;
            }
            case 242: {
              ensureSampleBasenameIsMutable();
              sampleBasename_.add(input.readBytes());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // optional uint32 smallest_split_query_index = 9;
      private int smallestSplitQueryIndex_ ;
      public boolean hasSmallestSplitQueryIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getSmallestSplitQueryIndex() {
        return smallestSplitQueryIndex_;
      }
      public Builder setSmallestSplitQueryIndex(int value) {
        bitField0_ |= 0x00000001;
        smallestSplitQueryIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearSmallestSplitQueryIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        smallestSplitQueryIndex_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 largest_split_query_index = 11;
      private int largestSplitQueryIndex_ ;
      public boolean hasLargestSplitQueryIndex() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getLargestSplitQueryIndex() {
        return largestSplitQueryIndex_;
      }
      public Builder setLargestSplitQueryIndex(int value) {
        bitField0_ |= 0x00000002;
        largestSplitQueryIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearLargestSplitQueryIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        largestSplitQueryIndex_ = 0;
        onChanged();
        return this;
      }
      
      // optional .goby.IdentifierMapping query_name_mapping = 1;
      private edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping queryNameMapping_ = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder> queryNameMappingBuilder_;
      public boolean hasQueryNameMapping() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping getQueryNameMapping() {
        if (queryNameMappingBuilder_ == null) {
          return queryNameMapping_;
        } else {
          return queryNameMappingBuilder_.getMessage();
        }
      }
      public Builder setQueryNameMapping(edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping value) {
        if (queryNameMappingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          queryNameMapping_ = value;
          onChanged();
        } else {
          queryNameMappingBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder setQueryNameMapping(
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder builderForValue) {
        if (queryNameMappingBuilder_ == null) {
          queryNameMapping_ = builderForValue.build();
          onChanged();
        } else {
          queryNameMappingBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder mergeQueryNameMapping(edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping value) {
        if (queryNameMappingBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              queryNameMapping_ != edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance()) {
            queryNameMapping_ =
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.newBuilder(queryNameMapping_).mergeFrom(value).buildPartial();
          } else {
            queryNameMapping_ = value;
          }
          onChanged();
        } else {
          queryNameMappingBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      public Builder clearQueryNameMapping() {
        if (queryNameMappingBuilder_ == null) {
          queryNameMapping_ = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
          onChanged();
        } else {
          queryNameMappingBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder getQueryNameMappingBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getQueryNameMappingFieldBuilder().getBuilder();
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder getQueryNameMappingOrBuilder() {
        if (queryNameMappingBuilder_ != null) {
          return queryNameMappingBuilder_.getMessageOrBuilder();
        } else {
          return queryNameMapping_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder> 
          getQueryNameMappingFieldBuilder() {
        if (queryNameMappingBuilder_ == null) {
          queryNameMappingBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder>(
                  queryNameMapping_,
                  getParentForChildren(),
                  isClean());
          queryNameMapping_ = null;
        }
        return queryNameMappingBuilder_;
      }
      
      // optional .goby.IdentifierMapping target_name_mapping = 2;
      private edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping targetNameMapping_ = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder> targetNameMappingBuilder_;
      public boolean hasTargetNameMapping() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping getTargetNameMapping() {
        if (targetNameMappingBuilder_ == null) {
          return targetNameMapping_;
        } else {
          return targetNameMappingBuilder_.getMessage();
        }
      }
      public Builder setTargetNameMapping(edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping value) {
        if (targetNameMappingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          targetNameMapping_ = value;
          onChanged();
        } else {
          targetNameMappingBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder setTargetNameMapping(
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder builderForValue) {
        if (targetNameMappingBuilder_ == null) {
          targetNameMapping_ = builderForValue.build();
          onChanged();
        } else {
          targetNameMappingBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder mergeTargetNameMapping(edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping value) {
        if (targetNameMappingBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              targetNameMapping_ != edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance()) {
            targetNameMapping_ =
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.newBuilder(targetNameMapping_).mergeFrom(value).buildPartial();
          } else {
            targetNameMapping_ = value;
          }
          onChanged();
        } else {
          targetNameMappingBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      public Builder clearTargetNameMapping() {
        if (targetNameMappingBuilder_ == null) {
          targetNameMapping_ = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
          onChanged();
        } else {
          targetNameMappingBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder getTargetNameMappingBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getTargetNameMappingFieldBuilder().getBuilder();
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder getTargetNameMappingOrBuilder() {
        if (targetNameMappingBuilder_ != null) {
          return targetNameMappingBuilder_.getMessageOrBuilder();
        } else {
          return targetNameMapping_;
        }
      }
      private com.google.protobuf.SingleFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder> 
          getTargetNameMappingFieldBuilder() {
        if (targetNameMappingBuilder_ == null) {
          targetNameMappingBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMappingOrBuilder>(
                  targetNameMapping_,
                  getParentForChildren(),
                  isClean());
          targetNameMapping_ = null;
        }
        return targetNameMappingBuilder_;
      }
      
      // optional uint32 number_of_queries = 5;
      private int numberOfQueries_ ;
      public boolean hasNumberOfQueries() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public int getNumberOfQueries() {
        return numberOfQueries_;
      }
      public Builder setNumberOfQueries(int value) {
        bitField0_ |= 0x00000010;
        numberOfQueries_ = value;
        onChanged();
        return this;
      }
      public Builder clearNumberOfQueries() {
        bitField0_ = (bitField0_ & ~0x00000010);
        numberOfQueries_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 number_of_targets = 6;
      private int numberOfTargets_ ;
      public boolean hasNumberOfTargets() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public int getNumberOfTargets() {
        return numberOfTargets_;
      }
      public Builder setNumberOfTargets(int value) {
        bitField0_ |= 0x00000020;
        numberOfTargets_ = value;
        onChanged();
        return this;
      }
      public Builder clearNumberOfTargets() {
        bitField0_ = (bitField0_ & ~0x00000020);
        numberOfTargets_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 number_of_aligned_reads = 7;
      private int numberOfAlignedReads_ ;
      public boolean hasNumberOfAlignedReads() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public int getNumberOfAlignedReads() {
        return numberOfAlignedReads_;
      }
      public Builder setNumberOfAlignedReads(int value) {
        bitField0_ |= 0x00000040;
        numberOfAlignedReads_ = value;
        onChanged();
        return this;
      }
      public Builder clearNumberOfAlignedReads() {
        bitField0_ = (bitField0_ & ~0x00000040);
        numberOfAlignedReads_ = 0;
        onChanged();
        return this;
      }
      
      // repeated uint32 query_length = 3 [deprecated = true];
      private java.util.List<java.lang.Integer> queryLength_ = java.util.Collections.emptyList();;
      private void ensureQueryLengthIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          queryLength_ = new java.util.ArrayList<java.lang.Integer>(queryLength_);
          bitField0_ |= 0x00000080;
         }
      }
      @java.lang.Deprecated public java.util.List<java.lang.Integer>
          getQueryLengthList() {
        return java.util.Collections.unmodifiableList(queryLength_);
      }
      @java.lang.Deprecated public int getQueryLengthCount() {
        return queryLength_.size();
      }
      @java.lang.Deprecated public int getQueryLength(int index) {
        return queryLength_.get(index);
      }
      @java.lang.Deprecated public Builder setQueryLength(
          int index, int value) {
        ensureQueryLengthIsMutable();
        queryLength_.set(index, value);
        onChanged();
        return this;
      }
      @java.lang.Deprecated public Builder addQueryLength(int value) {
        ensureQueryLengthIsMutable();
        queryLength_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Deprecated public Builder addAllQueryLength(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureQueryLengthIsMutable();
        super.addAll(values, queryLength_);
        onChanged();
        return this;
      }
      @java.lang.Deprecated public Builder clearQueryLength() {
        queryLength_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      
      // optional uint32 constant_query_length = 10;
      private int constantQueryLength_ ;
      public boolean hasConstantQueryLength() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      public int getConstantQueryLength() {
        return constantQueryLength_;
      }
      public Builder setConstantQueryLength(int value) {
        bitField0_ |= 0x00000100;
        constantQueryLength_ = value;
        onChanged();
        return this;
      }
      public Builder clearConstantQueryLength() {
        bitField0_ = (bitField0_ & ~0x00000100);
        constantQueryLength_ = 0;
        onChanged();
        return this;
      }
      
      // repeated uint32 target_length = 8;
      private java.util.List<java.lang.Integer> targetLength_ = java.util.Collections.emptyList();;
      private void ensureTargetLengthIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          targetLength_ = new java.util.ArrayList<java.lang.Integer>(targetLength_);
          bitField0_ |= 0x00000200;
         }
      }
      public java.util.List<java.lang.Integer>
          getTargetLengthList() {
        return java.util.Collections.unmodifiableList(targetLength_);
      }
      public int getTargetLengthCount() {
        return targetLength_.size();
      }
      public int getTargetLength(int index) {
        return targetLength_.get(index);
      }
      public Builder setTargetLength(
          int index, int value) {
        ensureTargetLengthIsMutable();
        targetLength_.set(index, value);
        onChanged();
        return this;
      }
      public Builder addTargetLength(int value) {
        ensureTargetLengthIsMutable();
        targetLength_.add(value);
        onChanged();
        return this;
      }
      public Builder addAllTargetLength(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTargetLengthIsMutable();
        super.addAll(values, targetLength_);
        onChanged();
        return this;
      }
      public Builder clearTargetLength() {
        targetLength_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      
      // optional bool sorted = 13;
      private boolean sorted_ ;
      public boolean hasSorted() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      public boolean getSorted() {
        return sorted_;
      }
      public Builder setSorted(boolean value) {
        bitField0_ |= 0x00000400;
        sorted_ = value;
        onChanged();
        return this;
      }
      public Builder clearSorted() {
        bitField0_ = (bitField0_ & ~0x00000400);
        sorted_ = false;
        onChanged();
        return this;
      }
      
      // optional bool indexed = 14;
      private boolean indexed_ ;
      public boolean hasIndexed() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      public boolean getIndexed() {
        return indexed_;
      }
      public Builder setIndexed(boolean value) {
        bitField0_ |= 0x00000800;
        indexed_ = value;
        onChanged();
        return this;
      }
      public Builder clearIndexed() {
        bitField0_ = (bitField0_ & ~0x00000800);
        indexed_ = false;
        onChanged();
        return this;
      }
      
      // optional bool query_lengths_stored_in_entries = 15;
      private boolean queryLengthsStoredInEntries_ ;
      public boolean hasQueryLengthsStoredInEntries() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      public boolean getQueryLengthsStoredInEntries() {
        return queryLengthsStoredInEntries_;
      }
      public Builder setQueryLengthsStoredInEntries(boolean value) {
        bitField0_ |= 0x00001000;
        queryLengthsStoredInEntries_ = value;
        onChanged();
        return this;
      }
      public Builder clearQueryLengthsStoredInEntries() {
        bitField0_ = (bitField0_ & ~0x00001000);
        queryLengthsStoredInEntries_ = false;
        onChanged();
        return this;
      }
      
      // optional string aligner_name = 17;
      private java.lang.Object alignerName_ = "";
      public boolean hasAlignerName() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      public String getAlignerName() {
        java.lang.Object ref = alignerName_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          alignerName_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setAlignerName(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00002000;
        alignerName_ = value;
        onChanged();
        return this;
      }
      public Builder clearAlignerName() {
        bitField0_ = (bitField0_ & ~0x00002000);
        alignerName_ = getDefaultInstance().getAlignerName();
        onChanged();
        return this;
      }
      void setAlignerName(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00002000;
        alignerName_ = value;
        onChanged();
      }
      
      // optional string aligner_version = 18;
      private java.lang.Object alignerVersion_ = "";
      public boolean hasAlignerVersion() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      public String getAlignerVersion() {
        java.lang.Object ref = alignerVersion_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          alignerVersion_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setAlignerVersion(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00004000;
        alignerVersion_ = value;
        onChanged();
        return this;
      }
      public Builder clearAlignerVersion() {
        bitField0_ = (bitField0_ & ~0x00004000);
        alignerVersion_ = getDefaultInstance().getAlignerVersion();
        onChanged();
        return this;
      }
      void setAlignerVersion(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00004000;
        alignerVersion_ = value;
        onChanged();
      }
      
      // optional string version = 25;
      private java.lang.Object version_ = "";
      public boolean hasVersion() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      public String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setVersion(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00008000;
        version_ = value;
        onChanged();
        return this;
      }
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00008000);
        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      void setVersion(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00008000;
        version_ = value;
        onChanged();
      }
      
      // repeated string sample_basename = 30;
      private com.google.protobuf.LazyStringList sampleBasename_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSampleBasenameIsMutable() {
        if (!((bitField0_ & 0x00010000) == 0x00010000)) {
          sampleBasename_ = new com.google.protobuf.LazyStringArrayList(sampleBasename_);
          bitField0_ |= 0x00010000;
         }
      }
      public java.util.List<String>
          getSampleBasenameList() {
        return java.util.Collections.unmodifiableList(sampleBasename_);
      }
      public int getSampleBasenameCount() {
        return sampleBasename_.size();
      }
      public String getSampleBasename(int index) {
        return sampleBasename_.get(index);
      }
      public Builder setSampleBasename(
          int index, String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSampleBasenameIsMutable();
        sampleBasename_.set(index, value);
        onChanged();
        return this;
      }
      public Builder addSampleBasename(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSampleBasenameIsMutable();
        sampleBasename_.add(value);
        onChanged();
        return this;
      }
      public Builder addAllSampleBasename(
          java.lang.Iterable<String> values) {
        ensureSampleBasenameIsMutable();
        super.addAll(values, sampleBasename_);
        onChanged();
        return this;
      }
      public Builder clearSampleBasename() {
        sampleBasename_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }
      void addSampleBasename(com.google.protobuf.ByteString value) {
        ensureSampleBasenameIsMutable();
        sampleBasename_.add(value);
        onChanged();
      }
      
      // @@protoc_insertion_point(builder_scope:goby.AlignmentHeader)
    }
    
    static {
      defaultInstance = new AlignmentHeader(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.AlignmentHeader)
  }
  
  public interface IdentifierMappingOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // repeated .goby.IdentifierInfo mappings = 1;
    java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo> 
        getMappingsList();
    edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo getMappings(int index);
    int getMappingsCount();
    java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder> 
        getMappingsOrBuilderList();
    edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder getMappingsOrBuilder(
        int index);
  }
  public static final class IdentifierMapping extends
      com.google.protobuf.GeneratedMessage
      implements IdentifierMappingOrBuilder {
    // Use IdentifierMapping.newBuilder() to construct.
    private IdentifierMapping(Builder builder) {
      super(builder);
    }
    private IdentifierMapping(boolean noInit) {}
    
    private static final IdentifierMapping defaultInstance;
    public static IdentifierMapping getDefaultInstance() {
      return defaultInstance;
    }
    
    public IdentifierMapping getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_IdentifierMapping_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_IdentifierMapping_fieldAccessorTable;
    }
    
    // repeated .goby.IdentifierInfo mappings = 1;
    public static final int MAPPINGS_FIELD_NUMBER = 1;
    private java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo> mappings_;
    public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo> getMappingsList() {
      return mappings_;
    }
    public java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder> 
        getMappingsOrBuilderList() {
      return mappings_;
    }
    public int getMappingsCount() {
      return mappings_.size();
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo getMappings(int index) {
      return mappings_.get(index);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder getMappingsOrBuilder(
        int index) {
      return mappings_.get(index);
    }
    
    private void initFields() {
      mappings_ = 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 < getMappingsCount(); i++) {
        if (!getMappings(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 < mappings_.size(); i++) {
        output.writeMessage(1, mappings_.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 < mappings_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, mappings_.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.alignments.Alignments.IdentifierMapping parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping 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.alignments.Alignments.IdentifierMapping parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping 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.alignments.Alignments.IdentifierMapping parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping 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.alignments.Alignments.IdentifierMapping 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.alignments.Alignments.IdentifierMapping 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.alignments.Alignments.IdentifierMapping parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping 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.alignments.Alignments.IdentifierMapping 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.alignments.Alignments.IdentifierMappingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_IdentifierMapping_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_IdentifierMapping_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMappingsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        if (mappingsBuilder_ == null) {
          mappings_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          mappingsBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping build() {
        edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping result = new edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping(this);
        int from_bitField0_ = bitField0_;
        if (mappingsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            mappings_ = java.util.Collections.unmodifiableList(mappings_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.mappings_ = mappings_;
        } else {
          result.mappings_ = mappingsBuilder_.build();
        }
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.getDefaultInstance()) return this;
        if (mappingsBuilder_ == null) {
          if (!other.mappings_.isEmpty()) {
            if (mappings_.isEmpty()) {
              mappings_ = other.mappings_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMappingsIsMutable();
              mappings_.addAll(other.mappings_);
            }
            onChanged();
          }
        } else {
          if (!other.mappings_.isEmpty()) {
            if (mappingsBuilder_.isEmpty()) {
              mappingsBuilder_.dispose();
              mappingsBuilder_ = null;
              mappings_ = other.mappings_;
              bitField0_ = (bitField0_ & ~0x00000001);
              mappingsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMappingsFieldBuilder() : null;
            } else {
              mappingsBuilder_.addAllMessages(other.mappings_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        for (int i = 0; i < getMappingsCount(); i++) {
          if (!getMappings(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.alignments.Alignments.IdentifierInfo.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addMappings(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // repeated .goby.IdentifierInfo mappings = 1;
      private java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo> mappings_ =
        java.util.Collections.emptyList();
      private void ensureMappingsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          mappings_ = new java.util.ArrayList<edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo>(mappings_);
          bitField0_ |= 0x00000001;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder> mappingsBuilder_;
      
      public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo> getMappingsList() {
        if (mappingsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mappings_);
        } else {
          return mappingsBuilder_.getMessageList();
        }
      }
      public int getMappingsCount() {
        if (mappingsBuilder_ == null) {
          return mappings_.size();
        } else {
          return mappingsBuilder_.getCount();
        }
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo getMappings(int index) {
        if (mappingsBuilder_ == null) {
          return mappings_.get(index);
        } else {
          return mappingsBuilder_.getMessage(index);
        }
      }
      public Builder setMappings(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo value) {
        if (mappingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMappingsIsMutable();
          mappings_.set(index, value);
          onChanged();
        } else {
          mappingsBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setMappings(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder builderForValue) {
        if (mappingsBuilder_ == null) {
          ensureMappingsIsMutable();
          mappings_.set(index, builderForValue.build());
          onChanged();
        } else {
          mappingsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addMappings(edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo value) {
        if (mappingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMappingsIsMutable();
          mappings_.add(value);
          onChanged();
        } else {
          mappingsBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addMappings(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo value) {
        if (mappingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMappingsIsMutable();
          mappings_.add(index, value);
          onChanged();
        } else {
          mappingsBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addMappings(
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder builderForValue) {
        if (mappingsBuilder_ == null) {
          ensureMappingsIsMutable();
          mappings_.add(builderForValue.build());
          onChanged();
        } else {
          mappingsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addMappings(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder builderForValue) {
        if (mappingsBuilder_ == null) {
          ensureMappingsIsMutable();
          mappings_.add(index, builderForValue.build());
          onChanged();
        } else {
          mappingsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllMappings(
          java.lang.Iterable<? extends edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo> values) {
        if (mappingsBuilder_ == null) {
          ensureMappingsIsMutable();
          super.addAll(values, mappings_);
          onChanged();
        } else {
          mappingsBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearMappings() {
        if (mappingsBuilder_ == null) {
          mappings_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          mappingsBuilder_.clear();
        }
        return this;
      }
      public Builder removeMappings(int index) {
        if (mappingsBuilder_ == null) {
          ensureMappingsIsMutable();
          mappings_.remove(index);
          onChanged();
        } else {
          mappingsBuilder_.remove(index);
        }
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder getMappingsBuilder(
          int index) {
        return getMappingsFieldBuilder().getBuilder(index);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder getMappingsOrBuilder(
          int index) {
        if (mappingsBuilder_ == null) {
          return mappings_.get(index);  } else {
          return mappingsBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder> 
           getMappingsOrBuilderList() {
        if (mappingsBuilder_ != null) {
          return mappingsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mappings_);
        }
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder addMappingsBuilder() {
        return getMappingsFieldBuilder().addBuilder(
            edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.getDefaultInstance());
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder addMappingsBuilder(
          int index) {
        return getMappingsFieldBuilder().addBuilder(
            index, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.getDefaultInstance());
      }
      public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder> 
           getMappingsBuilderList() {
        return getMappingsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder> 
          getMappingsFieldBuilder() {
        if (mappingsBuilder_ == null) {
          mappingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder, edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfoOrBuilder>(
                  mappings_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          mappings_ = null;
        }
        return mappingsBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.IdentifierMapping)
    }
    
    static {
      defaultInstance = new IdentifierMapping(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.IdentifierMapping)
  }
  
  public interface IdentifierInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required string name = 1;
    boolean hasName();
    String getName();
    
    // required uint32 index = 2;
    boolean hasIndex();
    int getIndex();
  }
  public static final class IdentifierInfo extends
      com.google.protobuf.GeneratedMessage
      implements IdentifierInfoOrBuilder {
    // Use IdentifierInfo.newBuilder() to construct.
    private IdentifierInfo(Builder builder) {
      super(builder);
    }
    private IdentifierInfo(boolean noInit) {}
    
    private static final IdentifierInfo defaultInstance;
    public static IdentifierInfo getDefaultInstance() {
      return defaultInstance;
    }
    
    public IdentifierInfo getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_IdentifierInfo_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_IdentifierInfo_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public String getName() {
      java.lang.Object ref = name_;
      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)) {
          name_ = s;
        }
        return s;
      }
    }
    private com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8((String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    
    // required uint32 index = 2;
    public static final int INDEX_FIELD_NUMBER = 2;
    private int index_;
    public boolean hasIndex() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getIndex() {
      return index_;
    }
    
    private void initFields() {
      name_ = "";
      index_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, index_);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, index_);
      }
      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.alignments.Alignments.IdentifierInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo 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.alignments.Alignments.IdentifierInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo 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.alignments.Alignments.IdentifierInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo 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.alignments.Alignments.IdentifierInfo 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.alignments.Alignments.IdentifierInfo 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.alignments.Alignments.IdentifierInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo 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.alignments.Alignments.IdentifierInfo 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.alignments.Alignments.IdentifierInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_IdentifierInfo_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_IdentifierInfo_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.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();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        index_ = 0;
        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.alignments.Alignments.IdentifierInfo.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo build() {
        edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo result = new edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.index_ = index_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.getDefaultInstance()) return this;
        if (other.hasName()) {
          setName(other.getName());
        }
        if (other.hasIndex()) {
          setIndex(other.getIndex());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!hasIndex()) {
          
          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;
              name_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              index_ = input.readUInt32();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required string name = 1;
      private java.lang.Object name_ = "";
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof String)) {
          String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      public Builder setName(String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      void setName(com.google.protobuf.ByteString value) {
        bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
      }
      
      // required uint32 index = 2;
      private int index_ ;
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getIndex() {
        return index_;
      }
      public Builder setIndex(int value) {
        bitField0_ |= 0x00000002;
        index_ = value;
        onChanged();
        return this;
      }
      public Builder clearIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        index_ = 0;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.IdentifierInfo)
    }
    
    static {
      defaultInstance = new IdentifierInfo(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.IdentifierInfo)
  }
  
  public interface AlignmentTooManyHitsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required uint32 aligner_threshold = 2;
    boolean hasAlignerThreshold();
    int getAlignerThreshold();
    
    // repeated .goby.AmbiguousLocation hits = 1;
    java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation> 
        getHitsList();
    edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation getHits(int index);
    int getHitsCount();
    java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder> 
        getHitsOrBuilderList();
    edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder getHitsOrBuilder(
        int index);
  }
  public static final class AlignmentTooManyHits extends
      com.google.protobuf.GeneratedMessage
      implements AlignmentTooManyHitsOrBuilder {
    // Use AlignmentTooManyHits.newBuilder() to construct.
    private AlignmentTooManyHits(Builder builder) {
      super(builder);
    }
    private AlignmentTooManyHits(boolean noInit) {}
    
    private static final AlignmentTooManyHits defaultInstance;
    public static AlignmentTooManyHits getDefaultInstance() {
      return defaultInstance;
    }
    
    public AlignmentTooManyHits getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentTooManyHits_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentTooManyHits_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required uint32 aligner_threshold = 2;
    public static final int ALIGNER_THRESHOLD_FIELD_NUMBER = 2;
    private int alignerThreshold_;
    public boolean hasAlignerThreshold() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getAlignerThreshold() {
      return alignerThreshold_;
    }
    
    // repeated .goby.AmbiguousLocation hits = 1;
    public static final int HITS_FIELD_NUMBER = 1;
    private java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation> hits_;
    public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation> getHitsList() {
      return hits_;
    }
    public java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder> 
        getHitsOrBuilderList() {
      return hits_;
    }
    public int getHitsCount() {
      return hits_.size();
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation getHits(int index) {
      return hits_.get(index);
    }
    public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder getHitsOrBuilder(
        int index) {
      return hits_.get(index);
    }
    
    private void initFields() {
      alignerThreshold_ = 0;
      hits_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasAlignerThreshold()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getHitsCount(); i++) {
        if (!getHits(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 < hits_.size(); i++) {
        output.writeMessage(1, hits_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(2, alignerThreshold_);
      }
      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 < hits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, hits_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, alignerThreshold_);
      }
      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.alignments.Alignments.AlignmentTooManyHits parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits 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.alignments.Alignments.AlignmentTooManyHits parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits 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.alignments.Alignments.AlignmentTooManyHits parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits 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.alignments.Alignments.AlignmentTooManyHits 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.alignments.Alignments.AlignmentTooManyHits 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.alignments.Alignments.AlignmentTooManyHits parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits 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.alignments.Alignments.AlignmentTooManyHits 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.alignments.Alignments.AlignmentTooManyHitsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentTooManyHits_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentTooManyHits_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      
      private Builder(BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getHitsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }
      
      public Builder clear() {
        super.clear();
        alignerThreshold_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (hitsBuilder_ == null) {
          hits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          hitsBuilder_.clear();
        }
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits build() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits result = new edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.alignerThreshold_ = alignerThreshold_;
        if (hitsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            hits_ = java.util.Collections.unmodifiableList(hits_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.hits_ = hits_;
        } else {
          result.hits_ = hitsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits.getDefaultInstance()) return this;
        if (other.hasAlignerThreshold()) {
          setAlignerThreshold(other.getAlignerThreshold());
        }
        if (hitsBuilder_ == null) {
          if (!other.hits_.isEmpty()) {
            if (hits_.isEmpty()) {
              hits_ = other.hits_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureHitsIsMutable();
              hits_.addAll(other.hits_);
            }
            onChanged();
          }
        } else {
          if (!other.hits_.isEmpty()) {
            if (hitsBuilder_.isEmpty()) {
              hitsBuilder_.dispose();
              hitsBuilder_ = null;
              hits_ = other.hits_;
              bitField0_ = (bitField0_ & ~0x00000002);
              hitsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getHitsFieldBuilder() : null;
            } else {
              hitsBuilder_.addAllMessages(other.hits_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasAlignerThreshold()) {
          
          return false;
        }
        for (int i = 0; i < getHitsCount(); i++) {
          if (!getHits(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.alignments.Alignments.AmbiguousLocation.Builder subBuilder = edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addHits(subBuilder.buildPartial());
              break;
            }
            case 16: {
              bitField0_ |= 0x00000001;
              alignerThreshold_ = input.readUInt32();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required uint32 aligner_threshold = 2;
      private int alignerThreshold_ ;
      public boolean hasAlignerThreshold() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getAlignerThreshold() {
        return alignerThreshold_;
      }
      public Builder setAlignerThreshold(int value) {
        bitField0_ |= 0x00000001;
        alignerThreshold_ = value;
        onChanged();
        return this;
      }
      public Builder clearAlignerThreshold() {
        bitField0_ = (bitField0_ & ~0x00000001);
        alignerThreshold_ = 0;
        onChanged();
        return this;
      }
      
      // repeated .goby.AmbiguousLocation hits = 1;
      private java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation> hits_ =
        java.util.Collections.emptyList();
      private void ensureHitsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          hits_ = new java.util.ArrayList<edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation>(hits_);
          bitField0_ |= 0x00000002;
         }
      }
      
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder> hitsBuilder_;
      
      public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation> getHitsList() {
        if (hitsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(hits_);
        } else {
          return hitsBuilder_.getMessageList();
        }
      }
      public int getHitsCount() {
        if (hitsBuilder_ == null) {
          return hits_.size();
        } else {
          return hitsBuilder_.getCount();
        }
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation getHits(int index) {
        if (hitsBuilder_ == null) {
          return hits_.get(index);
        } else {
          return hitsBuilder_.getMessage(index);
        }
      }
      public Builder setHits(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation value) {
        if (hitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHitsIsMutable();
          hits_.set(index, value);
          onChanged();
        } else {
          hitsBuilder_.setMessage(index, value);
        }
        return this;
      }
      public Builder setHits(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder builderForValue) {
        if (hitsBuilder_ == null) {
          ensureHitsIsMutable();
          hits_.set(index, builderForValue.build());
          onChanged();
        } else {
          hitsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addHits(edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation value) {
        if (hitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHitsIsMutable();
          hits_.add(value);
          onChanged();
        } else {
          hitsBuilder_.addMessage(value);
        }
        return this;
      }
      public Builder addHits(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation value) {
        if (hitsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHitsIsMutable();
          hits_.add(index, value);
          onChanged();
        } else {
          hitsBuilder_.addMessage(index, value);
        }
        return this;
      }
      public Builder addHits(
          edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder builderForValue) {
        if (hitsBuilder_ == null) {
          ensureHitsIsMutable();
          hits_.add(builderForValue.build());
          onChanged();
        } else {
          hitsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      public Builder addHits(
          int index, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder builderForValue) {
        if (hitsBuilder_ == null) {
          ensureHitsIsMutable();
          hits_.add(index, builderForValue.build());
          onChanged();
        } else {
          hitsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      public Builder addAllHits(
          java.lang.Iterable<? extends edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation> values) {
        if (hitsBuilder_ == null) {
          ensureHitsIsMutable();
          super.addAll(values, hits_);
          onChanged();
        } else {
          hitsBuilder_.addAllMessages(values);
        }
        return this;
      }
      public Builder clearHits() {
        if (hitsBuilder_ == null) {
          hits_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          hitsBuilder_.clear();
        }
        return this;
      }
      public Builder removeHits(int index) {
        if (hitsBuilder_ == null) {
          ensureHitsIsMutable();
          hits_.remove(index);
          onChanged();
        } else {
          hitsBuilder_.remove(index);
        }
        return this;
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder getHitsBuilder(
          int index) {
        return getHitsFieldBuilder().getBuilder(index);
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder getHitsOrBuilder(
          int index) {
        if (hitsBuilder_ == null) {
          return hits_.get(index);  } else {
          return hitsBuilder_.getMessageOrBuilder(index);
        }
      }
      public java.util.List<? extends edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder> 
           getHitsOrBuilderList() {
        if (hitsBuilder_ != null) {
          return hitsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(hits_);
        }
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder addHitsBuilder() {
        return getHitsFieldBuilder().addBuilder(
            edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.getDefaultInstance());
      }
      public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder addHitsBuilder(
          int index) {
        return getHitsFieldBuilder().addBuilder(
            index, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.getDefaultInstance());
      }
      public java.util.List<edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder> 
           getHitsBuilderList() {
        return getHitsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder> 
          getHitsFieldBuilder() {
        if (hitsBuilder_ == null) {
          hitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder, edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocationOrBuilder>(
                  hits_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          hits_ = null;
        }
        return hitsBuilder_;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.AlignmentTooManyHits)
    }
    
    static {
      defaultInstance = new AlignmentTooManyHits(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.AlignmentTooManyHits)
  }
  
  public interface AmbiguousLocationOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // required uint32 query_index = 1;
    boolean hasQueryIndex();
    int getQueryIndex();
    
    // required uint32 at_least_number_of_hits = 2;
    boolean hasAtLeastNumberOfHits();
    int getAtLeastNumberOfHits();
    
    // optional uint32 length_of_match = 3;
    boolean hasLengthOfMatch();
    int getLengthOfMatch();
  }
  public static final class AmbiguousLocation extends
      com.google.protobuf.GeneratedMessage
      implements AmbiguousLocationOrBuilder {
    // Use AmbiguousLocation.newBuilder() to construct.
    private AmbiguousLocation(Builder builder) {
      super(builder);
    }
    private AmbiguousLocation(boolean noInit) {}
    
    private static final AmbiguousLocation defaultInstance;
    public static AmbiguousLocation getDefaultInstance() {
      return defaultInstance;
    }
    
    public AmbiguousLocation getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AmbiguousLocation_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AmbiguousLocation_fieldAccessorTable;
    }
    
    private int bitField0_;
    // required uint32 query_index = 1;
    public static final int QUERY_INDEX_FIELD_NUMBER = 1;
    private int queryIndex_;
    public boolean hasQueryIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    public int getQueryIndex() {
      return queryIndex_;
    }
    
    // required uint32 at_least_number_of_hits = 2;
    public static final int AT_LEAST_NUMBER_OF_HITS_FIELD_NUMBER = 2;
    private int atLeastNumberOfHits_;
    public boolean hasAtLeastNumberOfHits() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    public int getAtLeastNumberOfHits() {
      return atLeastNumberOfHits_;
    }
    
    // optional uint32 length_of_match = 3;
    public static final int LENGTH_OF_MATCH_FIELD_NUMBER = 3;
    private int lengthOfMatch_;
    public boolean hasLengthOfMatch() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    public int getLengthOfMatch() {
      return lengthOfMatch_;
    }
    
    private void initFields() {
      queryIndex_ = 0;
      atLeastNumberOfHits_ = 0;
      lengthOfMatch_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasQueryIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAtLeastNumberOfHits()) {
        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, queryIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, atLeastNumberOfHits_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, lengthOfMatch_);
      }
      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, queryIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, atLeastNumberOfHits_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, lengthOfMatch_);
      }
      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.alignments.Alignments.AmbiguousLocation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation 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.alignments.Alignments.AmbiguousLocation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation 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.alignments.Alignments.AmbiguousLocation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation 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.alignments.Alignments.AmbiguousLocation 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.alignments.Alignments.AmbiguousLocation 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.alignments.Alignments.AmbiguousLocation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation 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.alignments.Alignments.AmbiguousLocation 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.alignments.Alignments.AmbiguousLocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AmbiguousLocation_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AmbiguousLocation_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.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();
        queryIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        atLeastNumberOfHits_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        lengthOfMatch_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation build() {
        edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation result = new edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.queryIndex_ = queryIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.atLeastNumberOfHits_ = atLeastNumberOfHits_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.lengthOfMatch_ = lengthOfMatch_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.getDefaultInstance()) return this;
        if (other.hasQueryIndex()) {
          setQueryIndex(other.getQueryIndex());
        }
        if (other.hasAtLeastNumberOfHits()) {
          setAtLeastNumberOfHits(other.getAtLeastNumberOfHits());
        }
        if (other.hasLengthOfMatch()) {
          setLengthOfMatch(other.getLengthOfMatch());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        if (!hasQueryIndex()) {
          
          return false;
        }
        if (!hasAtLeastNumberOfHits()) {
          
          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;
              queryIndex_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              atLeastNumberOfHits_ = input.readUInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              lengthOfMatch_ = input.readUInt32();
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // required uint32 query_index = 1;
      private int queryIndex_ ;
      public boolean hasQueryIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public int getQueryIndex() {
        return queryIndex_;
      }
      public Builder setQueryIndex(int value) {
        bitField0_ |= 0x00000001;
        queryIndex_ = value;
        onChanged();
        return this;
      }
      public Builder clearQueryIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        queryIndex_ = 0;
        onChanged();
        return this;
      }
      
      // required uint32 at_least_number_of_hits = 2;
      private int atLeastNumberOfHits_ ;
      public boolean hasAtLeastNumberOfHits() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public int getAtLeastNumberOfHits() {
        return atLeastNumberOfHits_;
      }
      public Builder setAtLeastNumberOfHits(int value) {
        bitField0_ |= 0x00000002;
        atLeastNumberOfHits_ = value;
        onChanged();
        return this;
      }
      public Builder clearAtLeastNumberOfHits() {
        bitField0_ = (bitField0_ & ~0x00000002);
        atLeastNumberOfHits_ = 0;
        onChanged();
        return this;
      }
      
      // optional uint32 length_of_match = 3;
      private int lengthOfMatch_ ;
      public boolean hasLengthOfMatch() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public int getLengthOfMatch() {
        return lengthOfMatch_;
      }
      public Builder setLengthOfMatch(int value) {
        bitField0_ |= 0x00000004;
        lengthOfMatch_ = value;
        onChanged();
        return this;
      }
      public Builder clearLengthOfMatch() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lengthOfMatch_ = 0;
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.AmbiguousLocation)
    }
    
    static {
      defaultInstance = new AmbiguousLocation(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.AmbiguousLocation)
  }
  
  public interface AlignmentIndexOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
    
    // repeated uint32 target_position_offsets = 1 [packed = true];
    java.util.List<java.lang.Integer> getTargetPositionOffsetsList();
    int getTargetPositionOffsetsCount();
    int getTargetPositionOffsets(int index);
    
    // repeated uint64 offsets = 2 [packed = true];
    java.util.List<java.lang.Long> getOffsetsList();
    int getOffsetsCount();
    long getOffsets(int index);
    
    // repeated uint64 absolute_positions = 3 [packed = true];
    java.util.List<java.lang.Long> getAbsolutePositionsList();
    int getAbsolutePositionsCount();
    long getAbsolutePositions(int index);
  }
  public static final class AlignmentIndex extends
      com.google.protobuf.GeneratedMessage
      implements AlignmentIndexOrBuilder {
    // Use AlignmentIndex.newBuilder() to construct.
    private AlignmentIndex(Builder builder) {
      super(builder);
    }
    private AlignmentIndex(boolean noInit) {}
    
    private static final AlignmentIndex defaultInstance;
    public static AlignmentIndex getDefaultInstance() {
      return defaultInstance;
    }
    
    public AlignmentIndex getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentIndex_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentIndex_fieldAccessorTable;
    }
    
    // repeated uint32 target_position_offsets = 1 [packed = true];
    public static final int TARGET_POSITION_OFFSETS_FIELD_NUMBER = 1;
    private java.util.List<java.lang.Integer> targetPositionOffsets_;
    public java.util.List<java.lang.Integer>
        getTargetPositionOffsetsList() {
      return targetPositionOffsets_;
    }
    public int getTargetPositionOffsetsCount() {
      return targetPositionOffsets_.size();
    }
    public int getTargetPositionOffsets(int index) {
      return targetPositionOffsets_.get(index);
    }
    private int targetPositionOffsetsMemoizedSerializedSize = -1;
    
    // repeated uint64 offsets = 2 [packed = true];
    public static final int OFFSETS_FIELD_NUMBER = 2;
    private java.util.List<java.lang.Long> offsets_;
    public java.util.List<java.lang.Long>
        getOffsetsList() {
      return offsets_;
    }
    public int getOffsetsCount() {
      return offsets_.size();
    }
    public long getOffsets(int index) {
      return offsets_.get(index);
    }
    private int offsetsMemoizedSerializedSize = -1;
    
    // repeated uint64 absolute_positions = 3 [packed = true];
    public static final int ABSOLUTE_POSITIONS_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Long> absolutePositions_;
    public java.util.List<java.lang.Long>
        getAbsolutePositionsList() {
      return absolutePositions_;
    }
    public int getAbsolutePositionsCount() {
      return absolutePositions_.size();
    }
    public long getAbsolutePositions(int index) {
      return absolutePositions_.get(index);
    }
    private int absolutePositionsMemoizedSerializedSize = -1;
    
    private void initFields() {
      targetPositionOffsets_ = java.util.Collections.emptyList();;
      offsets_ = java.util.Collections.emptyList();;
      absolutePositions_ = java.util.Collections.emptyList();;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      memoizedIsInitialized = 1;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getTargetPositionOffsetsList().size() > 0) {
        output.writeRawVarint32(10);
        output.writeRawVarint32(targetPositionOffsetsMemoizedSerializedSize);
      }
      for (int i = 0; i < targetPositionOffsets_.size(); i++) {
        output.writeUInt32NoTag(targetPositionOffsets_.get(i));
      }
      if (getOffsetsList().size() > 0) {
        output.writeRawVarint32(18);
        output.writeRawVarint32(offsetsMemoizedSerializedSize);
      }
      for (int i = 0; i < offsets_.size(); i++) {
        output.writeUInt64NoTag(offsets_.get(i));
      }
      if (getAbsolutePositionsList().size() > 0) {
        output.writeRawVarint32(26);
        output.writeRawVarint32(absolutePositionsMemoizedSerializedSize);
      }
      for (int i = 0; i < absolutePositions_.size(); i++) {
        output.writeUInt64NoTag(absolutePositions_.get(i));
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < targetPositionOffsets_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(targetPositionOffsets_.get(i));
        }
        size += dataSize;
        if (!getTargetPositionOffsetsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        targetPositionOffsetsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < offsets_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt64SizeNoTag(offsets_.get(i));
        }
        size += dataSize;
        if (!getOffsetsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        offsetsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < absolutePositions_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt64SizeNoTag(absolutePositions_.get(i));
        }
        size += dataSize;
        if (!getAbsolutePositionsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        absolutePositionsMemoizedSerializedSize = dataSize;
      }
      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.alignments.Alignments.AlignmentIndex parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex 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.alignments.Alignments.AlignmentIndex parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex 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.alignments.Alignments.AlignmentIndex parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex 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.alignments.Alignments.AlignmentIndex 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.alignments.Alignments.AlignmentIndex 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.alignments.Alignments.AlignmentIndex parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex 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.alignments.Alignments.AlignmentIndex 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.alignments.Alignments.AlignmentIndexOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentIndex_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return edu.cornell.med.icb.goby.alignments.Alignments.internal_static_goby_AlignmentIndex_fieldAccessorTable;
      }
      
      // Construct using edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex.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();
        targetPositionOffsets_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000001);
        offsets_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000002);
        absolutePositions_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex.getDescriptor();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex getDefaultInstanceForType() {
        return edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex.getDefaultInstance();
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex build() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      
      private edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return result;
      }
      
      public edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex buildPartial() {
        edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex result = new edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          targetPositionOffsets_ = java.util.Collections.unmodifiableList(targetPositionOffsets_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.targetPositionOffsets_ = targetPositionOffsets_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          offsets_ = java.util.Collections.unmodifiableList(offsets_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.offsets_ = offsets_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          absolutePositions_ = java.util.Collections.unmodifiableList(absolutePositions_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.absolutePositions_ = absolutePositions_;
        onBuilt();
        return result;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex) {
          return mergeFrom((edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex other) {
        if (other == edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex.getDefaultInstance()) return this;
        if (!other.targetPositionOffsets_.isEmpty()) {
          if (targetPositionOffsets_.isEmpty()) {
            targetPositionOffsets_ = other.targetPositionOffsets_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTargetPositionOffsetsIsMutable();
            targetPositionOffsets_.addAll(other.targetPositionOffsets_);
          }
          onChanged();
        }
        if (!other.offsets_.isEmpty()) {
          if (offsets_.isEmpty()) {
            offsets_ = other.offsets_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureOffsetsIsMutable();
            offsets_.addAll(other.offsets_);
          }
          onChanged();
        }
        if (!other.absolutePositions_.isEmpty()) {
          if (absolutePositions_.isEmpty()) {
            absolutePositions_ = other.absolutePositions_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureAbsolutePositionsIsMutable();
            absolutePositions_.addAll(other.absolutePositions_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public final boolean isInitialized() {
        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: {
              ensureTargetPositionOffsetsIsMutable();
              targetPositionOffsets_.add(input.readUInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              while (input.getBytesUntilLimit() > 0) {
                addTargetPositionOffsets(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 16: {
              ensureOffsetsIsMutable();
              offsets_.add(input.readUInt64());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              while (input.getBytesUntilLimit() > 0) {
                addOffsets(input.readUInt64());
              }
              input.popLimit(limit);
              break;
            }
            case 24: {
              ensureAbsolutePositionsIsMutable();
              absolutePositions_.add(input.readUInt64());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              while (input.getBytesUntilLimit() > 0) {
                addAbsolutePositions(input.readUInt64());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      }
      
      private int bitField0_;
      
      // repeated uint32 target_position_offsets = 1 [packed = true];
      private java.util.List<java.lang.Integer> targetPositionOffsets_ = java.util.Collections.emptyList();;
      private void ensureTargetPositionOffsetsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          targetPositionOffsets_ = new java.util.ArrayList<java.lang.Integer>(targetPositionOffsets_);
          bitField0_ |= 0x00000001;
         }
      }
      public java.util.List<java.lang.Integer>
          getTargetPositionOffsetsList() {
        return java.util.Collections.unmodifiableList(targetPositionOffsets_);
      }
      public int getTargetPositionOffsetsCount() {
        return targetPositionOffsets_.size();
      }
      public int getTargetPositionOffsets(int index) {
        return targetPositionOffsets_.get(index);
      }
      public Builder setTargetPositionOffsets(
          int index, int value) {
        ensureTargetPositionOffsetsIsMutable();
        targetPositionOffsets_.set(index, value);
        onChanged();
        return this;
      }
      public Builder addTargetPositionOffsets(int value) {
        ensureTargetPositionOffsetsIsMutable();
        targetPositionOffsets_.add(value);
        onChanged();
        return this;
      }
      public Builder addAllTargetPositionOffsets(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTargetPositionOffsetsIsMutable();
        super.addAll(values, targetPositionOffsets_);
        onChanged();
        return this;
      }
      public Builder clearTargetPositionOffsets() {
        targetPositionOffsets_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      
      // repeated uint64 offsets = 2 [packed = true];
      private java.util.List<java.lang.Long> offsets_ = java.util.Collections.emptyList();;
      private void ensureOffsetsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          offsets_ = new java.util.ArrayList<java.lang.Long>(offsets_);
          bitField0_ |= 0x00000002;
         }
      }
      public java.util.List<java.lang.Long>
          getOffsetsList() {
        return java.util.Collections.unmodifiableList(offsets_);
      }
      public int getOffsetsCount() {
        return offsets_.size();
      }
      public long getOffsets(int index) {
        return offsets_.get(index);
      }
      public Builder setOffsets(
          int index, long value) {
        ensureOffsetsIsMutable();
        offsets_.set(index, value);
        onChanged();
        return this;
      }
      public Builder addOffsets(long value) {
        ensureOffsetsIsMutable();
        offsets_.add(value);
        onChanged();
        return this;
      }
      public Builder addAllOffsets(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureOffsetsIsMutable();
        super.addAll(values, offsets_);
        onChanged();
        return this;
      }
      public Builder clearOffsets() {
        offsets_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      
      // repeated uint64 absolute_positions = 3 [packed = true];
      private java.util.List<java.lang.Long> absolutePositions_ = java.util.Collections.emptyList();;
      private void ensureAbsolutePositionsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          absolutePositions_ = new java.util.ArrayList<java.lang.Long>(absolutePositions_);
          bitField0_ |= 0x00000004;
         }
      }
      public java.util.List<java.lang.Long>
          getAbsolutePositionsList() {
        return java.util.Collections.unmodifiableList(absolutePositions_);
      }
      public int getAbsolutePositionsCount() {
        return absolutePositions_.size();
      }
      public long getAbsolutePositions(int index) {
        return absolutePositions_.get(index);
      }
      public Builder setAbsolutePositions(
          int index, long value) {
        ensureAbsolutePositionsIsMutable();
        absolutePositions_.set(index, value);
        onChanged();
        return this;
      }
      public Builder addAbsolutePositions(long value) {
        ensureAbsolutePositionsIsMutable();
        absolutePositions_.add(value);
        onChanged();
        return this;
      }
      public Builder addAllAbsolutePositions(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureAbsolutePositionsIsMutable();
        super.addAll(values, absolutePositions_);
        onChanged();
        return this;
      }
      public Builder clearAbsolutePositions() {
        absolutePositions_ = java.util.Collections.emptyList();;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:goby.AlignmentIndex)
    }
    
    static {
      defaultInstance = new AlignmentIndex(true);
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:goby.AlignmentIndex)
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_AlignmentCollection_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_AlignmentCollection_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_AlignmentEntry_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_AlignmentEntry_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_RelatedAlignmentEntry_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_RelatedAlignmentEntry_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_SequenceVariation_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_SequenceVariation_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_AlignmentHeader_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_AlignmentHeader_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_IdentifierMapping_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_IdentifierMapping_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_IdentifierInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_IdentifierInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_AlignmentTooManyHits_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_AlignmentTooManyHits_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_AmbiguousLocation_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_AmbiguousLocation_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_goby_AlignmentIndex_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_goby_AlignmentIndex_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\020Alignments.proto\022\004goby\"F\n\023AlignmentCol" +
      "lection\022/\n\021alignment_entries\030\001 \003(\0132\024.gob" +
      "y.AlignmentEntry\"\270\005\n\016AlignmentEntry\022\024\n\014m" +
      "ultiplicity\030\007 \001(\r\022\023\n\013query_index\030\001 \002(\r\022\024" +
      "\n\014target_index\030\002 \002(\r\022\020\n\010position\030\003 \002(\r\022\037" +
      "\n\027matching_reverse_strand\030\006 \002(\010\022\026\n\016query" +
      "_position\030\005 \001(\r\022\r\n\005score\030\004 \001(\002\022\034\n\024number" +
      "_of_mismatches\030\010 \001(\r\022\030\n\020number_of_indels" +
      "\030\t \001(\r\022\034\n\024query_aligned_length\030\013 \001(\r\022\035\n\025" +
      "target_aligned_length\030\014 \001(\r\0224\n\023sequence_",
      "variations\030\r \003(\0132\027.goby.SequenceVariatio" +
      "n\022\024\n\014query_length\030\n \001(\r\022\027\n\017mapping_quali" +
      "ty\030\016 \001(\005\022\022\n\npair_flags\030\017 \001(\r\0228\n\023pair_ali" +
      "gnment_link\030\020 \001(\0132\033.goby.RelatedAlignmen" +
      "tEntry\022\026\n\016fragment_index\030\021 \001(\r\022C\n\036splice" +
      "d_forward_alignment_link\030\022 \001(\0132\033.goby.Re" +
      "latedAlignmentEntry\022D\n\037spliced_backward_" +
      "alignment_link\030\026 \001(\0132\033.goby.RelatedAlign" +
      "mentEntry\022\025\n\rspliced_flags\030\023 \001(\r\022\023\n\013inse" +
      "rt_size\030\024 \001(\r\022\024\n\014sample_index\030\025 \001(\r\"W\n\025R",
      "elatedAlignmentEntry\022\024\n\014target_index\030\001 \002" +
      "(\r\022\020\n\010position\030\002 \002(\r\022\026\n\016fragment_index\030\003" +
      " \002(\r\"g\n\021SequenceVariation\022\014\n\004from\030\002 \002(\t\022" +
      "\n\n\002to\030\001 \002(\t\022\020\n\010position\030\003 \002(\r\022\022\n\nread_in" +
      "dex\030\005 \002(\r\022\022\n\nto_quality\030\004 \001(\014\"\215\004\n\017Alignm" +
      "entHeader\022\"\n\032smallest_split_query_index\030" +
      "\t \001(\r\022!\n\031largest_split_query_index\030\013 \001(\r" +
      "\0223\n\022query_name_mapping\030\001 \001(\0132\027.goby.Iden" +
      "tifierMapping\0224\n\023target_name_mapping\030\002 \001" +
      "(\0132\027.goby.IdentifierMapping\022\031\n\021number_of",
      "_queries\030\005 \001(\r\022\031\n\021number_of_targets\030\006 \001(" +
      "\r\022\037\n\027number_of_aligned_reads\030\007 \001(\r\022\030\n\014qu" +
      "ery_length\030\003 \003(\rB\002\030\001\022\035\n\025constant_query_l" +
      "ength\030\n \001(\r\022\025\n\rtarget_length\030\010 \003(\r\022\016\n\006so" +
      "rted\030\r \001(\010\022\017\n\007indexed\030\016 \001(\010\022\'\n\037query_len" +
      "gths_stored_in_entries\030\017 \001(\010\022\024\n\014aligner_" +
      "name\030\021 \001(\t\022\027\n\017aligner_version\030\022 \001(\t\022\017\n\007v" +
      "ersion\030\031 \001(\t\022\027\n\017sample_basename\030\036 \003(\t\";\n" +
      "\021IdentifierMapping\022&\n\010mappings\030\001 \003(\0132\024.g" +
      "oby.IdentifierInfo\"-\n\016IdentifierInfo\022\014\n\004",
      "name\030\001 \002(\t\022\r\n\005index\030\002 \002(\r\"X\n\024AlignmentTo" +
      "oManyHits\022\031\n\021aligner_threshold\030\002 \002(\r\022%\n\004" +
      "hits\030\001 \003(\0132\027.goby.AmbiguousLocation\"b\n\021A" +
      "mbiguousLocation\022\023\n\013query_index\030\001 \002(\r\022\037\n" +
      "\027at_least_number_of_hits\030\002 \002(\r\022\027\n\017length" +
      "_of_match\030\003 \001(\r\"j\n\016AlignmentIndex\022#\n\027tar" +
      "get_position_offsets\030\001 \003(\rB\002\020\001\022\023\n\007offset" +
      "s\030\002 \003(\004B\002\020\001\022\036\n\022absolute_positions\030\003 \003(\004B" +
      "\002\020\001B\'\n#edu.cornell.med.icb.goby.alignmen" +
      "tsH\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_AlignmentCollection_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_goby_AlignmentCollection_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_AlignmentCollection_descriptor,
              new java.lang.String[] { "AlignmentEntries", },
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection.class,
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentCollection.Builder.class);
          internal_static_goby_AlignmentEntry_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_goby_AlignmentEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_AlignmentEntry_descriptor,
              new java.lang.String[] { "Multiplicity", "QueryIndex", "TargetIndex", "Position", "MatchingReverseStrand", "QueryPosition", "Score", "NumberOfMismatches", "NumberOfIndels", "QueryAlignedLength", "TargetAlignedLength", "SequenceVariations", "QueryLength", "MappingQuality", "PairFlags", "PairAlignmentLink", "FragmentIndex", "SplicedForwardAlignmentLink", "SplicedBackwardAlignmentLink", "SplicedFlags", "InsertSize", "SampleIndex", },
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.class,
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentEntry.Builder.class);
          internal_static_goby_RelatedAlignmentEntry_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_goby_RelatedAlignmentEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_RelatedAlignmentEntry_descriptor,
              new java.lang.String[] { "TargetIndex", "Position", "FragmentIndex", },
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.class,
              edu.cornell.med.icb.goby.alignments.Alignments.RelatedAlignmentEntry.Builder.class);
          internal_static_goby_SequenceVariation_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_goby_SequenceVariation_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_SequenceVariation_descriptor,
              new java.lang.String[] { "From", "To", "Position", "ReadIndex", "ToQuality", },
              edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.class,
              edu.cornell.med.icb.goby.alignments.Alignments.SequenceVariation.Builder.class);
          internal_static_goby_AlignmentHeader_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_goby_AlignmentHeader_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_AlignmentHeader_descriptor,
              new java.lang.String[] { "SmallestSplitQueryIndex", "LargestSplitQueryIndex", "QueryNameMapping", "TargetNameMapping", "NumberOfQueries", "NumberOfTargets", "NumberOfAlignedReads", "QueryLength", "ConstantQueryLength", "TargetLength", "Sorted", "Indexed", "QueryLengthsStoredInEntries", "AlignerName", "AlignerVersion", "Version", "SampleBasename", },
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader.class,
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentHeader.Builder.class);
          internal_static_goby_IdentifierMapping_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_goby_IdentifierMapping_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_IdentifierMapping_descriptor,
              new java.lang.String[] { "Mappings", },
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.class,
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierMapping.Builder.class);
          internal_static_goby_IdentifierInfo_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_goby_IdentifierInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_IdentifierInfo_descriptor,
              new java.lang.String[] { "Name", "Index", },
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.class,
              edu.cornell.med.icb.goby.alignments.Alignments.IdentifierInfo.Builder.class);
          internal_static_goby_AlignmentTooManyHits_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_goby_AlignmentTooManyHits_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_AlignmentTooManyHits_descriptor,
              new java.lang.String[] { "AlignerThreshold", "Hits", },
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits.class,
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentTooManyHits.Builder.class);
          internal_static_goby_AmbiguousLocation_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_goby_AmbiguousLocation_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_AmbiguousLocation_descriptor,
              new java.lang.String[] { "QueryIndex", "AtLeastNumberOfHits", "LengthOfMatch", },
              edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.class,
              edu.cornell.med.icb.goby.alignments.Alignments.AmbiguousLocation.Builder.class);
          internal_static_goby_AlignmentIndex_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_goby_AlignmentIndex_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_goby_AlignmentIndex_descriptor,
              new java.lang.String[] { "TargetPositionOffsets", "Offsets", "AbsolutePositions", },
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex.class,
              edu.cornell.med.icb.goby.alignments.Alignments.AlignmentIndex.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }
  
  // @@protoc_insertion_point(outer_class_scope)
}
