All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.keenon.loglinear.GraphicalModelProto Maven / Gradle / Ivy

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

package com.github.keenon.loglinear;

public final class GraphicalModelProto {
  private GraphicalModelProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface GraphicalModelOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.github.keenon.GraphicalModel)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    java.util.List 
        getFactorList();
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    com.github.keenon.loglinear.GraphicalModelProto.Factor getFactor(int index);
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    int getFactorCount();
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    java.util.List 
        getFactorOrBuilderList();
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    com.github.keenon.loglinear.GraphicalModelProto.FactorOrBuilder getFactorOrBuilder(
        int index);

    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    java.util.List 
        getVariableMetaDataList();
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    com.github.keenon.loglinear.GraphicalModelProto.MetaData getVariableMetaData(int index);
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    int getVariableMetaDataCount();
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    java.util.List 
        getVariableMetaDataOrBuilderList();
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getVariableMetaDataOrBuilder(
        int index);

    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    boolean hasMetaData();
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    com.github.keenon.loglinear.GraphicalModelProto.MetaData getMetaData();
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getMetaDataOrBuilder();
  }
  /**
   * Protobuf type {@code com.github.keenon.GraphicalModel}
   */
  public static final class GraphicalModel extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.github.keenon.GraphicalModel)
      GraphicalModelOrBuilder {
    // Use GraphicalModel.newBuilder() to construct.
    private GraphicalModel(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GraphicalModel(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public GraphicalModel getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GraphicalModel(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                factor_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              factor_.add(input.readMessage(com.github.keenon.loglinear.GraphicalModelProto.Factor.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                variableMetaData_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              variableMetaData_.add(input.readMessage(com.github.keenon.loglinear.GraphicalModelProto.MetaData.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metaData_.toBuilder();
              }
              metaData_ = input.readMessage(com.github.keenon.loglinear.GraphicalModelProto.MetaData.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metaData_);
                metaData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          factor_ = java.util.Collections.unmodifiableList(factor_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          variableMetaData_ = java.util.Collections.unmodifiableList(variableMetaData_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_GraphicalModel_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_GraphicalModel_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel.class, com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int FACTOR_FIELD_NUMBER = 1;
    private java.util.List factor_;
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    public java.util.List getFactorList() {
      return factor_;
    }
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    public java.util.List 
        getFactorOrBuilderList() {
      return factor_;
    }
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    public int getFactorCount() {
      return factor_.size();
    }
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    public com.github.keenon.loglinear.GraphicalModelProto.Factor getFactor(int index) {
      return factor_.get(index);
    }
    /**
     * repeated .com.github.keenon.Factor factor = 1;
     */
    public com.github.keenon.loglinear.GraphicalModelProto.FactorOrBuilder getFactorOrBuilder(
        int index) {
      return factor_.get(index);
    }

    public static final int VARIABLEMETADATA_FIELD_NUMBER = 2;
    private java.util.List variableMetaData_;
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    public java.util.List getVariableMetaDataList() {
      return variableMetaData_;
    }
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    public java.util.List 
        getVariableMetaDataOrBuilderList() {
      return variableMetaData_;
    }
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    public int getVariableMetaDataCount() {
      return variableMetaData_.size();
    }
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    public com.github.keenon.loglinear.GraphicalModelProto.MetaData getVariableMetaData(int index) {
      return variableMetaData_.get(index);
    }
    /**
     * repeated .com.github.keenon.MetaData variableMetaData = 2;
     */
    public com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getVariableMetaDataOrBuilder(
        int index) {
      return variableMetaData_.get(index);
    }

    public static final int METADATA_FIELD_NUMBER = 3;
    private com.github.keenon.loglinear.GraphicalModelProto.MetaData metaData_;
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    public boolean hasMetaData() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    public com.github.keenon.loglinear.GraphicalModelProto.MetaData getMetaData() {
      return metaData_;
    }
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    public com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getMetaDataOrBuilder() {
      return metaData_;
    }

    private void initFields() {
      factor_ = java.util.Collections.emptyList();
      variableMetaData_ = java.util.Collections.emptyList();
      metaData_ = com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getFactorCount(); i++) {
        if (!getFactor(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 < factor_.size(); i++) {
        output.writeMessage(1, factor_.get(i));
      }
      for (int i = 0; i < variableMetaData_.size(); i++) {
        output.writeMessage(2, variableMetaData_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(3, metaData_);
      }
      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 < factor_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, factor_.get(i));
      }
      for (int i = 0; i < variableMetaData_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, variableMetaData_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, metaData_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

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

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

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.github.keenon.GraphicalModel}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.github.keenon.GraphicalModel)
        com.github.keenon.loglinear.GraphicalModelProto.GraphicalModelOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_GraphicalModel_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_GraphicalModel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel.class, com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel.Builder.class);
      }

      // Construct using com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFactorFieldBuilder();
          getVariableMetaDataFieldBuilder();
          getMetaDataFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (factorBuilder_ == null) {
          factor_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          factorBuilder_.clear();
        }
        if (variableMetaDataBuilder_ == null) {
          variableMetaData_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          variableMetaDataBuilder_.clear();
        }
        if (metaDataBuilder_ == null) {
          metaData_ = com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
        } else {
          metaDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_GraphicalModel_descriptor;
      }

      public com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel getDefaultInstanceForType() {
        return com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel.getDefaultInstance();
      }

      public com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel build() {
        com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel buildPartial() {
        com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel result = new com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (factorBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            factor_ = java.util.Collections.unmodifiableList(factor_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.factor_ = factor_;
        } else {
          result.factor_ = factorBuilder_.build();
        }
        if (variableMetaDataBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            variableMetaData_ = java.util.Collections.unmodifiableList(variableMetaData_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.variableMetaData_ = variableMetaData_;
        } else {
          result.variableMetaData_ = variableMetaDataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metaDataBuilder_ == null) {
          result.metaData_ = metaData_;
        } else {
          result.metaData_ = metaDataBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel) {
          return mergeFrom((com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel other) {
        if (other == com.github.keenon.loglinear.GraphicalModelProto.GraphicalModel.getDefaultInstance()) return this;
        if (factorBuilder_ == null) {
          if (!other.factor_.isEmpty()) {
            if (factor_.isEmpty()) {
              factor_ = other.factor_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFactorIsMutable();
              factor_.addAll(other.factor_);
            }
            onChanged();
          }
        } else {
          if (!other.factor_.isEmpty()) {
            if (factorBuilder_.isEmpty()) {
              factorBuilder_.dispose();
              factorBuilder_ = null;
              factor_ = other.factor_;
              bitField0_ = (bitField0_ & ~0x00000001);
              factorBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFactorFieldBuilder() : null;
            } else {
              factorBuilder_.addAllMessages(other.factor_);
            }
          }
        }
        if (variableMetaDataBuilder_ == null) {
          if (!other.variableMetaData_.isEmpty()) {
            if (variableMetaData_.isEmpty()) {
              variableMetaData_ = other.variableMetaData_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureVariableMetaDataIsMutable();
              variableMetaData_.addAll(other.variableMetaData_);
            }
            onChanged();
          }
        } else {
          if (!other.variableMetaData_.isEmpty()) {
            if (variableMetaDataBuilder_.isEmpty()) {
              variableMetaDataBuilder_.dispose();
              variableMetaDataBuilder_ = null;
              variableMetaData_ = other.variableMetaData_;
              bitField0_ = (bitField0_ & ~0x00000002);
              variableMetaDataBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVariableMetaDataFieldBuilder() : null;
            } else {
              variableMetaDataBuilder_.addAllMessages(other.variableMetaData_);
            }
          }
        }
        if (other.hasMetaData()) {
          mergeMetaData(other.getMetaData());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getFactorCount(); i++) {
          if (!getFactor(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

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

      private java.util.List factor_ =
        java.util.Collections.emptyList();
      private void ensureFactorIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          factor_ = new java.util.ArrayList(factor_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.github.keenon.loglinear.GraphicalModelProto.Factor, com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder, com.github.keenon.loglinear.GraphicalModelProto.FactorOrBuilder> factorBuilder_;

      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public java.util.List getFactorList() {
        if (factorBuilder_ == null) {
          return java.util.Collections.unmodifiableList(factor_);
        } else {
          return factorBuilder_.getMessageList();
        }
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public int getFactorCount() {
        if (factorBuilder_ == null) {
          return factor_.size();
        } else {
          return factorBuilder_.getCount();
        }
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.Factor getFactor(int index) {
        if (factorBuilder_ == null) {
          return factor_.get(index);
        } else {
          return factorBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder setFactor(
          int index, com.github.keenon.loglinear.GraphicalModelProto.Factor value) {
        if (factorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFactorIsMutable();
          factor_.set(index, value);
          onChanged();
        } else {
          factorBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder setFactor(
          int index, com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder builderForValue) {
        if (factorBuilder_ == null) {
          ensureFactorIsMutable();
          factor_.set(index, builderForValue.build());
          onChanged();
        } else {
          factorBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder addFactor(com.github.keenon.loglinear.GraphicalModelProto.Factor value) {
        if (factorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFactorIsMutable();
          factor_.add(value);
          onChanged();
        } else {
          factorBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder addFactor(
          int index, com.github.keenon.loglinear.GraphicalModelProto.Factor value) {
        if (factorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFactorIsMutable();
          factor_.add(index, value);
          onChanged();
        } else {
          factorBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder addFactor(
          com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder builderForValue) {
        if (factorBuilder_ == null) {
          ensureFactorIsMutable();
          factor_.add(builderForValue.build());
          onChanged();
        } else {
          factorBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder addFactor(
          int index, com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder builderForValue) {
        if (factorBuilder_ == null) {
          ensureFactorIsMutable();
          factor_.add(index, builderForValue.build());
          onChanged();
        } else {
          factorBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder addAllFactor(
          java.lang.Iterable values) {
        if (factorBuilder_ == null) {
          ensureFactorIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, factor_);
          onChanged();
        } else {
          factorBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder clearFactor() {
        if (factorBuilder_ == null) {
          factor_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          factorBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public Builder removeFactor(int index) {
        if (factorBuilder_ == null) {
          ensureFactorIsMutable();
          factor_.remove(index);
          onChanged();
        } else {
          factorBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder getFactorBuilder(
          int index) {
        return getFactorFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.FactorOrBuilder getFactorOrBuilder(
          int index) {
        if (factorBuilder_ == null) {
          return factor_.get(index);  } else {
          return factorBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public java.util.List 
           getFactorOrBuilderList() {
        if (factorBuilder_ != null) {
          return factorBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(factor_);
        }
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder addFactorBuilder() {
        return getFactorFieldBuilder().addBuilder(
            com.github.keenon.loglinear.GraphicalModelProto.Factor.getDefaultInstance());
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder addFactorBuilder(
          int index) {
        return getFactorFieldBuilder().addBuilder(
            index, com.github.keenon.loglinear.GraphicalModelProto.Factor.getDefaultInstance());
      }
      /**
       * repeated .com.github.keenon.Factor factor = 1;
       */
      public java.util.List 
           getFactorBuilderList() {
        return getFactorFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.github.keenon.loglinear.GraphicalModelProto.Factor, com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder, com.github.keenon.loglinear.GraphicalModelProto.FactorOrBuilder> 
          getFactorFieldBuilder() {
        if (factorBuilder_ == null) {
          factorBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.github.keenon.loglinear.GraphicalModelProto.Factor, com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder, com.github.keenon.loglinear.GraphicalModelProto.FactorOrBuilder>(
                  factor_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          factor_ = null;
        }
        return factorBuilder_;
      }

      private java.util.List variableMetaData_ =
        java.util.Collections.emptyList();
      private void ensureVariableMetaDataIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          variableMetaData_ = new java.util.ArrayList(variableMetaData_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder> variableMetaDataBuilder_;

      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public java.util.List getVariableMetaDataList() {
        if (variableMetaDataBuilder_ == null) {
          return java.util.Collections.unmodifiableList(variableMetaData_);
        } else {
          return variableMetaDataBuilder_.getMessageList();
        }
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public int getVariableMetaDataCount() {
        if (variableMetaDataBuilder_ == null) {
          return variableMetaData_.size();
        } else {
          return variableMetaDataBuilder_.getCount();
        }
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaData getVariableMetaData(int index) {
        if (variableMetaDataBuilder_ == null) {
          return variableMetaData_.get(index);
        } else {
          return variableMetaDataBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder setVariableMetaData(
          int index, com.github.keenon.loglinear.GraphicalModelProto.MetaData value) {
        if (variableMetaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableMetaDataIsMutable();
          variableMetaData_.set(index, value);
          onChanged();
        } else {
          variableMetaDataBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder setVariableMetaData(
          int index, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder builderForValue) {
        if (variableMetaDataBuilder_ == null) {
          ensureVariableMetaDataIsMutable();
          variableMetaData_.set(index, builderForValue.build());
          onChanged();
        } else {
          variableMetaDataBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder addVariableMetaData(com.github.keenon.loglinear.GraphicalModelProto.MetaData value) {
        if (variableMetaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableMetaDataIsMutable();
          variableMetaData_.add(value);
          onChanged();
        } else {
          variableMetaDataBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder addVariableMetaData(
          int index, com.github.keenon.loglinear.GraphicalModelProto.MetaData value) {
        if (variableMetaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVariableMetaDataIsMutable();
          variableMetaData_.add(index, value);
          onChanged();
        } else {
          variableMetaDataBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder addVariableMetaData(
          com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder builderForValue) {
        if (variableMetaDataBuilder_ == null) {
          ensureVariableMetaDataIsMutable();
          variableMetaData_.add(builderForValue.build());
          onChanged();
        } else {
          variableMetaDataBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder addVariableMetaData(
          int index, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder builderForValue) {
        if (variableMetaDataBuilder_ == null) {
          ensureVariableMetaDataIsMutable();
          variableMetaData_.add(index, builderForValue.build());
          onChanged();
        } else {
          variableMetaDataBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder addAllVariableMetaData(
          java.lang.Iterable values) {
        if (variableMetaDataBuilder_ == null) {
          ensureVariableMetaDataIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, variableMetaData_);
          onChanged();
        } else {
          variableMetaDataBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder clearVariableMetaData() {
        if (variableMetaDataBuilder_ == null) {
          variableMetaData_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          variableMetaDataBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public Builder removeVariableMetaData(int index) {
        if (variableMetaDataBuilder_ == null) {
          ensureVariableMetaDataIsMutable();
          variableMetaData_.remove(index);
          onChanged();
        } else {
          variableMetaDataBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder getVariableMetaDataBuilder(
          int index) {
        return getVariableMetaDataFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getVariableMetaDataOrBuilder(
          int index) {
        if (variableMetaDataBuilder_ == null) {
          return variableMetaData_.get(index);  } else {
          return variableMetaDataBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public java.util.List 
           getVariableMetaDataOrBuilderList() {
        if (variableMetaDataBuilder_ != null) {
          return variableMetaDataBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(variableMetaData_);
        }
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder addVariableMetaDataBuilder() {
        return getVariableMetaDataFieldBuilder().addBuilder(
            com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance());
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder addVariableMetaDataBuilder(
          int index) {
        return getVariableMetaDataFieldBuilder().addBuilder(
            index, com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance());
      }
      /**
       * repeated .com.github.keenon.MetaData variableMetaData = 2;
       */
      public java.util.List 
           getVariableMetaDataBuilderList() {
        return getVariableMetaDataFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder> 
          getVariableMetaDataFieldBuilder() {
        if (variableMetaDataBuilder_ == null) {
          variableMetaDataBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder>(
                  variableMetaData_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          variableMetaData_ = null;
        }
        return variableMetaDataBuilder_;
      }

      private com.github.keenon.loglinear.GraphicalModelProto.MetaData metaData_ = com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder> metaDataBuilder_;
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public boolean hasMetaData() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaData getMetaData() {
        if (metaDataBuilder_ == null) {
          return metaData_;
        } else {
          return metaDataBuilder_.getMessage();
        }
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public Builder setMetaData(com.github.keenon.loglinear.GraphicalModelProto.MetaData value) {
        if (metaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metaData_ = value;
          onChanged();
        } else {
          metaDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public Builder setMetaData(
          com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder builderForValue) {
        if (metaDataBuilder_ == null) {
          metaData_ = builderForValue.build();
          onChanged();
        } else {
          metaDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public Builder mergeMetaData(com.github.keenon.loglinear.GraphicalModelProto.MetaData value) {
        if (metaDataBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              metaData_ != com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance()) {
            metaData_ =
              com.github.keenon.loglinear.GraphicalModelProto.MetaData.newBuilder(metaData_).mergeFrom(value).buildPartial();
          } else {
            metaData_ = value;
          }
          onChanged();
        } else {
          metaDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public Builder clearMetaData() {
        if (metaDataBuilder_ == null) {
          metaData_ = com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
          onChanged();
        } else {
          metaDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder getMetaDataBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getMetaDataFieldBuilder().getBuilder();
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getMetaDataOrBuilder() {
        if (metaDataBuilder_ != null) {
          return metaDataBuilder_.getMessageOrBuilder();
        } else {
          return metaData_;
        }
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder> 
          getMetaDataFieldBuilder() {
        if (metaDataBuilder_ == null) {
          metaDataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder>(
                  getMetaData(),
                  getParentForChildren(),
                  isClean());
          metaData_ = null;
        }
        return metaDataBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:com.github.keenon.GraphicalModel)
    }

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

    // @@protoc_insertion_point(class_scope:com.github.keenon.GraphicalModel)
  }

  public interface FactorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.github.keenon.Factor)
      com.google.protobuf.MessageOrBuilder {

    /**
     * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
     */
    boolean hasFeaturesTable();
    /**
     * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
     */
    com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable getFeaturesTable();
    /**
     * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
     */
    com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTableOrBuilder getFeaturesTableOrBuilder();

    /**
     * repeated int32 neighbor = 2;
     */
    java.util.List getNeighborList();
    /**
     * repeated int32 neighbor = 2;
     */
    int getNeighborCount();
    /**
     * repeated int32 neighbor = 2;
     */
    int getNeighbor(int index);

    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    boolean hasMetaData();
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    com.github.keenon.loglinear.GraphicalModelProto.MetaData getMetaData();
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getMetaDataOrBuilder();
  }
  /**
   * Protobuf type {@code com.github.keenon.Factor}
   */
  public static final class Factor extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.github.keenon.Factor)
      FactorOrBuilder {
    // Use Factor.newBuilder() to construct.
    private Factor(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Factor(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public Factor getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Factor(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = featuresTable_.toBuilder();
              }
              featuresTable_ = input.readMessage(com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(featuresTable_);
                featuresTable_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                neighbor_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              neighbor_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                neighbor_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                neighbor_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 26: {
              com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = metaData_.toBuilder();
              }
              metaData_ = input.readMessage(com.github.keenon.loglinear.GraphicalModelProto.MetaData.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metaData_);
                metaData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          neighbor_ = java.util.Collections.unmodifiableList(neighbor_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_Factor_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_Factor_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.github.keenon.loglinear.GraphicalModelProto.Factor.class, com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int FEATURESTABLE_FIELD_NUMBER = 1;
    private com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable featuresTable_;
    /**
     * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
     */
    public boolean hasFeaturesTable() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
     */
    public com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable getFeaturesTable() {
      return featuresTable_;
    }
    /**
     * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
     */
    public com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTableOrBuilder getFeaturesTableOrBuilder() {
      return featuresTable_;
    }

    public static final int NEIGHBOR_FIELD_NUMBER = 2;
    private java.util.List neighbor_;
    /**
     * repeated int32 neighbor = 2;
     */
    public java.util.List
        getNeighborList() {
      return neighbor_;
    }
    /**
     * repeated int32 neighbor = 2;
     */
    public int getNeighborCount() {
      return neighbor_.size();
    }
    /**
     * repeated int32 neighbor = 2;
     */
    public int getNeighbor(int index) {
      return neighbor_.get(index);
    }

    public static final int METADATA_FIELD_NUMBER = 3;
    private com.github.keenon.loglinear.GraphicalModelProto.MetaData metaData_;
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    public boolean hasMetaData() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    public com.github.keenon.loglinear.GraphicalModelProto.MetaData getMetaData() {
      return metaData_;
    }
    /**
     * optional .com.github.keenon.MetaData metaData = 3;
     */
    public com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getMetaDataOrBuilder() {
      return metaData_;
    }

    private void initFields() {
      featuresTable_ = com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.getDefaultInstance();
      neighbor_ = java.util.Collections.emptyList();
      metaData_ = com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, featuresTable_);
      }
      for (int i = 0; i < neighbor_.size(); i++) {
        output.writeInt32(2, neighbor_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, metaData_);
      }
      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
          .computeMessageSize(1, featuresTable_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < neighbor_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(neighbor_.get(i));
        }
        size += dataSize;
        size += 1 * getNeighborList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, metaData_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

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

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

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.github.keenon.loglinear.GraphicalModelProto.Factor prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.github.keenon.Factor}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.github.keenon.Factor)
        com.github.keenon.loglinear.GraphicalModelProto.FactorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_Factor_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_Factor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.github.keenon.loglinear.GraphicalModelProto.Factor.class, com.github.keenon.loglinear.GraphicalModelProto.Factor.Builder.class);
      }

      // Construct using com.github.keenon.loglinear.GraphicalModelProto.Factor.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFeaturesTableFieldBuilder();
          getMetaDataFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (featuresTableBuilder_ == null) {
          featuresTable_ = com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.getDefaultInstance();
        } else {
          featuresTableBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        neighbor_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        if (metaDataBuilder_ == null) {
          metaData_ = com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
        } else {
          metaDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_Factor_descriptor;
      }

      public com.github.keenon.loglinear.GraphicalModelProto.Factor getDefaultInstanceForType() {
        return com.github.keenon.loglinear.GraphicalModelProto.Factor.getDefaultInstance();
      }

      public com.github.keenon.loglinear.GraphicalModelProto.Factor build() {
        com.github.keenon.loglinear.GraphicalModelProto.Factor result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.github.keenon.loglinear.GraphicalModelProto.Factor buildPartial() {
        com.github.keenon.loglinear.GraphicalModelProto.Factor result = new com.github.keenon.loglinear.GraphicalModelProto.Factor(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (featuresTableBuilder_ == null) {
          result.featuresTable_ = featuresTable_;
        } else {
          result.featuresTable_ = featuresTableBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          neighbor_ = java.util.Collections.unmodifiableList(neighbor_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.neighbor_ = neighbor_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        if (metaDataBuilder_ == null) {
          result.metaData_ = metaData_;
        } else {
          result.metaData_ = metaDataBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.github.keenon.loglinear.GraphicalModelProto.Factor) {
          return mergeFrom((com.github.keenon.loglinear.GraphicalModelProto.Factor)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.github.keenon.loglinear.GraphicalModelProto.Factor other) {
        if (other == com.github.keenon.loglinear.GraphicalModelProto.Factor.getDefaultInstance()) return this;
        if (other.hasFeaturesTable()) {
          mergeFeaturesTable(other.getFeaturesTable());
        }
        if (!other.neighbor_.isEmpty()) {
          if (neighbor_.isEmpty()) {
            neighbor_ = other.neighbor_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureNeighborIsMutable();
            neighbor_.addAll(other.neighbor_);
          }
          onChanged();
        }
        if (other.hasMetaData()) {
          mergeMetaData(other.getMetaData());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFeaturesTable()) {
          
          return false;
        }
        if (!getFeaturesTable().isInitialized()) {
          
          return false;
        }
        return true;
      }

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

      private com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable featuresTable_ = com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable, com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.Builder, com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTableOrBuilder> featuresTableBuilder_;
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      public boolean hasFeaturesTable() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      public com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable getFeaturesTable() {
        if (featuresTableBuilder_ == null) {
          return featuresTable_;
        } else {
          return featuresTableBuilder_.getMessage();
        }
      }
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      public Builder setFeaturesTable(com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable value) {
        if (featuresTableBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          featuresTable_ = value;
          onChanged();
        } else {
          featuresTableBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      public Builder setFeaturesTable(
          com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.Builder builderForValue) {
        if (featuresTableBuilder_ == null) {
          featuresTable_ = builderForValue.build();
          onChanged();
        } else {
          featuresTableBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      public Builder mergeFeaturesTable(com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable value) {
        if (featuresTableBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              featuresTable_ != com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.getDefaultInstance()) {
            featuresTable_ =
              com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.newBuilder(featuresTable_).mergeFrom(value).buildPartial();
          } else {
            featuresTable_ = value;
          }
          onChanged();
        } else {
          featuresTableBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      public Builder clearFeaturesTable() {
        if (featuresTableBuilder_ == null) {
          featuresTable_ = com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.getDefaultInstance();
          onChanged();
        } else {
          featuresTableBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      public com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.Builder getFeaturesTableBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFeaturesTableFieldBuilder().getBuilder();
      }
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      public com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTableOrBuilder getFeaturesTableOrBuilder() {
        if (featuresTableBuilder_ != null) {
          return featuresTableBuilder_.getMessageOrBuilder();
        } else {
          return featuresTable_;
        }
      }
      /**
       * required .com.github.keenon.ConcatVectorTable featuresTable = 1;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable, com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.Builder, com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTableOrBuilder> 
          getFeaturesTableFieldBuilder() {
        if (featuresTableBuilder_ == null) {
          featuresTableBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable, com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTable.Builder, com.github.keenon.loglinear.ConcatVectorTableProto.ConcatVectorTableOrBuilder>(
                  getFeaturesTable(),
                  getParentForChildren(),
                  isClean());
          featuresTable_ = null;
        }
        return featuresTableBuilder_;
      }

      private java.util.List neighbor_ = java.util.Collections.emptyList();
      private void ensureNeighborIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          neighbor_ = new java.util.ArrayList(neighbor_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated int32 neighbor = 2;
       */
      public java.util.List
          getNeighborList() {
        return java.util.Collections.unmodifiableList(neighbor_);
      }
      /**
       * repeated int32 neighbor = 2;
       */
      public int getNeighborCount() {
        return neighbor_.size();
      }
      /**
       * repeated int32 neighbor = 2;
       */
      public int getNeighbor(int index) {
        return neighbor_.get(index);
      }
      /**
       * repeated int32 neighbor = 2;
       */
      public Builder setNeighbor(
          int index, int value) {
        ensureNeighborIsMutable();
        neighbor_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated int32 neighbor = 2;
       */
      public Builder addNeighbor(int value) {
        ensureNeighborIsMutable();
        neighbor_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated int32 neighbor = 2;
       */
      public Builder addAllNeighbor(
          java.lang.Iterable values) {
        ensureNeighborIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, neighbor_);
        onChanged();
        return this;
      }
      /**
       * repeated int32 neighbor = 2;
       */
      public Builder clearNeighbor() {
        neighbor_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.github.keenon.loglinear.GraphicalModelProto.MetaData metaData_ = com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder> metaDataBuilder_;
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public boolean hasMetaData() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaData getMetaData() {
        if (metaDataBuilder_ == null) {
          return metaData_;
        } else {
          return metaDataBuilder_.getMessage();
        }
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public Builder setMetaData(com.github.keenon.loglinear.GraphicalModelProto.MetaData value) {
        if (metaDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metaData_ = value;
          onChanged();
        } else {
          metaDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public Builder setMetaData(
          com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder builderForValue) {
        if (metaDataBuilder_ == null) {
          metaData_ = builderForValue.build();
          onChanged();
        } else {
          metaDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public Builder mergeMetaData(com.github.keenon.loglinear.GraphicalModelProto.MetaData value) {
        if (metaDataBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              metaData_ != com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance()) {
            metaData_ =
              com.github.keenon.loglinear.GraphicalModelProto.MetaData.newBuilder(metaData_).mergeFrom(value).buildPartial();
          } else {
            metaData_ = value;
          }
          onChanged();
        } else {
          metaDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public Builder clearMetaData() {
        if (metaDataBuilder_ == null) {
          metaData_ = com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
          onChanged();
        } else {
          metaDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder getMetaDataBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getMetaDataFieldBuilder().getBuilder();
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      public com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder getMetaDataOrBuilder() {
        if (metaDataBuilder_ != null) {
          return metaDataBuilder_.getMessageOrBuilder();
        } else {
          return metaData_;
        }
      }
      /**
       * optional .com.github.keenon.MetaData metaData = 3;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder> 
          getMetaDataFieldBuilder() {
        if (metaDataBuilder_ == null) {
          metaDataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.github.keenon.loglinear.GraphicalModelProto.MetaData, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder, com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder>(
                  getMetaData(),
                  getParentForChildren(),
                  isClean());
          metaData_ = null;
        }
        return metaDataBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:com.github.keenon.Factor)
    }

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

    // @@protoc_insertion_point(class_scope:com.github.keenon.Factor)
  }

  public interface MetaDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.github.keenon.MetaData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated string key = 1;
     */
    com.google.protobuf.ProtocolStringList
        getKeyList();
    /**
     * repeated string key = 1;
     */
    int getKeyCount();
    /**
     * repeated string key = 1;
     */
    java.lang.String getKey(int index);
    /**
     * repeated string key = 1;
     */
    com.google.protobuf.ByteString
        getKeyBytes(int index);

    /**
     * repeated string value = 2;
     */
    com.google.protobuf.ProtocolStringList
        getValueList();
    /**
     * repeated string value = 2;
     */
    int getValueCount();
    /**
     * repeated string value = 2;
     */
    java.lang.String getValue(int index);
    /**
     * repeated string value = 2;
     */
    com.google.protobuf.ByteString
        getValueBytes(int index);
  }
  /**
   * Protobuf type {@code com.github.keenon.MetaData}
   */
  public static final class MetaData extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.github.keenon.MetaData)
      MetaDataOrBuilder {
    // Use MetaData.newBuilder() to construct.
    private MetaData(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private MetaData(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public MetaData getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private MetaData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                key_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              key_.add(bs);
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                value_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              value_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          key_ = key_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = value_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_MetaData_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_MetaData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.github.keenon.loglinear.GraphicalModelProto.MetaData.class, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder.class);
    }

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

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

    public static final int KEY_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList key_;
    /**
     * repeated string key = 1;
     */
    public com.google.protobuf.ProtocolStringList
        getKeyList() {
      return key_;
    }
    /**
     * repeated string key = 1;
     */
    public int getKeyCount() {
      return key_.size();
    }
    /**
     * repeated string key = 1;
     */
    public java.lang.String getKey(int index) {
      return key_.get(index);
    }
    /**
     * repeated string key = 1;
     */
    public com.google.protobuf.ByteString
        getKeyBytes(int index) {
      return key_.getByteString(index);
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList value_;
    /**
     * repeated string value = 2;
     */
    public com.google.protobuf.ProtocolStringList
        getValueList() {
      return value_;
    }
    /**
     * repeated string value = 2;
     */
    public int getValueCount() {
      return value_.size();
    }
    /**
     * repeated string value = 2;
     */
    public java.lang.String getValue(int index) {
      return value_.get(index);
    }
    /**
     * repeated string value = 2;
     */
    public com.google.protobuf.ByteString
        getValueBytes(int index) {
      return value_.getByteString(index);
    }

    private void initFields() {
      key_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 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 < key_.size(); i++) {
        output.writeBytes(1, key_.getByteString(i));
      }
      for (int i = 0; i < value_.size(); i++) {
        output.writeBytes(2, value_.getByteString(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 < key_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(key_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getKeyList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < value_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(value_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getValueList().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 com.github.keenon.loglinear.GraphicalModelProto.MetaData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static com.github.keenon.loglinear.GraphicalModelProto.MetaData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.github.keenon.loglinear.GraphicalModelProto.MetaData prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.github.keenon.MetaData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.github.keenon.MetaData)
        com.github.keenon.loglinear.GraphicalModelProto.MetaDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_MetaData_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_MetaData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.github.keenon.loglinear.GraphicalModelProto.MetaData.class, com.github.keenon.loglinear.GraphicalModelProto.MetaData.Builder.class);
      }

      // Construct using com.github.keenon.loglinear.GraphicalModelProto.MetaData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        key_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.github.keenon.loglinear.GraphicalModelProto.internal_static_com_github_keenon_MetaData_descriptor;
      }

      public com.github.keenon.loglinear.GraphicalModelProto.MetaData getDefaultInstanceForType() {
        return com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance();
      }

      public com.github.keenon.loglinear.GraphicalModelProto.MetaData build() {
        com.github.keenon.loglinear.GraphicalModelProto.MetaData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.github.keenon.loglinear.GraphicalModelProto.MetaData buildPartial() {
        com.github.keenon.loglinear.GraphicalModelProto.MetaData result = new com.github.keenon.loglinear.GraphicalModelProto.MetaData(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          key_ = key_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.key_ = key_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = value_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.value_ = value_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.github.keenon.loglinear.GraphicalModelProto.MetaData) {
          return mergeFrom((com.github.keenon.loglinear.GraphicalModelProto.MetaData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.github.keenon.loglinear.GraphicalModelProto.MetaData other) {
        if (other == com.github.keenon.loglinear.GraphicalModelProto.MetaData.getDefaultInstance()) return this;
        if (!other.key_.isEmpty()) {
          if (key_.isEmpty()) {
            key_ = other.key_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureKeyIsMutable();
            key_.addAll(other.key_);
          }
          onChanged();
        }
        if (!other.value_.isEmpty()) {
          if (value_.isEmpty()) {
            value_ = other.value_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureValueIsMutable();
            value_.addAll(other.value_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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.github.keenon.loglinear.GraphicalModelProto.MetaData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.github.keenon.loglinear.GraphicalModelProto.MetaData) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList key_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureKeyIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          key_ = new com.google.protobuf.LazyStringArrayList(key_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * repeated string key = 1;
       */
      public com.google.protobuf.ProtocolStringList
          getKeyList() {
        return key_.getUnmodifiableView();
      }
      /**
       * repeated string key = 1;
       */
      public int getKeyCount() {
        return key_.size();
      }
      /**
       * repeated string key = 1;
       */
      public java.lang.String getKey(int index) {
        return key_.get(index);
      }
      /**
       * repeated string key = 1;
       */
      public com.google.protobuf.ByteString
          getKeyBytes(int index) {
        return key_.getByteString(index);
      }
      /**
       * repeated string key = 1;
       */
      public Builder setKey(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureKeyIsMutable();
        key_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string key = 1;
       */
      public Builder addKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureKeyIsMutable();
        key_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string key = 1;
       */
      public Builder addAllKey(
          java.lang.Iterable values) {
        ensureKeyIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, key_);
        onChanged();
        return this;
      }
      /**
       * repeated string key = 1;
       */
      public Builder clearKey() {
        key_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * repeated string key = 1;
       */
      public Builder addKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureKeyIsMutable();
        key_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureValueIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = new com.google.protobuf.LazyStringArrayList(value_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated string value = 2;
       */
      public com.google.protobuf.ProtocolStringList
          getValueList() {
        return value_.getUnmodifiableView();
      }
      /**
       * repeated string value = 2;
       */
      public int getValueCount() {
        return value_.size();
      }
      /**
       * repeated string value = 2;
       */
      public java.lang.String getValue(int index) {
        return value_.get(index);
      }
      /**
       * repeated string value = 2;
       */
      public com.google.protobuf.ByteString
          getValueBytes(int index) {
        return value_.getByteString(index);
      }
      /**
       * repeated string value = 2;
       */
      public Builder setValue(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string value = 2;
       */
      public Builder addValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string value = 2;
       */
      public Builder addAllValue(
          java.lang.Iterable values) {
        ensureValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, value_);
        onChanged();
        return this;
      }
      /**
       * repeated string value = 2;
       */
      public Builder clearValue() {
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * repeated string value = 2;
       */
      public Builder addValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.github.keenon.MetaData)
    }

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

    // @@protoc_insertion_point(class_scope:com.github.keenon.MetaData)
  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_github_keenon_GraphicalModel_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_github_keenon_GraphicalModel_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_github_keenon_Factor_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_github_keenon_Factor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_github_keenon_MetaData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_github_keenon_MetaData_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\024GraphicalModel.proto\022\021com.github.keeno" +
      "n\032\027ConcatVectorTable.proto\"\241\001\n\016Graphical" +
      "Model\022)\n\006factor\030\001 \003(\0132\031.com.github.keeno" +
      "n.Factor\0225\n\020variableMetaData\030\002 \003(\0132\033.com" +
      ".github.keenon.MetaData\022-\n\010metaData\030\003 \001(" +
      "\0132\033.com.github.keenon.MetaData\"\206\001\n\006Facto" +
      "r\022;\n\rfeaturesTable\030\001 \002(\0132$.com.github.ke" +
      "enon.ConcatVectorTable\022\020\n\010neighbor\030\002 \003(\005" +
      "\022-\n\010metaData\030\003 \001(\0132\033.com.github.keenon.M" +
      "etaData\"&\n\010MetaData\022\013\n\003key\030\001 \003(\t\022\r\n\005valu",
      "e\030\002 \003(\tB2\n\033com.github.keenon.loglinearB\023" +
      "GraphicalModelProto"
    };
    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;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.github.keenon.loglinear.ConcatVectorTableProto.getDescriptor(),
        }, assigner);
    internal_static_com_github_keenon_GraphicalModel_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_github_keenon_GraphicalModel_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_github_keenon_GraphicalModel_descriptor,
        new java.lang.String[] { "Factor", "VariableMetaData", "MetaData", });
    internal_static_com_github_keenon_Factor_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_github_keenon_Factor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_github_keenon_Factor_descriptor,
        new java.lang.String[] { "FeaturesTable", "Neighbor", "MetaData", });
    internal_static_com_github_keenon_MetaData_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_com_github_keenon_MetaData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_github_keenon_MetaData_descriptor,
        new java.lang.String[] { "Key", "Value", });
    com.github.keenon.loglinear.ConcatVectorTableProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy