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

package Messages;

public final class Concept {
  private Concept() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface VariablesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Variables)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string int_names = 2;</code>
     * @return A list containing the intNames.
     */
    java.util.List<java.lang.String>
        getIntNamesList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string int_names = 2;</code>
     * @return The count of intNames.
     */
    int getIntNamesCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string int_names = 2;</code>
     * @param index The index of the element to return.
     * @return The intNames at the given index.
     */
    java.lang.String getIntNames(int index);
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string int_names = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the intNames at the given index.
     */
    com.google.protobuf.ByteString
        getIntNamesBytes(int index);

    /**
     * <code>repeated int32 int_values = 3;</code>
     * @return A list containing the intValues.
     */
    java.util.List<java.lang.Integer> getIntValuesList();
    /**
     * <code>repeated int32 int_values = 3;</code>
     * @return The count of intValues.
     */
    int getIntValuesCount();
    /**
     * <code>repeated int32 int_values = 3;</code>
     * @param index The index of the element to return.
     * @return The intValues at the given index.
     */
    int getIntValues(int index);

    /**
     * <code>repeated string int_descriptions = 4;</code>
     * @return A list containing the intDescriptions.
     */
    java.util.List<java.lang.String>
        getIntDescriptionsList();
    /**
     * <code>repeated string int_descriptions = 4;</code>
     * @return The count of intDescriptions.
     */
    int getIntDescriptionsCount();
    /**
     * <code>repeated string int_descriptions = 4;</code>
     * @param index The index of the element to return.
     * @return The intDescriptions at the given index.
     */
    java.lang.String getIntDescriptions(int index);
    /**
     * <code>repeated string int_descriptions = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the intDescriptions at the given index.
     */
    com.google.protobuf.ByteString
        getIntDescriptionsBytes(int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string bool_names = 6;</code>
     * @return A list containing the boolNames.
     */
    java.util.List<java.lang.String>
        getBoolNamesList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string bool_names = 6;</code>
     * @return The count of boolNames.
     */
    int getBoolNamesCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string bool_names = 6;</code>
     * @param index The index of the element to return.
     * @return The boolNames at the given index.
     */
    java.lang.String getBoolNames(int index);
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string bool_names = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the boolNames at the given index.
     */
    com.google.protobuf.ByteString
        getBoolNamesBytes(int index);

    /**
     * <code>repeated bool bool_values = 7;</code>
     * @return A list containing the boolValues.
     */
    java.util.List<java.lang.Boolean> getBoolValuesList();
    /**
     * <code>repeated bool bool_values = 7;</code>
     * @return The count of boolValues.
     */
    int getBoolValuesCount();
    /**
     * <code>repeated bool bool_values = 7;</code>
     * @param index The index of the element to return.
     * @return The boolValues at the given index.
     */
    boolean getBoolValues(int index);

    /**
     * <code>repeated string bool_descriptions = 8;</code>
     * @return A list containing the boolDescriptions.
     */
    java.util.List<java.lang.String>
        getBoolDescriptionsList();
    /**
     * <code>repeated string bool_descriptions = 8;</code>
     * @return The count of boolDescriptions.
     */
    int getBoolDescriptionsCount();
    /**
     * <code>repeated string bool_descriptions = 8;</code>
     * @param index The index of the element to return.
     * @return The boolDescriptions at the given index.
     */
    java.lang.String getBoolDescriptions(int index);
    /**
     * <code>repeated string bool_descriptions = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the boolDescriptions at the given index.
     */
    com.google.protobuf.ByteString
        getBoolDescriptionsBytes(int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string double_names = 10;</code>
     * @return A list containing the doubleNames.
     */
    java.util.List<java.lang.String>
        getDoubleNamesList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string double_names = 10;</code>
     * @return The count of doubleNames.
     */
    int getDoubleNamesCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string double_names = 10;</code>
     * @param index The index of the element to return.
     * @return The doubleNames at the given index.
     */
    java.lang.String getDoubleNames(int index);
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string double_names = 10;</code>
     * @param index The index of the value to return.
     * @return The bytes of the doubleNames at the given index.
     */
    com.google.protobuf.ByteString
        getDoubleNamesBytes(int index);

    /**
     * <code>repeated double double_values = 11;</code>
     * @return A list containing the doubleValues.
     */
    java.util.List<java.lang.Double> getDoubleValuesList();
    /**
     * <code>repeated double double_values = 11;</code>
     * @return The count of doubleValues.
     */
    int getDoubleValuesCount();
    /**
     * <code>repeated double double_values = 11;</code>
     * @param index The index of the element to return.
     * @return The doubleValues at the given index.
     */
    double getDoubleValues(int index);

    /**
     * <code>repeated string double_descriptions = 12;</code>
     * @return A list containing the doubleDescriptions.
     */
    java.util.List<java.lang.String>
        getDoubleDescriptionsList();
    /**
     * <code>repeated string double_descriptions = 12;</code>
     * @return The count of doubleDescriptions.
     */
    int getDoubleDescriptionsCount();
    /**
     * <code>repeated string double_descriptions = 12;</code>
     * @param index The index of the element to return.
     * @return The doubleDescriptions at the given index.
     */
    java.lang.String getDoubleDescriptions(int index);
    /**
     * <code>repeated string double_descriptions = 12;</code>
     * @param index The index of the value to return.
     * @return The bytes of the doubleDescriptions at the given index.
     */
    com.google.protobuf.ByteString
        getDoubleDescriptionsBytes(int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_names = 14;</code>
     * @return A list containing the stringNames.
     */
    java.util.List<java.lang.String>
        getStringNamesList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_names = 14;</code>
     * @return The count of stringNames.
     */
    int getStringNamesCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_names = 14;</code>
     * @param index The index of the element to return.
     * @return The stringNames at the given index.
     */
    java.lang.String getStringNames(int index);
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_names = 14;</code>
     * @param index The index of the value to return.
     * @return The bytes of the stringNames at the given index.
     */
    com.google.protobuf.ByteString
        getStringNamesBytes(int index);

    /**
     * <code>repeated string string_values = 15;</code>
     * @return A list containing the stringValues.
     */
    java.util.List<java.lang.String>
        getStringValuesList();
    /**
     * <code>repeated string string_values = 15;</code>
     * @return The count of stringValues.
     */
    int getStringValuesCount();
    /**
     * <code>repeated string string_values = 15;</code>
     * @param index The index of the element to return.
     * @return The stringValues at the given index.
     */
    java.lang.String getStringValues(int index);
    /**
     * <code>repeated string string_values = 15;</code>
     * @param index The index of the value to return.
     * @return The bytes of the stringValues at the given index.
     */
    com.google.protobuf.ByteString
        getStringValuesBytes(int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_descriptions = 16;</code>
     * @return A list containing the stringDescriptions.
     */
    java.util.List<java.lang.String>
        getStringDescriptionsList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_descriptions = 16;</code>
     * @return The count of stringDescriptions.
     */
    int getStringDescriptionsCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_descriptions = 16;</code>
     * @param index The index of the element to return.
     * @return The stringDescriptions at the given index.
     */
    java.lang.String getStringDescriptions(int index);
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_descriptions = 16;</code>
     * @param index The index of the value to return.
     * @return The bytes of the stringDescriptions at the given index.
     */
    com.google.protobuf.ByteString
        getStringDescriptionsBytes(int index);
  }
  /**
   * Protobuf type {@code Messages.Variables}
   */
  public static final class Variables extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Variables)
      VariablesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Variables.newBuilder() to construct.
    private Variables(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Variables() {
      intNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      intValues_ = emptyIntList();
      intDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      boolNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      boolValues_ = emptyBooleanList();
      boolDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      doubleNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      doubleValues_ = emptyDoubleList();
      doubleDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      stringNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      stringValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      stringDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Variables();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Concept.internal_static_Messages_Variables_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Concept.internal_static_Messages_Variables_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Concept.Variables.class, Messages.Concept.Variables.Builder.class);
    }

    public static final int INT_NAMES_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList intNames_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string int_names = 2;</code>
     * @return A list containing the intNames.
     */
    public com.google.protobuf.ProtocolStringList
        getIntNamesList() {
      return intNames_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string int_names = 2;</code>
     * @return The count of intNames.
     */
    public int getIntNamesCount() {
      return intNames_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string int_names = 2;</code>
     * @param index The index of the element to return.
     * @return The intNames at the given index.
     */
    public java.lang.String getIntNames(int index) {
      return intNames_.get(index);
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string int_names = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the intNames at the given index.
     */
    public com.google.protobuf.ByteString
        getIntNamesBytes(int index) {
      return intNames_.getByteString(index);
    }

    public static final int INT_VALUES_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.IntList intValues_;
    /**
     * <code>repeated int32 int_values = 3;</code>
     * @return A list containing the intValues.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getIntValuesList() {
      return intValues_;
    }
    /**
     * <code>repeated int32 int_values = 3;</code>
     * @return The count of intValues.
     */
    public int getIntValuesCount() {
      return intValues_.size();
    }
    /**
     * <code>repeated int32 int_values = 3;</code>
     * @param index The index of the element to return.
     * @return The intValues at the given index.
     */
    public int getIntValues(int index) {
      return intValues_.getInt(index);
    }
    private int intValuesMemoizedSerializedSize = -1;

    public static final int INT_DESCRIPTIONS_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList intDescriptions_;
    /**
     * <code>repeated string int_descriptions = 4;</code>
     * @return A list containing the intDescriptions.
     */
    public com.google.protobuf.ProtocolStringList
        getIntDescriptionsList() {
      return intDescriptions_;
    }
    /**
     * <code>repeated string int_descriptions = 4;</code>
     * @return The count of intDescriptions.
     */
    public int getIntDescriptionsCount() {
      return intDescriptions_.size();
    }
    /**
     * <code>repeated string int_descriptions = 4;</code>
     * @param index The index of the element to return.
     * @return The intDescriptions at the given index.
     */
    public java.lang.String getIntDescriptions(int index) {
      return intDescriptions_.get(index);
    }
    /**
     * <code>repeated string int_descriptions = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the intDescriptions at the given index.
     */
    public com.google.protobuf.ByteString
        getIntDescriptionsBytes(int index) {
      return intDescriptions_.getByteString(index);
    }

    public static final int BOOL_NAMES_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList boolNames_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string bool_names = 6;</code>
     * @return A list containing the boolNames.
     */
    public com.google.protobuf.ProtocolStringList
        getBoolNamesList() {
      return boolNames_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string bool_names = 6;</code>
     * @return The count of boolNames.
     */
    public int getBoolNamesCount() {
      return boolNames_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string bool_names = 6;</code>
     * @param index The index of the element to return.
     * @return The boolNames at the given index.
     */
    public java.lang.String getBoolNames(int index) {
      return boolNames_.get(index);
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string bool_names = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the boolNames at the given index.
     */
    public com.google.protobuf.ByteString
        getBoolNamesBytes(int index) {
      return boolNames_.getByteString(index);
    }

    public static final int BOOL_VALUES_FIELD_NUMBER = 7;
    private com.google.protobuf.Internal.BooleanList boolValues_;
    /**
     * <code>repeated bool bool_values = 7;</code>
     * @return A list containing the boolValues.
     */
    @java.lang.Override
    public java.util.List<java.lang.Boolean>
        getBoolValuesList() {
      return boolValues_;
    }
    /**
     * <code>repeated bool bool_values = 7;</code>
     * @return The count of boolValues.
     */
    public int getBoolValuesCount() {
      return boolValues_.size();
    }
    /**
     * <code>repeated bool bool_values = 7;</code>
     * @param index The index of the element to return.
     * @return The boolValues at the given index.
     */
    public boolean getBoolValues(int index) {
      return boolValues_.getBoolean(index);
    }
    private int boolValuesMemoizedSerializedSize = -1;

    public static final int BOOL_DESCRIPTIONS_FIELD_NUMBER = 8;
    private com.google.protobuf.LazyStringList boolDescriptions_;
    /**
     * <code>repeated string bool_descriptions = 8;</code>
     * @return A list containing the boolDescriptions.
     */
    public com.google.protobuf.ProtocolStringList
        getBoolDescriptionsList() {
      return boolDescriptions_;
    }
    /**
     * <code>repeated string bool_descriptions = 8;</code>
     * @return The count of boolDescriptions.
     */
    public int getBoolDescriptionsCount() {
      return boolDescriptions_.size();
    }
    /**
     * <code>repeated string bool_descriptions = 8;</code>
     * @param index The index of the element to return.
     * @return The boolDescriptions at the given index.
     */
    public java.lang.String getBoolDescriptions(int index) {
      return boolDescriptions_.get(index);
    }
    /**
     * <code>repeated string bool_descriptions = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the boolDescriptions at the given index.
     */
    public com.google.protobuf.ByteString
        getBoolDescriptionsBytes(int index) {
      return boolDescriptions_.getByteString(index);
    }

    public static final int DOUBLE_NAMES_FIELD_NUMBER = 10;
    private com.google.protobuf.LazyStringList doubleNames_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string double_names = 10;</code>
     * @return A list containing the doubleNames.
     */
    public com.google.protobuf.ProtocolStringList
        getDoubleNamesList() {
      return doubleNames_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string double_names = 10;</code>
     * @return The count of doubleNames.
     */
    public int getDoubleNamesCount() {
      return doubleNames_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string double_names = 10;</code>
     * @param index The index of the element to return.
     * @return The doubleNames at the given index.
     */
    public java.lang.String getDoubleNames(int index) {
      return doubleNames_.get(index);
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string double_names = 10;</code>
     * @param index The index of the value to return.
     * @return The bytes of the doubleNames at the given index.
     */
    public com.google.protobuf.ByteString
        getDoubleNamesBytes(int index) {
      return doubleNames_.getByteString(index);
    }

    public static final int DOUBLE_VALUES_FIELD_NUMBER = 11;
    private com.google.protobuf.Internal.DoubleList doubleValues_;
    /**
     * <code>repeated double double_values = 11;</code>
     * @return A list containing the doubleValues.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getDoubleValuesList() {
      return doubleValues_;
    }
    /**
     * <code>repeated double double_values = 11;</code>
     * @return The count of doubleValues.
     */
    public int getDoubleValuesCount() {
      return doubleValues_.size();
    }
    /**
     * <code>repeated double double_values = 11;</code>
     * @param index The index of the element to return.
     * @return The doubleValues at the given index.
     */
    public double getDoubleValues(int index) {
      return doubleValues_.getDouble(index);
    }
    private int doubleValuesMemoizedSerializedSize = -1;

    public static final int DOUBLE_DESCRIPTIONS_FIELD_NUMBER = 12;
    private com.google.protobuf.LazyStringList doubleDescriptions_;
    /**
     * <code>repeated string double_descriptions = 12;</code>
     * @return A list containing the doubleDescriptions.
     */
    public com.google.protobuf.ProtocolStringList
        getDoubleDescriptionsList() {
      return doubleDescriptions_;
    }
    /**
     * <code>repeated string double_descriptions = 12;</code>
     * @return The count of doubleDescriptions.
     */
    public int getDoubleDescriptionsCount() {
      return doubleDescriptions_.size();
    }
    /**
     * <code>repeated string double_descriptions = 12;</code>
     * @param index The index of the element to return.
     * @return The doubleDescriptions at the given index.
     */
    public java.lang.String getDoubleDescriptions(int index) {
      return doubleDescriptions_.get(index);
    }
    /**
     * <code>repeated string double_descriptions = 12;</code>
     * @param index The index of the value to return.
     * @return The bytes of the doubleDescriptions at the given index.
     */
    public com.google.protobuf.ByteString
        getDoubleDescriptionsBytes(int index) {
      return doubleDescriptions_.getByteString(index);
    }

    public static final int STRING_NAMES_FIELD_NUMBER = 14;
    private com.google.protobuf.LazyStringList stringNames_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_names = 14;</code>
     * @return A list containing the stringNames.
     */
    public com.google.protobuf.ProtocolStringList
        getStringNamesList() {
      return stringNames_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_names = 14;</code>
     * @return The count of stringNames.
     */
    public int getStringNamesCount() {
      return stringNames_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_names = 14;</code>
     * @param index The index of the element to return.
     * @return The stringNames at the given index.
     */
    public java.lang.String getStringNames(int index) {
      return stringNames_.get(index);
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_names = 14;</code>
     * @param index The index of the value to return.
     * @return The bytes of the stringNames at the given index.
     */
    public com.google.protobuf.ByteString
        getStringNamesBytes(int index) {
      return stringNames_.getByteString(index);
    }

    public static final int STRING_VALUES_FIELD_NUMBER = 15;
    private com.google.protobuf.LazyStringList stringValues_;
    /**
     * <code>repeated string string_values = 15;</code>
     * @return A list containing the stringValues.
     */
    public com.google.protobuf.ProtocolStringList
        getStringValuesList() {
      return stringValues_;
    }
    /**
     * <code>repeated string string_values = 15;</code>
     * @return The count of stringValues.
     */
    public int getStringValuesCount() {
      return stringValues_.size();
    }
    /**
     * <code>repeated string string_values = 15;</code>
     * @param index The index of the element to return.
     * @return The stringValues at the given index.
     */
    public java.lang.String getStringValues(int index) {
      return stringValues_.get(index);
    }
    /**
     * <code>repeated string string_values = 15;</code>
     * @param index The index of the value to return.
     * @return The bytes of the stringValues at the given index.
     */
    public com.google.protobuf.ByteString
        getStringValuesBytes(int index) {
      return stringValues_.getByteString(index);
    }

    public static final int STRING_DESCRIPTIONS_FIELD_NUMBER = 16;
    private com.google.protobuf.LazyStringList stringDescriptions_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_descriptions = 16;</code>
     * @return A list containing the stringDescriptions.
     */
    public com.google.protobuf.ProtocolStringList
        getStringDescriptionsList() {
      return stringDescriptions_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_descriptions = 16;</code>
     * @return The count of stringDescriptions.
     */
    public int getStringDescriptionsCount() {
      return stringDescriptions_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_descriptions = 16;</code>
     * @param index The index of the element to return.
     * @return The stringDescriptions at the given index.
     */
    public java.lang.String getStringDescriptions(int index) {
      return stringDescriptions_.get(index);
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string string_descriptions = 16;</code>
     * @param index The index of the value to return.
     * @return The bytes of the stringDescriptions at the given index.
     */
    public com.google.protobuf.ByteString
        getStringDescriptionsBytes(int index) {
      return stringDescriptions_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < intNames_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, intNames_.getRaw(i));
      }
      if (getIntValuesList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(intValuesMemoizedSerializedSize);
      }
      for (int i = 0; i < intValues_.size(); i++) {
        output.writeInt32NoTag(intValues_.getInt(i));
      }
      for (int i = 0; i < intDescriptions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, intDescriptions_.getRaw(i));
      }
      for (int i = 0; i < boolNames_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, boolNames_.getRaw(i));
      }
      if (getBoolValuesList().size() > 0) {
        output.writeUInt32NoTag(58);
        output.writeUInt32NoTag(boolValuesMemoizedSerializedSize);
      }
      for (int i = 0; i < boolValues_.size(); i++) {
        output.writeBoolNoTag(boolValues_.getBoolean(i));
      }
      for (int i = 0; i < boolDescriptions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, boolDescriptions_.getRaw(i));
      }
      for (int i = 0; i < doubleNames_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, doubleNames_.getRaw(i));
      }
      if (getDoubleValuesList().size() > 0) {
        output.writeUInt32NoTag(90);
        output.writeUInt32NoTag(doubleValuesMemoizedSerializedSize);
      }
      for (int i = 0; i < doubleValues_.size(); i++) {
        output.writeDoubleNoTag(doubleValues_.getDouble(i));
      }
      for (int i = 0; i < doubleDescriptions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, doubleDescriptions_.getRaw(i));
      }
      for (int i = 0; i < stringNames_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, stringNames_.getRaw(i));
      }
      for (int i = 0; i < stringValues_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, stringValues_.getRaw(i));
      }
      for (int i = 0; i < stringDescriptions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, stringDescriptions_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < intNames_.size(); i++) {
          dataSize += computeStringSizeNoTag(intNames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getIntNamesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < intValues_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(intValues_.getInt(i));
        }
        size += dataSize;
        if (!getIntValuesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        intValuesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < intDescriptions_.size(); i++) {
          dataSize += computeStringSizeNoTag(intDescriptions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getIntDescriptionsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < boolNames_.size(); i++) {
          dataSize += computeStringSizeNoTag(boolNames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getBoolNamesList().size();
      }
      {
        int dataSize = 0;
        dataSize = 1 * getBoolValuesList().size();
        size += dataSize;
        if (!getBoolValuesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        boolValuesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < boolDescriptions_.size(); i++) {
          dataSize += computeStringSizeNoTag(boolDescriptions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getBoolDescriptionsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < doubleNames_.size(); i++) {
          dataSize += computeStringSizeNoTag(doubleNames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDoubleNamesList().size();
      }
      {
        int dataSize = 0;
        dataSize = 8 * getDoubleValuesList().size();
        size += dataSize;
        if (!getDoubleValuesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        doubleValuesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < doubleDescriptions_.size(); i++) {
          dataSize += computeStringSizeNoTag(doubleDescriptions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDoubleDescriptionsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < stringNames_.size(); i++) {
          dataSize += computeStringSizeNoTag(stringNames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getStringNamesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < stringValues_.size(); i++) {
          dataSize += computeStringSizeNoTag(stringValues_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getStringValuesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < stringDescriptions_.size(); i++) {
          dataSize += computeStringSizeNoTag(stringDescriptions_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getStringDescriptionsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Concept.Variables)) {
        return super.equals(obj);
      }
      Messages.Concept.Variables other = (Messages.Concept.Variables) obj;

      if (!getIntNamesList()
          .equals(other.getIntNamesList())) return false;
      if (!getIntValuesList()
          .equals(other.getIntValuesList())) return false;
      if (!getIntDescriptionsList()
          .equals(other.getIntDescriptionsList())) return false;
      if (!getBoolNamesList()
          .equals(other.getBoolNamesList())) return false;
      if (!getBoolValuesList()
          .equals(other.getBoolValuesList())) return false;
      if (!getBoolDescriptionsList()
          .equals(other.getBoolDescriptionsList())) return false;
      if (!getDoubleNamesList()
          .equals(other.getDoubleNamesList())) return false;
      if (!getDoubleValuesList()
          .equals(other.getDoubleValuesList())) return false;
      if (!getDoubleDescriptionsList()
          .equals(other.getDoubleDescriptionsList())) return false;
      if (!getStringNamesList()
          .equals(other.getStringNamesList())) return false;
      if (!getStringValuesList()
          .equals(other.getStringValuesList())) return false;
      if (!getStringDescriptionsList()
          .equals(other.getStringDescriptionsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getIntNamesCount() > 0) {
        hash = (37 * hash) + INT_NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getIntNamesList().hashCode();
      }
      if (getIntValuesCount() > 0) {
        hash = (37 * hash) + INT_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getIntValuesList().hashCode();
      }
      if (getIntDescriptionsCount() > 0) {
        hash = (37 * hash) + INT_DESCRIPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getIntDescriptionsList().hashCode();
      }
      if (getBoolNamesCount() > 0) {
        hash = (37 * hash) + BOOL_NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getBoolNamesList().hashCode();
      }
      if (getBoolValuesCount() > 0) {
        hash = (37 * hash) + BOOL_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getBoolValuesList().hashCode();
      }
      if (getBoolDescriptionsCount() > 0) {
        hash = (37 * hash) + BOOL_DESCRIPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getBoolDescriptionsList().hashCode();
      }
      if (getDoubleNamesCount() > 0) {
        hash = (37 * hash) + DOUBLE_NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getDoubleNamesList().hashCode();
      }
      if (getDoubleValuesCount() > 0) {
        hash = (37 * hash) + DOUBLE_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getDoubleValuesList().hashCode();
      }
      if (getDoubleDescriptionsCount() > 0) {
        hash = (37 * hash) + DOUBLE_DESCRIPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getDoubleDescriptionsList().hashCode();
      }
      if (getStringNamesCount() > 0) {
        hash = (37 * hash) + STRING_NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getStringNamesList().hashCode();
      }
      if (getStringValuesCount() > 0) {
        hash = (37 * hash) + STRING_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getStringValuesList().hashCode();
      }
      if (getStringDescriptionsCount() > 0) {
        hash = (37 * hash) + STRING_DESCRIPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getStringDescriptionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Messages.Concept.Variables parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Variables parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Variables parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Variables parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Variables parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Variables parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Variables parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Variables parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Variables parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Messages.Concept.Variables parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Variables parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Variables parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Concept.Variables prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Variables}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Variables)
        Messages.Concept.VariablesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Concept.internal_static_Messages_Variables_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Concept.internal_static_Messages_Variables_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Concept.Variables.class, Messages.Concept.Variables.Builder.class);
      }

      // Construct using Messages.Concept.Variables.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        intNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        intValues_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        intDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        boolNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        boolValues_ = emptyBooleanList();
        bitField0_ = (bitField0_ & ~0x00000010);
        boolDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        doubleNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        doubleValues_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000080);
        doubleDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        stringNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        stringValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        stringDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Concept.internal_static_Messages_Variables_descriptor;
      }

      @java.lang.Override
      public Messages.Concept.Variables getDefaultInstanceForType() {
        return Messages.Concept.Variables.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Concept.Variables build() {
        Messages.Concept.Variables result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Concept.Variables buildPartial() {
        Messages.Concept.Variables result = new Messages.Concept.Variables(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          intNames_ = intNames_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.intNames_ = intNames_;
        if (((bitField0_ & 0x00000002) != 0)) {
          intValues_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.intValues_ = intValues_;
        if (((bitField0_ & 0x00000004) != 0)) {
          intDescriptions_ = intDescriptions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.intDescriptions_ = intDescriptions_;
        if (((bitField0_ & 0x00000008) != 0)) {
          boolNames_ = boolNames_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.boolNames_ = boolNames_;
        if (((bitField0_ & 0x00000010) != 0)) {
          boolValues_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.boolValues_ = boolValues_;
        if (((bitField0_ & 0x00000020) != 0)) {
          boolDescriptions_ = boolDescriptions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.boolDescriptions_ = boolDescriptions_;
        if (((bitField0_ & 0x00000040) != 0)) {
          doubleNames_ = doubleNames_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.doubleNames_ = doubleNames_;
        if (((bitField0_ & 0x00000080) != 0)) {
          doubleValues_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.doubleValues_ = doubleValues_;
        if (((bitField0_ & 0x00000100) != 0)) {
          doubleDescriptions_ = doubleDescriptions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.doubleDescriptions_ = doubleDescriptions_;
        if (((bitField0_ & 0x00000200) != 0)) {
          stringNames_ = stringNames_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.stringNames_ = stringNames_;
        if (((bitField0_ & 0x00000400) != 0)) {
          stringValues_ = stringValues_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.stringValues_ = stringValues_;
        if (((bitField0_ & 0x00000800) != 0)) {
          stringDescriptions_ = stringDescriptions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000800);
        }
        result.stringDescriptions_ = stringDescriptions_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Messages.Concept.Variables) {
          return mergeFrom((Messages.Concept.Variables)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Messages.Concept.Variables other) {
        if (other == Messages.Concept.Variables.getDefaultInstance()) return this;
        if (!other.intNames_.isEmpty()) {
          if (intNames_.isEmpty()) {
            intNames_ = other.intNames_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureIntNamesIsMutable();
            intNames_.addAll(other.intNames_);
          }
          onChanged();
        }
        if (!other.intValues_.isEmpty()) {
          if (intValues_.isEmpty()) {
            intValues_ = other.intValues_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureIntValuesIsMutable();
            intValues_.addAll(other.intValues_);
          }
          onChanged();
        }
        if (!other.intDescriptions_.isEmpty()) {
          if (intDescriptions_.isEmpty()) {
            intDescriptions_ = other.intDescriptions_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureIntDescriptionsIsMutable();
            intDescriptions_.addAll(other.intDescriptions_);
          }
          onChanged();
        }
        if (!other.boolNames_.isEmpty()) {
          if (boolNames_.isEmpty()) {
            boolNames_ = other.boolNames_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureBoolNamesIsMutable();
            boolNames_.addAll(other.boolNames_);
          }
          onChanged();
        }
        if (!other.boolValues_.isEmpty()) {
          if (boolValues_.isEmpty()) {
            boolValues_ = other.boolValues_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureBoolValuesIsMutable();
            boolValues_.addAll(other.boolValues_);
          }
          onChanged();
        }
        if (!other.boolDescriptions_.isEmpty()) {
          if (boolDescriptions_.isEmpty()) {
            boolDescriptions_ = other.boolDescriptions_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureBoolDescriptionsIsMutable();
            boolDescriptions_.addAll(other.boolDescriptions_);
          }
          onChanged();
        }
        if (!other.doubleNames_.isEmpty()) {
          if (doubleNames_.isEmpty()) {
            doubleNames_ = other.doubleNames_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureDoubleNamesIsMutable();
            doubleNames_.addAll(other.doubleNames_);
          }
          onChanged();
        }
        if (!other.doubleValues_.isEmpty()) {
          if (doubleValues_.isEmpty()) {
            doubleValues_ = other.doubleValues_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureDoubleValuesIsMutable();
            doubleValues_.addAll(other.doubleValues_);
          }
          onChanged();
        }
        if (!other.doubleDescriptions_.isEmpty()) {
          if (doubleDescriptions_.isEmpty()) {
            doubleDescriptions_ = other.doubleDescriptions_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureDoubleDescriptionsIsMutable();
            doubleDescriptions_.addAll(other.doubleDescriptions_);
          }
          onChanged();
        }
        if (!other.stringNames_.isEmpty()) {
          if (stringNames_.isEmpty()) {
            stringNames_ = other.stringNames_;
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            ensureStringNamesIsMutable();
            stringNames_.addAll(other.stringNames_);
          }
          onChanged();
        }
        if (!other.stringValues_.isEmpty()) {
          if (stringValues_.isEmpty()) {
            stringValues_ = other.stringValues_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureStringValuesIsMutable();
            stringValues_.addAll(other.stringValues_);
          }
          onChanged();
        }
        if (!other.stringDescriptions_.isEmpty()) {
          if (stringDescriptions_.isEmpty()) {
            stringDescriptions_ = other.stringDescriptions_;
            bitField0_ = (bitField0_ & ~0x00000800);
          } else {
            ensureStringDescriptionsIsMutable();
            stringDescriptions_.addAll(other.stringDescriptions_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureIntNamesIsMutable();
                intNames_.add(s);
                break;
              } // case 18
              case 24: {
                int v = input.readInt32();
                ensureIntValuesIsMutable();
                intValues_.addInt(v);
                break;
              } // case 24
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureIntValuesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  intValues_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureIntDescriptionsIsMutable();
                intDescriptions_.add(s);
                break;
              } // case 34
              case 50: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureBoolNamesIsMutable();
                boolNames_.add(s);
                break;
              } // case 50
              case 56: {
                boolean v = input.readBool();
                ensureBoolValuesIsMutable();
                boolValues_.addBoolean(v);
                break;
              } // case 56
              case 58: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureBoolValuesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  boolValues_.addBoolean(input.readBool());
                }
                input.popLimit(limit);
                break;
              } // case 58
              case 66: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureBoolDescriptionsIsMutable();
                boolDescriptions_.add(s);
                break;
              } // case 66
              case 82: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureDoubleNamesIsMutable();
                doubleNames_.add(s);
                break;
              } // case 82
              case 89: {
                double v = input.readDouble();
                ensureDoubleValuesIsMutable();
                doubleValues_.addDouble(v);
                break;
              } // case 89
              case 90: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureDoubleValuesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  doubleValues_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 90
              case 98: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureDoubleDescriptionsIsMutable();
                doubleDescriptions_.add(s);
                break;
              } // case 98
              case 114: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureStringNamesIsMutable();
                stringNames_.add(s);
                break;
              } // case 114
              case 122: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureStringValuesIsMutable();
                stringValues_.add(s);
                break;
              } // case 122
              case 130: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureStringDescriptionsIsMutable();
                stringDescriptions_.add(s);
                break;
              } // case 130
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList intNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIntNamesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          intNames_ = new com.google.protobuf.LazyStringArrayList(intNames_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @return A list containing the intNames.
       */
      public com.google.protobuf.ProtocolStringList
          getIntNamesList() {
        return intNames_.getUnmodifiableView();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @return The count of intNames.
       */
      public int getIntNamesCount() {
        return intNames_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @param index The index of the element to return.
       * @return The intNames at the given index.
       */
      public java.lang.String getIntNames(int index) {
        return intNames_.get(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the intNames at the given index.
       */
      public com.google.protobuf.ByteString
          getIntNamesBytes(int index) {
        return intNames_.getByteString(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @param index The index to set the value at.
       * @param value The intNames to set.
       * @return This builder for chaining.
       */
      public Builder setIntNames(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIntNamesIsMutable();
        intNames_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @param value The intNames to add.
       * @return This builder for chaining.
       */
      public Builder addIntNames(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIntNamesIsMutable();
        intNames_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @param values The intNames to add.
       * @return This builder for chaining.
       */
      public Builder addAllIntNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureIntNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, intNames_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIntNames() {
        intNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string int_names = 2;</code>
       * @param value The bytes of the intNames to add.
       * @return This builder for chaining.
       */
      public Builder addIntNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureIntNamesIsMutable();
        intNames_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList intValues_ = emptyIntList();
      private void ensureIntValuesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          intValues_ = mutableCopy(intValues_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated int32 int_values = 3;</code>
       * @return A list containing the intValues.
       */
      public java.util.List<java.lang.Integer>
          getIntValuesList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(intValues_) : intValues_;
      }
      /**
       * <code>repeated int32 int_values = 3;</code>
       * @return The count of intValues.
       */
      public int getIntValuesCount() {
        return intValues_.size();
      }
      /**
       * <code>repeated int32 int_values = 3;</code>
       * @param index The index of the element to return.
       * @return The intValues at the given index.
       */
      public int getIntValues(int index) {
        return intValues_.getInt(index);
      }
      /**
       * <code>repeated int32 int_values = 3;</code>
       * @param index The index to set the value at.
       * @param value The intValues to set.
       * @return This builder for chaining.
       */
      public Builder setIntValues(
          int index, int value) {
        ensureIntValuesIsMutable();
        intValues_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 int_values = 3;</code>
       * @param value The intValues to add.
       * @return This builder for chaining.
       */
      public Builder addIntValues(int value) {
        ensureIntValuesIsMutable();
        intValues_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 int_values = 3;</code>
       * @param values The intValues to add.
       * @return This builder for chaining.
       */
      public Builder addAllIntValues(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureIntValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, intValues_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 int_values = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIntValues() {
        intValues_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList intDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIntDescriptionsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          intDescriptions_ = new com.google.protobuf.LazyStringArrayList(intDescriptions_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @return A list containing the intDescriptions.
       */
      public com.google.protobuf.ProtocolStringList
          getIntDescriptionsList() {
        return intDescriptions_.getUnmodifiableView();
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @return The count of intDescriptions.
       */
      public int getIntDescriptionsCount() {
        return intDescriptions_.size();
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @param index The index of the element to return.
       * @return The intDescriptions at the given index.
       */
      public java.lang.String getIntDescriptions(int index) {
        return intDescriptions_.get(index);
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the intDescriptions at the given index.
       */
      public com.google.protobuf.ByteString
          getIntDescriptionsBytes(int index) {
        return intDescriptions_.getByteString(index);
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @param index The index to set the value at.
       * @param value The intDescriptions to set.
       * @return This builder for chaining.
       */
      public Builder setIntDescriptions(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIntDescriptionsIsMutable();
        intDescriptions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @param value The intDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addIntDescriptions(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIntDescriptionsIsMutable();
        intDescriptions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @param values The intDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addAllIntDescriptions(
          java.lang.Iterable<java.lang.String> values) {
        ensureIntDescriptionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, intDescriptions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIntDescriptions() {
        intDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string int_descriptions = 4;</code>
       * @param value The bytes of the intDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addIntDescriptionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureIntDescriptionsIsMutable();
        intDescriptions_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList boolNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureBoolNamesIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          boolNames_ = new com.google.protobuf.LazyStringArrayList(boolNames_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @return A list containing the boolNames.
       */
      public com.google.protobuf.ProtocolStringList
          getBoolNamesList() {
        return boolNames_.getUnmodifiableView();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @return The count of boolNames.
       */
      public int getBoolNamesCount() {
        return boolNames_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @param index The index of the element to return.
       * @return The boolNames at the given index.
       */
      public java.lang.String getBoolNames(int index) {
        return boolNames_.get(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the boolNames at the given index.
       */
      public com.google.protobuf.ByteString
          getBoolNamesBytes(int index) {
        return boolNames_.getByteString(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @param index The index to set the value at.
       * @param value The boolNames to set.
       * @return This builder for chaining.
       */
      public Builder setBoolNames(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureBoolNamesIsMutable();
        boolNames_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @param value The boolNames to add.
       * @return This builder for chaining.
       */
      public Builder addBoolNames(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureBoolNamesIsMutable();
        boolNames_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @param values The boolNames to add.
       * @return This builder for chaining.
       */
      public Builder addAllBoolNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureBoolNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, boolNames_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearBoolNames() {
        boolNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string bool_names = 6;</code>
       * @param value The bytes of the boolNames to add.
       * @return This builder for chaining.
       */
      public Builder addBoolNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureBoolNamesIsMutable();
        boolNames_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.BooleanList boolValues_ = emptyBooleanList();
      private void ensureBoolValuesIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          boolValues_ = mutableCopy(boolValues_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <code>repeated bool bool_values = 7;</code>
       * @return A list containing the boolValues.
       */
      public java.util.List<java.lang.Boolean>
          getBoolValuesList() {
        return ((bitField0_ & 0x00000010) != 0) ?
                 java.util.Collections.unmodifiableList(boolValues_) : boolValues_;
      }
      /**
       * <code>repeated bool bool_values = 7;</code>
       * @return The count of boolValues.
       */
      public int getBoolValuesCount() {
        return boolValues_.size();
      }
      /**
       * <code>repeated bool bool_values = 7;</code>
       * @param index The index of the element to return.
       * @return The boolValues at the given index.
       */
      public boolean getBoolValues(int index) {
        return boolValues_.getBoolean(index);
      }
      /**
       * <code>repeated bool bool_values = 7;</code>
       * @param index The index to set the value at.
       * @param value The boolValues to set.
       * @return This builder for chaining.
       */
      public Builder setBoolValues(
          int index, boolean value) {
        ensureBoolValuesIsMutable();
        boolValues_.setBoolean(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool bool_values = 7;</code>
       * @param value The boolValues to add.
       * @return This builder for chaining.
       */
      public Builder addBoolValues(boolean value) {
        ensureBoolValuesIsMutable();
        boolValues_.addBoolean(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool bool_values = 7;</code>
       * @param values The boolValues to add.
       * @return This builder for chaining.
       */
      public Builder addAllBoolValues(
          java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureBoolValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, boolValues_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool bool_values = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearBoolValues() {
        boolValues_ = emptyBooleanList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList boolDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureBoolDescriptionsIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          boolDescriptions_ = new com.google.protobuf.LazyStringArrayList(boolDescriptions_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @return A list containing the boolDescriptions.
       */
      public com.google.protobuf.ProtocolStringList
          getBoolDescriptionsList() {
        return boolDescriptions_.getUnmodifiableView();
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @return The count of boolDescriptions.
       */
      public int getBoolDescriptionsCount() {
        return boolDescriptions_.size();
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @param index The index of the element to return.
       * @return The boolDescriptions at the given index.
       */
      public java.lang.String getBoolDescriptions(int index) {
        return boolDescriptions_.get(index);
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @param index The index of the value to return.
       * @return The bytes of the boolDescriptions at the given index.
       */
      public com.google.protobuf.ByteString
          getBoolDescriptionsBytes(int index) {
        return boolDescriptions_.getByteString(index);
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @param index The index to set the value at.
       * @param value The boolDescriptions to set.
       * @return This builder for chaining.
       */
      public Builder setBoolDescriptions(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureBoolDescriptionsIsMutable();
        boolDescriptions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @param value The boolDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addBoolDescriptions(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureBoolDescriptionsIsMutable();
        boolDescriptions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @param values The boolDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addAllBoolDescriptions(
          java.lang.Iterable<java.lang.String> values) {
        ensureBoolDescriptionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, boolDescriptions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearBoolDescriptions() {
        boolDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string bool_descriptions = 8;</code>
       * @param value The bytes of the boolDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addBoolDescriptionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureBoolDescriptionsIsMutable();
        boolDescriptions_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList doubleNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDoubleNamesIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          doubleNames_ = new com.google.protobuf.LazyStringArrayList(doubleNames_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @return A list containing the doubleNames.
       */
      public com.google.protobuf.ProtocolStringList
          getDoubleNamesList() {
        return doubleNames_.getUnmodifiableView();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @return The count of doubleNames.
       */
      public int getDoubleNamesCount() {
        return doubleNames_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @param index The index of the element to return.
       * @return The doubleNames at the given index.
       */
      public java.lang.String getDoubleNames(int index) {
        return doubleNames_.get(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @param index The index of the value to return.
       * @return The bytes of the doubleNames at the given index.
       */
      public com.google.protobuf.ByteString
          getDoubleNamesBytes(int index) {
        return doubleNames_.getByteString(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @param index The index to set the value at.
       * @param value The doubleNames to set.
       * @return This builder for chaining.
       */
      public Builder setDoubleNames(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDoubleNamesIsMutable();
        doubleNames_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @param value The doubleNames to add.
       * @return This builder for chaining.
       */
      public Builder addDoubleNames(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDoubleNamesIsMutable();
        doubleNames_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @param values The doubleNames to add.
       * @return This builder for chaining.
       */
      public Builder addAllDoubleNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureDoubleNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, doubleNames_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearDoubleNames() {
        doubleNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string double_names = 10;</code>
       * @param value The bytes of the doubleNames to add.
       * @return This builder for chaining.
       */
      public Builder addDoubleNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDoubleNamesIsMutable();
        doubleNames_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList doubleValues_ = emptyDoubleList();
      private void ensureDoubleValuesIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          doubleValues_ = mutableCopy(doubleValues_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * <code>repeated double double_values = 11;</code>
       * @return A list containing the doubleValues.
       */
      public java.util.List<java.lang.Double>
          getDoubleValuesList() {
        return ((bitField0_ & 0x00000080) != 0) ?
                 java.util.Collections.unmodifiableList(doubleValues_) : doubleValues_;
      }
      /**
       * <code>repeated double double_values = 11;</code>
       * @return The count of doubleValues.
       */
      public int getDoubleValuesCount() {
        return doubleValues_.size();
      }
      /**
       * <code>repeated double double_values = 11;</code>
       * @param index The index of the element to return.
       * @return The doubleValues at the given index.
       */
      public double getDoubleValues(int index) {
        return doubleValues_.getDouble(index);
      }
      /**
       * <code>repeated double double_values = 11;</code>
       * @param index The index to set the value at.
       * @param value The doubleValues to set.
       * @return This builder for chaining.
       */
      public Builder setDoubleValues(
          int index, double value) {
        ensureDoubleValuesIsMutable();
        doubleValues_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double double_values = 11;</code>
       * @param value The doubleValues to add.
       * @return This builder for chaining.
       */
      public Builder addDoubleValues(double value) {
        ensureDoubleValuesIsMutable();
        doubleValues_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double double_values = 11;</code>
       * @param values The doubleValues to add.
       * @return This builder for chaining.
       */
      public Builder addAllDoubleValues(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureDoubleValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, doubleValues_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double double_values = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearDoubleValues() {
        doubleValues_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList doubleDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDoubleDescriptionsIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          doubleDescriptions_ = new com.google.protobuf.LazyStringArrayList(doubleDescriptions_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @return A list containing the doubleDescriptions.
       */
      public com.google.protobuf.ProtocolStringList
          getDoubleDescriptionsList() {
        return doubleDescriptions_.getUnmodifiableView();
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @return The count of doubleDescriptions.
       */
      public int getDoubleDescriptionsCount() {
        return doubleDescriptions_.size();
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @param index The index of the element to return.
       * @return The doubleDescriptions at the given index.
       */
      public java.lang.String getDoubleDescriptions(int index) {
        return doubleDescriptions_.get(index);
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @param index The index of the value to return.
       * @return The bytes of the doubleDescriptions at the given index.
       */
      public com.google.protobuf.ByteString
          getDoubleDescriptionsBytes(int index) {
        return doubleDescriptions_.getByteString(index);
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @param index The index to set the value at.
       * @param value The doubleDescriptions to set.
       * @return This builder for chaining.
       */
      public Builder setDoubleDescriptions(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDoubleDescriptionsIsMutable();
        doubleDescriptions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @param value The doubleDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addDoubleDescriptions(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDoubleDescriptionsIsMutable();
        doubleDescriptions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @param values The doubleDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addAllDoubleDescriptions(
          java.lang.Iterable<java.lang.String> values) {
        ensureDoubleDescriptionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, doubleDescriptions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearDoubleDescriptions() {
        doubleDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string double_descriptions = 12;</code>
       * @param value The bytes of the doubleDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addDoubleDescriptionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDoubleDescriptionsIsMutable();
        doubleDescriptions_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList stringNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStringNamesIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          stringNames_ = new com.google.protobuf.LazyStringArrayList(stringNames_);
          bitField0_ |= 0x00000200;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @return A list containing the stringNames.
       */
      public com.google.protobuf.ProtocolStringList
          getStringNamesList() {
        return stringNames_.getUnmodifiableView();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @return The count of stringNames.
       */
      public int getStringNamesCount() {
        return stringNames_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @param index The index of the element to return.
       * @return The stringNames at the given index.
       */
      public java.lang.String getStringNames(int index) {
        return stringNames_.get(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @param index The index of the value to return.
       * @return The bytes of the stringNames at the given index.
       */
      public com.google.protobuf.ByteString
          getStringNamesBytes(int index) {
        return stringNames_.getByteString(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @param index The index to set the value at.
       * @param value The stringNames to set.
       * @return This builder for chaining.
       */
      public Builder setStringNames(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringNamesIsMutable();
        stringNames_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @param value The stringNames to add.
       * @return This builder for chaining.
       */
      public Builder addStringNames(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringNamesIsMutable();
        stringNames_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @param values The stringNames to add.
       * @return This builder for chaining.
       */
      public Builder addAllStringNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureStringNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, stringNames_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearStringNames() {
        stringNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_names = 14;</code>
       * @param value The bytes of the stringNames to add.
       * @return This builder for chaining.
       */
      public Builder addStringNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureStringNamesIsMutable();
        stringNames_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList stringValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStringValuesIsMutable() {
        if (!((bitField0_ & 0x00000400) != 0)) {
          stringValues_ = new com.google.protobuf.LazyStringArrayList(stringValues_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @return A list containing the stringValues.
       */
      public com.google.protobuf.ProtocolStringList
          getStringValuesList() {
        return stringValues_.getUnmodifiableView();
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @return The count of stringValues.
       */
      public int getStringValuesCount() {
        return stringValues_.size();
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @param index The index of the element to return.
       * @return The stringValues at the given index.
       */
      public java.lang.String getStringValues(int index) {
        return stringValues_.get(index);
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @param index The index of the value to return.
       * @return The bytes of the stringValues at the given index.
       */
      public com.google.protobuf.ByteString
          getStringValuesBytes(int index) {
        return stringValues_.getByteString(index);
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @param index The index to set the value at.
       * @param value The stringValues to set.
       * @return This builder for chaining.
       */
      public Builder setStringValues(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringValuesIsMutable();
        stringValues_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @param value The stringValues to add.
       * @return This builder for chaining.
       */
      public Builder addStringValues(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringValuesIsMutable();
        stringValues_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @param values The stringValues to add.
       * @return This builder for chaining.
       */
      public Builder addAllStringValues(
          java.lang.Iterable<java.lang.String> values) {
        ensureStringValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, stringValues_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearStringValues() {
        stringValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string string_values = 15;</code>
       * @param value The bytes of the stringValues to add.
       * @return This builder for chaining.
       */
      public Builder addStringValuesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureStringValuesIsMutable();
        stringValues_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList stringDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStringDescriptionsIsMutable() {
        if (!((bitField0_ & 0x00000800) != 0)) {
          stringDescriptions_ = new com.google.protobuf.LazyStringArrayList(stringDescriptions_);
          bitField0_ |= 0x00000800;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @return A list containing the stringDescriptions.
       */
      public com.google.protobuf.ProtocolStringList
          getStringDescriptionsList() {
        return stringDescriptions_.getUnmodifiableView();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @return The count of stringDescriptions.
       */
      public int getStringDescriptionsCount() {
        return stringDescriptions_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @param index The index of the element to return.
       * @return The stringDescriptions at the given index.
       */
      public java.lang.String getStringDescriptions(int index) {
        return stringDescriptions_.get(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @param index The index of the value to return.
       * @return The bytes of the stringDescriptions at the given index.
       */
      public com.google.protobuf.ByteString
          getStringDescriptionsBytes(int index) {
        return stringDescriptions_.getByteString(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @param index The index to set the value at.
       * @param value The stringDescriptions to set.
       * @return This builder for chaining.
       */
      public Builder setStringDescriptions(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringDescriptionsIsMutable();
        stringDescriptions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @param value The stringDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addStringDescriptions(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringDescriptionsIsMutable();
        stringDescriptions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @param values The stringDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addAllStringDescriptions(
          java.lang.Iterable<java.lang.String> values) {
        ensureStringDescriptionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, stringDescriptions_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearStringDescriptions() {
        stringDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string string_descriptions = 16;</code>
       * @param value The bytes of the stringDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addStringDescriptionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureStringDescriptionsIsMutable();
        stringDescriptions_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Variables)
    }

    // @@protoc_insertion_point(class_scope:Messages.Variables)
    private static final Messages.Concept.Variables DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Concept.Variables();
    }

    public static Messages.Concept.Variables getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Variables>
        PARSER = new com.google.protobuf.AbstractParser<Variables>() {
      @java.lang.Override
      public Variables parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public Messages.Concept.Variables getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FunctionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Function)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * argument object binding requirements:
     * </pre>
     *
     * <code>repeated string argument_types = 2;</code>
     * @return A list containing the argumentTypes.
     */
    java.util.List<java.lang.String>
        getArgumentTypesList();
    /**
     * <pre>
     * argument object binding requirements:
     * </pre>
     *
     * <code>repeated string argument_types = 2;</code>
     * @return The count of argumentTypes.
     */
    int getArgumentTypesCount();
    /**
     * <pre>
     * argument object binding requirements:
     * </pre>
     *
     * <code>repeated string argument_types = 2;</code>
     * @param index The index of the element to return.
     * @return The argumentTypes at the given index.
     */
    java.lang.String getArgumentTypes(int index);
    /**
     * <pre>
     * argument object binding requirements:
     * </pre>
     *
     * <code>repeated string argument_types = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the argumentTypes at the given index.
     */
    com.google.protobuf.ByteString
        getArgumentTypesBytes(int index);

    /**
     * <pre>
     * matching argument descriptions (used by UI)
     * </pre>
     *
     * <code>repeated string argument_descriptions = 3;</code>
     * @return A list containing the argumentDescriptions.
     */
    java.util.List<java.lang.String>
        getArgumentDescriptionsList();
    /**
     * <pre>
     * matching argument descriptions (used by UI)
     * </pre>
     *
     * <code>repeated string argument_descriptions = 3;</code>
     * @return The count of argumentDescriptions.
     */
    int getArgumentDescriptionsCount();
    /**
     * <pre>
     * matching argument descriptions (used by UI)
     * </pre>
     *
     * <code>repeated string argument_descriptions = 3;</code>
     * @param index The index of the element to return.
     * @return The argumentDescriptions at the given index.
     */
    java.lang.String getArgumentDescriptions(int index);
    /**
     * <pre>
     * matching argument descriptions (used by UI)
     * </pre>
     *
     * <code>repeated string argument_descriptions = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the argumentDescriptions at the given index.
     */
    com.google.protobuf.ByteString
        getArgumentDescriptionsBytes(int index);

    /**
     * <pre>
     * PK's required for algorithm inputs (user inputs)
     * </pre>
     *
     * <code>repeated string inputs = 4;</code>
     * @return A list containing the inputs.
     */
    java.util.List<java.lang.String>
        getInputsList();
    /**
     * <pre>
     * PK's required for algorithm inputs (user inputs)
     * </pre>
     *
     * <code>repeated string inputs = 4;</code>
     * @return The count of inputs.
     */
    int getInputsCount();
    /**
     * <pre>
     * PK's required for algorithm inputs (user inputs)
     * </pre>
     *
     * <code>repeated string inputs = 4;</code>
     * @param index The index of the element to return.
     * @return The inputs at the given index.
     */
    java.lang.String getInputs(int index);
    /**
     * <pre>
     * PK's required for algorithm inputs (user inputs)
     * </pre>
     *
     * <code>repeated string inputs = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the inputs at the given index.
     */
    com.google.protobuf.ByteString
        getInputsBytes(int index);

    /**
     * <pre>
     * PK's required for algorithm outputs
     * </pre>
     *
     * <code>repeated string outputs = 5;</code>
     * @return A list containing the outputs.
     */
    java.util.List<java.lang.String>
        getOutputsList();
    /**
     * <pre>
     * PK's required for algorithm outputs
     * </pre>
     *
     * <code>repeated string outputs = 5;</code>
     * @return The count of outputs.
     */
    int getOutputsCount();
    /**
     * <pre>
     * PK's required for algorithm outputs
     * </pre>
     *
     * <code>repeated string outputs = 5;</code>
     * @param index The index of the element to return.
     * @return The outputs at the given index.
     */
    java.lang.String getOutputs(int index);
    /**
     * <pre>
     * PK's required for algorithm outputs
     * </pre>
     *
     * <code>repeated string outputs = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the outputs at the given index.
     */
    com.google.protobuf.ByteString
        getOutputsBytes(int index);

    /**
     * <pre>
     * PK's for uniform values across all nodes
     * </pre>
     *
     * <code>repeated string constants = 6;</code>
     * @return A list containing the constants.
     */
    java.util.List<java.lang.String>
        getConstantsList();
    /**
     * <pre>
     * PK's for uniform values across all nodes
     * </pre>
     *
     * <code>repeated string constants = 6;</code>
     * @return The count of constants.
     */
    int getConstantsCount();
    /**
     * <pre>
     * PK's for uniform values across all nodes
     * </pre>
     *
     * <code>repeated string constants = 6;</code>
     * @param index The index of the element to return.
     * @return The constants at the given index.
     */
    java.lang.String getConstants(int index);
    /**
     * <pre>
     * PK's for uniform values across all nodes
     * </pre>
     *
     * <code>repeated string constants = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the constants at the given index.
     */
    com.google.protobuf.ByteString
        getConstantsBytes(int index);

    /**
     * <pre>
     * PK's for to be set by user in UI (end-user inputs)
     * </pre>
     *
     * <code>repeated string to_be_defined = 7;</code>
     * @return A list containing the toBeDefined.
     */
    java.util.List<java.lang.String>
        getToBeDefinedList();
    /**
     * <pre>
     * PK's for to be set by user in UI (end-user inputs)
     * </pre>
     *
     * <code>repeated string to_be_defined = 7;</code>
     * @return The count of toBeDefined.
     */
    int getToBeDefinedCount();
    /**
     * <pre>
     * PK's for to be set by user in UI (end-user inputs)
     * </pre>
     *
     * <code>repeated string to_be_defined = 7;</code>
     * @param index The index of the element to return.
     * @return The toBeDefined at the given index.
     */
    java.lang.String getToBeDefined(int index);
    /**
     * <pre>
     * PK's for to be set by user in UI (end-user inputs)
     * </pre>
     *
     * <code>repeated string to_be_defined = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the toBeDefined at the given index.
     */
    com.google.protobuf.ByteString
        getToBeDefinedBytes(int index);

    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    java.util.List<Messages.Vector.Vector64> 
        getDataList();
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    Messages.Vector.Vector64 getData(int index);
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    int getDataCount();
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    java.util.List<? extends Messages.Vector.Vector64OrBuilder> 
        getDataOrBuilderList();
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    Messages.Vector.Vector64OrBuilder getDataOrBuilder(
        int index);

    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>bool cpu_capable = 10;</code>
     * @return The cpuCapable.
     */
    boolean getCpuCapable();

    /**
     * <code>bool gpu_capable = 11;</code>
     * @return The gpuCapable.
     */
    boolean getGpuCapable();

    /**
     * <code>bool include_as_preprocessor = 12;</code>
     * @return The includeAsPreprocessor.
     */
    boolean getIncludeAsPreprocessor();

    /**
     * <code>bool omit_from_main_loop = 13;</code>
     * @return The omitFromMainLoop.
     */
    boolean getOmitFromMainLoop();

    /**
     * <code>bool include_as_postprocessor = 14;</code>
     * @return The includeAsPostprocessor.
     */
    boolean getIncludeAsPostprocessor();

    /**
     * <code>bool mutually_exclusive = 15;</code>
     * @return The mutuallyExclusive.
     */
    boolean getMutuallyExclusive();

    /**
     * <code>bool only_once = 16;</code>
     * @return The onlyOnce.
     */
    boolean getOnlyOnce();

    /**
     * <code>bool push_front = 17;</code>
     * @return The pushFront.
     */
    boolean getPushFront();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>bool dont_flatten = 18;</code>
     * @return The dontFlatten.
     */
    boolean getDontFlatten();
  }
  /**
   * Protobuf type {@code Messages.Function}
   */
  public static final class Function extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Function)
      FunctionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Function.newBuilder() to construct.
    private Function(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Function() {
      name_ = "";
      argumentTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      argumentDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      inputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      outputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      constants_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      toBeDefined_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      data_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Function();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Concept.internal_static_Messages_Function_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Concept.internal_static_Messages_Function_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Concept.Function.class, Messages.Concept.Function.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARGUMENT_TYPES_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList argumentTypes_;
    /**
     * <pre>
     * argument object binding requirements:
     * </pre>
     *
     * <code>repeated string argument_types = 2;</code>
     * @return A list containing the argumentTypes.
     */
    public com.google.protobuf.ProtocolStringList
        getArgumentTypesList() {
      return argumentTypes_;
    }
    /**
     * <pre>
     * argument object binding requirements:
     * </pre>
     *
     * <code>repeated string argument_types = 2;</code>
     * @return The count of argumentTypes.
     */
    public int getArgumentTypesCount() {
      return argumentTypes_.size();
    }
    /**
     * <pre>
     * argument object binding requirements:
     * </pre>
     *
     * <code>repeated string argument_types = 2;</code>
     * @param index The index of the element to return.
     * @return The argumentTypes at the given index.
     */
    public java.lang.String getArgumentTypes(int index) {
      return argumentTypes_.get(index);
    }
    /**
     * <pre>
     * argument object binding requirements:
     * </pre>
     *
     * <code>repeated string argument_types = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the argumentTypes at the given index.
     */
    public com.google.protobuf.ByteString
        getArgumentTypesBytes(int index) {
      return argumentTypes_.getByteString(index);
    }

    public static final int ARGUMENT_DESCRIPTIONS_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList argumentDescriptions_;
    /**
     * <pre>
     * matching argument descriptions (used by UI)
     * </pre>
     *
     * <code>repeated string argument_descriptions = 3;</code>
     * @return A list containing the argumentDescriptions.
     */
    public com.google.protobuf.ProtocolStringList
        getArgumentDescriptionsList() {
      return argumentDescriptions_;
    }
    /**
     * <pre>
     * matching argument descriptions (used by UI)
     * </pre>
     *
     * <code>repeated string argument_descriptions = 3;</code>
     * @return The count of argumentDescriptions.
     */
    public int getArgumentDescriptionsCount() {
      return argumentDescriptions_.size();
    }
    /**
     * <pre>
     * matching argument descriptions (used by UI)
     * </pre>
     *
     * <code>repeated string argument_descriptions = 3;</code>
     * @param index The index of the element to return.
     * @return The argumentDescriptions at the given index.
     */
    public java.lang.String getArgumentDescriptions(int index) {
      return argumentDescriptions_.get(index);
    }
    /**
     * <pre>
     * matching argument descriptions (used by UI)
     * </pre>
     *
     * <code>repeated string argument_descriptions = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the argumentDescriptions at the given index.
     */
    public com.google.protobuf.ByteString
        getArgumentDescriptionsBytes(int index) {
      return argumentDescriptions_.getByteString(index);
    }

    public static final int INPUTS_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList inputs_;
    /**
     * <pre>
     * PK's required for algorithm inputs (user inputs)
     * </pre>
     *
     * <code>repeated string inputs = 4;</code>
     * @return A list containing the inputs.
     */
    public com.google.protobuf.ProtocolStringList
        getInputsList() {
      return inputs_;
    }
    /**
     * <pre>
     * PK's required for algorithm inputs (user inputs)
     * </pre>
     *
     * <code>repeated string inputs = 4;</code>
     * @return The count of inputs.
     */
    public int getInputsCount() {
      return inputs_.size();
    }
    /**
     * <pre>
     * PK's required for algorithm inputs (user inputs)
     * </pre>
     *
     * <code>repeated string inputs = 4;</code>
     * @param index The index of the element to return.
     * @return The inputs at the given index.
     */
    public java.lang.String getInputs(int index) {
      return inputs_.get(index);
    }
    /**
     * <pre>
     * PK's required for algorithm inputs (user inputs)
     * </pre>
     *
     * <code>repeated string inputs = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the inputs at the given index.
     */
    public com.google.protobuf.ByteString
        getInputsBytes(int index) {
      return inputs_.getByteString(index);
    }

    public static final int OUTPUTS_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList outputs_;
    /**
     * <pre>
     * PK's required for algorithm outputs
     * </pre>
     *
     * <code>repeated string outputs = 5;</code>
     * @return A list containing the outputs.
     */
    public com.google.protobuf.ProtocolStringList
        getOutputsList() {
      return outputs_;
    }
    /**
     * <pre>
     * PK's required for algorithm outputs
     * </pre>
     *
     * <code>repeated string outputs = 5;</code>
     * @return The count of outputs.
     */
    public int getOutputsCount() {
      return outputs_.size();
    }
    /**
     * <pre>
     * PK's required for algorithm outputs
     * </pre>
     *
     * <code>repeated string outputs = 5;</code>
     * @param index The index of the element to return.
     * @return The outputs at the given index.
     */
    public java.lang.String getOutputs(int index) {
      return outputs_.get(index);
    }
    /**
     * <pre>
     * PK's required for algorithm outputs
     * </pre>
     *
     * <code>repeated string outputs = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the outputs at the given index.
     */
    public com.google.protobuf.ByteString
        getOutputsBytes(int index) {
      return outputs_.getByteString(index);
    }

    public static final int CONSTANTS_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList constants_;
    /**
     * <pre>
     * PK's for uniform values across all nodes
     * </pre>
     *
     * <code>repeated string constants = 6;</code>
     * @return A list containing the constants.
     */
    public com.google.protobuf.ProtocolStringList
        getConstantsList() {
      return constants_;
    }
    /**
     * <pre>
     * PK's for uniform values across all nodes
     * </pre>
     *
     * <code>repeated string constants = 6;</code>
     * @return The count of constants.
     */
    public int getConstantsCount() {
      return constants_.size();
    }
    /**
     * <pre>
     * PK's for uniform values across all nodes
     * </pre>
     *
     * <code>repeated string constants = 6;</code>
     * @param index The index of the element to return.
     * @return The constants at the given index.
     */
    public java.lang.String getConstants(int index) {
      return constants_.get(index);
    }
    /**
     * <pre>
     * PK's for uniform values across all nodes
     * </pre>
     *
     * <code>repeated string constants = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the constants at the given index.
     */
    public com.google.protobuf.ByteString
        getConstantsBytes(int index) {
      return constants_.getByteString(index);
    }

    public static final int TO_BE_DEFINED_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList toBeDefined_;
    /**
     * <pre>
     * PK's for to be set by user in UI (end-user inputs)
     * </pre>
     *
     * <code>repeated string to_be_defined = 7;</code>
     * @return A list containing the toBeDefined.
     */
    public com.google.protobuf.ProtocolStringList
        getToBeDefinedList() {
      return toBeDefined_;
    }
    /**
     * <pre>
     * PK's for to be set by user in UI (end-user inputs)
     * </pre>
     *
     * <code>repeated string to_be_defined = 7;</code>
     * @return The count of toBeDefined.
     */
    public int getToBeDefinedCount() {
      return toBeDefined_.size();
    }
    /**
     * <pre>
     * PK's for to be set by user in UI (end-user inputs)
     * </pre>
     *
     * <code>repeated string to_be_defined = 7;</code>
     * @param index The index of the element to return.
     * @return The toBeDefined at the given index.
     */
    public java.lang.String getToBeDefined(int index) {
      return toBeDefined_.get(index);
    }
    /**
     * <pre>
     * PK's for to be set by user in UI (end-user inputs)
     * </pre>
     *
     * <code>repeated string to_be_defined = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the toBeDefined at the given index.
     */
    public com.google.protobuf.ByteString
        getToBeDefinedBytes(int index) {
      return toBeDefined_.getByteString(index);
    }

    public static final int DATA_FIELD_NUMBER = 8;
    private java.util.List<Messages.Vector.Vector64> data_;
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Vector.Vector64> getDataList() {
      return data_;
    }
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Vector.Vector64OrBuilder> 
        getDataOrBuilderList() {
      return data_;
    }
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    @java.lang.Override
    public int getDataCount() {
      return data_.size();
    }
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    @java.lang.Override
    public Messages.Vector.Vector64 getData(int index) {
      return data_.get(index);
    }
    /**
     * <pre>
     * local data relevant to this algorithm (coefficients, etc)
     * </pre>
     *
     * <code>repeated .Messages.Vector64 data = 8;</code>
     */
    @java.lang.Override
    public Messages.Vector.Vector64OrBuilder getDataOrBuilder(
        int index) {
      return data_.get(index);
    }

    public static final int CPU_CAPABLE_FIELD_NUMBER = 10;
    private boolean cpuCapable_;
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>bool cpu_capable = 10;</code>
     * @return The cpuCapable.
     */
    @java.lang.Override
    public boolean getCpuCapable() {
      return cpuCapable_;
    }

    public static final int GPU_CAPABLE_FIELD_NUMBER = 11;
    private boolean gpuCapable_;
    /**
     * <code>bool gpu_capable = 11;</code>
     * @return The gpuCapable.
     */
    @java.lang.Override
    public boolean getGpuCapable() {
      return gpuCapable_;
    }

    public static final int INCLUDE_AS_PREPROCESSOR_FIELD_NUMBER = 12;
    private boolean includeAsPreprocessor_;
    /**
     * <code>bool include_as_preprocessor = 12;</code>
     * @return The includeAsPreprocessor.
     */
    @java.lang.Override
    public boolean getIncludeAsPreprocessor() {
      return includeAsPreprocessor_;
    }

    public static final int OMIT_FROM_MAIN_LOOP_FIELD_NUMBER = 13;
    private boolean omitFromMainLoop_;
    /**
     * <code>bool omit_from_main_loop = 13;</code>
     * @return The omitFromMainLoop.
     */
    @java.lang.Override
    public boolean getOmitFromMainLoop() {
      return omitFromMainLoop_;
    }

    public static final int INCLUDE_AS_POSTPROCESSOR_FIELD_NUMBER = 14;
    private boolean includeAsPostprocessor_;
    /**
     * <code>bool include_as_postprocessor = 14;</code>
     * @return The includeAsPostprocessor.
     */
    @java.lang.Override
    public boolean getIncludeAsPostprocessor() {
      return includeAsPostprocessor_;
    }

    public static final int MUTUALLY_EXCLUSIVE_FIELD_NUMBER = 15;
    private boolean mutuallyExclusive_;
    /**
     * <code>bool mutually_exclusive = 15;</code>
     * @return The mutuallyExclusive.
     */
    @java.lang.Override
    public boolean getMutuallyExclusive() {
      return mutuallyExclusive_;
    }

    public static final int ONLY_ONCE_FIELD_NUMBER = 16;
    private boolean onlyOnce_;
    /**
     * <code>bool only_once = 16;</code>
     * @return The onlyOnce.
     */
    @java.lang.Override
    public boolean getOnlyOnce() {
      return onlyOnce_;
    }

    public static final int PUSH_FRONT_FIELD_NUMBER = 17;
    private boolean pushFront_;
    /**
     * <code>bool push_front = 17;</code>
     * @return The pushFront.
     */
    @java.lang.Override
    public boolean getPushFront() {
      return pushFront_;
    }

    public static final int DONT_FLATTEN_FIELD_NUMBER = 18;
    private boolean dontFlatten_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>bool dont_flatten = 18;</code>
     * @return The dontFlatten.
     */
    @java.lang.Override
    public boolean getDontFlatten() {
      return dontFlatten_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < argumentTypes_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, argumentTypes_.getRaw(i));
      }
      for (int i = 0; i < argumentDescriptions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, argumentDescriptions_.getRaw(i));
      }
      for (int i = 0; i < inputs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, inputs_.getRaw(i));
      }
      for (int i = 0; i < outputs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, outputs_.getRaw(i));
      }
      for (int i = 0; i < constants_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, constants_.getRaw(i));
      }
      for (int i = 0; i < toBeDefined_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, toBeDefined_.getRaw(i));
      }
      for (int i = 0; i < data_.size(); i++) {
        output.writeMessage(8, data_.get(i));
      }
      if (cpuCapable_ != false) {
        output.writeBool(10, cpuCapable_);
      }
      if (gpuCapable_ != false) {
        output.writeBool(11, gpuCapable_);
      }
      if (includeAsPreprocessor_ != false) {
        output.writeBool(12, includeAsPreprocessor_);
      }
      if (omitFromMainLoop_ != false) {
        output.writeBool(13, omitFromMainLoop_);
      }
      if (includeAsPostprocessor_ != false) {
        output.writeBool(14, includeAsPostprocessor_);
      }
      if (mutuallyExclusive_ != false) {
        output.writeBool(15, mutuallyExclusive_);
      }
      if (onlyOnce_ != false) {
        output.writeBool(16, onlyOnce_);
      }
      if (pushFront_ != false) {
        output.writeBool(17, pushFront_);
      }
      if (dontFlatten_ != false) {
        output.writeBool(18, dontFlatten_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < argumentTypes_.size(); i++) {
          dataSize += computeStringSizeNoTag(argumentTypes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArgumentTypesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < argumentDescriptions_.size(); i++) {
          dataSize += computeStringSizeNoTag(argumentDescriptions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArgumentDescriptionsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < inputs_.size(); i++) {
          dataSize += computeStringSizeNoTag(inputs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getInputsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < outputs_.size(); i++) {
          dataSize += computeStringSizeNoTag(outputs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getOutputsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < constants_.size(); i++) {
          dataSize += computeStringSizeNoTag(constants_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getConstantsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < toBeDefined_.size(); i++) {
          dataSize += computeStringSizeNoTag(toBeDefined_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getToBeDefinedList().size();
      }
      for (int i = 0; i < data_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, data_.get(i));
      }
      if (cpuCapable_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, cpuCapable_);
      }
      if (gpuCapable_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, gpuCapable_);
      }
      if (includeAsPreprocessor_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(12, includeAsPreprocessor_);
      }
      if (omitFromMainLoop_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, omitFromMainLoop_);
      }
      if (includeAsPostprocessor_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(14, includeAsPostprocessor_);
      }
      if (mutuallyExclusive_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(15, mutuallyExclusive_);
      }
      if (onlyOnce_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(16, onlyOnce_);
      }
      if (pushFront_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, pushFront_);
      }
      if (dontFlatten_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, dontFlatten_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Concept.Function)) {
        return super.equals(obj);
      }
      Messages.Concept.Function other = (Messages.Concept.Function) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getArgumentTypesList()
          .equals(other.getArgumentTypesList())) return false;
      if (!getArgumentDescriptionsList()
          .equals(other.getArgumentDescriptionsList())) return false;
      if (!getInputsList()
          .equals(other.getInputsList())) return false;
      if (!getOutputsList()
          .equals(other.getOutputsList())) return false;
      if (!getConstantsList()
          .equals(other.getConstantsList())) return false;
      if (!getToBeDefinedList()
          .equals(other.getToBeDefinedList())) return false;
      if (!getDataList()
          .equals(other.getDataList())) return false;
      if (getCpuCapable()
          != other.getCpuCapable()) return false;
      if (getGpuCapable()
          != other.getGpuCapable()) return false;
      if (getIncludeAsPreprocessor()
          != other.getIncludeAsPreprocessor()) return false;
      if (getOmitFromMainLoop()
          != other.getOmitFromMainLoop()) return false;
      if (getIncludeAsPostprocessor()
          != other.getIncludeAsPostprocessor()) return false;
      if (getMutuallyExclusive()
          != other.getMutuallyExclusive()) return false;
      if (getOnlyOnce()
          != other.getOnlyOnce()) return false;
      if (getPushFront()
          != other.getPushFront()) return false;
      if (getDontFlatten()
          != other.getDontFlatten()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getArgumentTypesCount() > 0) {
        hash = (37 * hash) + ARGUMENT_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getArgumentTypesList().hashCode();
      }
      if (getArgumentDescriptionsCount() > 0) {
        hash = (37 * hash) + ARGUMENT_DESCRIPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getArgumentDescriptionsList().hashCode();
      }
      if (getInputsCount() > 0) {
        hash = (37 * hash) + INPUTS_FIELD_NUMBER;
        hash = (53 * hash) + getInputsList().hashCode();
      }
      if (getOutputsCount() > 0) {
        hash = (37 * hash) + OUTPUTS_FIELD_NUMBER;
        hash = (53 * hash) + getOutputsList().hashCode();
      }
      if (getConstantsCount() > 0) {
        hash = (37 * hash) + CONSTANTS_FIELD_NUMBER;
        hash = (53 * hash) + getConstantsList().hashCode();
      }
      if (getToBeDefinedCount() > 0) {
        hash = (37 * hash) + TO_BE_DEFINED_FIELD_NUMBER;
        hash = (53 * hash) + getToBeDefinedList().hashCode();
      }
      if (getDataCount() > 0) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getDataList().hashCode();
      }
      hash = (37 * hash) + CPU_CAPABLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getCpuCapable());
      hash = (37 * hash) + GPU_CAPABLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getGpuCapable());
      hash = (37 * hash) + INCLUDE_AS_PREPROCESSOR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIncludeAsPreprocessor());
      hash = (37 * hash) + OMIT_FROM_MAIN_LOOP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getOmitFromMainLoop());
      hash = (37 * hash) + INCLUDE_AS_POSTPROCESSOR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIncludeAsPostprocessor());
      hash = (37 * hash) + MUTUALLY_EXCLUSIVE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getMutuallyExclusive());
      hash = (37 * hash) + ONLY_ONCE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getOnlyOnce());
      hash = (37 * hash) + PUSH_FRONT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getPushFront());
      hash = (37 * hash) + DONT_FLATTEN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getDontFlatten());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Messages.Concept.Function parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Function parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Function parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Function parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Function parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Function parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Function parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Function parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Function parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Messages.Concept.Function parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Function parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Function parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Concept.Function prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Function}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Function)
        Messages.Concept.FunctionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Concept.internal_static_Messages_Function_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Concept.internal_static_Messages_Function_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Concept.Function.class, Messages.Concept.Function.Builder.class);
      }

      // Construct using Messages.Concept.Function.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        argumentTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        argumentDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        inputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        outputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        constants_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        toBeDefined_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (dataBuilder_ == null) {
          data_ = java.util.Collections.emptyList();
        } else {
          data_ = null;
          dataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        cpuCapable_ = false;

        gpuCapable_ = false;

        includeAsPreprocessor_ = false;

        omitFromMainLoop_ = false;

        includeAsPostprocessor_ = false;

        mutuallyExclusive_ = false;

        onlyOnce_ = false;

        pushFront_ = false;

        dontFlatten_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Concept.internal_static_Messages_Function_descriptor;
      }

      @java.lang.Override
      public Messages.Concept.Function getDefaultInstanceForType() {
        return Messages.Concept.Function.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Concept.Function build() {
        Messages.Concept.Function result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Concept.Function buildPartial() {
        Messages.Concept.Function result = new Messages.Concept.Function(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (((bitField0_ & 0x00000001) != 0)) {
          argumentTypes_ = argumentTypes_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.argumentTypes_ = argumentTypes_;
        if (((bitField0_ & 0x00000002) != 0)) {
          argumentDescriptions_ = argumentDescriptions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.argumentDescriptions_ = argumentDescriptions_;
        if (((bitField0_ & 0x00000004) != 0)) {
          inputs_ = inputs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.inputs_ = inputs_;
        if (((bitField0_ & 0x00000008) != 0)) {
          outputs_ = outputs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.outputs_ = outputs_;
        if (((bitField0_ & 0x00000010) != 0)) {
          constants_ = constants_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.constants_ = constants_;
        if (((bitField0_ & 0x00000020) != 0)) {
          toBeDefined_ = toBeDefined_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.toBeDefined_ = toBeDefined_;
        if (dataBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            data_ = java.util.Collections.unmodifiableList(data_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        result.cpuCapable_ = cpuCapable_;
        result.gpuCapable_ = gpuCapable_;
        result.includeAsPreprocessor_ = includeAsPreprocessor_;
        result.omitFromMainLoop_ = omitFromMainLoop_;
        result.includeAsPostprocessor_ = includeAsPostprocessor_;
        result.mutuallyExclusive_ = mutuallyExclusive_;
        result.onlyOnce_ = onlyOnce_;
        result.pushFront_ = pushFront_;
        result.dontFlatten_ = dontFlatten_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Messages.Concept.Function) {
          return mergeFrom((Messages.Concept.Function)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Messages.Concept.Function other) {
        if (other == Messages.Concept.Function.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.argumentTypes_.isEmpty()) {
          if (argumentTypes_.isEmpty()) {
            argumentTypes_ = other.argumentTypes_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureArgumentTypesIsMutable();
            argumentTypes_.addAll(other.argumentTypes_);
          }
          onChanged();
        }
        if (!other.argumentDescriptions_.isEmpty()) {
          if (argumentDescriptions_.isEmpty()) {
            argumentDescriptions_ = other.argumentDescriptions_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureArgumentDescriptionsIsMutable();
            argumentDescriptions_.addAll(other.argumentDescriptions_);
          }
          onChanged();
        }
        if (!other.inputs_.isEmpty()) {
          if (inputs_.isEmpty()) {
            inputs_ = other.inputs_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureInputsIsMutable();
            inputs_.addAll(other.inputs_);
          }
          onChanged();
        }
        if (!other.outputs_.isEmpty()) {
          if (outputs_.isEmpty()) {
            outputs_ = other.outputs_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureOutputsIsMutable();
            outputs_.addAll(other.outputs_);
          }
          onChanged();
        }
        if (!other.constants_.isEmpty()) {
          if (constants_.isEmpty()) {
            constants_ = other.constants_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureConstantsIsMutable();
            constants_.addAll(other.constants_);
          }
          onChanged();
        }
        if (!other.toBeDefined_.isEmpty()) {
          if (toBeDefined_.isEmpty()) {
            toBeDefined_ = other.toBeDefined_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureToBeDefinedIsMutable();
            toBeDefined_.addAll(other.toBeDefined_);
          }
          onChanged();
        }
        if (dataBuilder_ == null) {
          if (!other.data_.isEmpty()) {
            if (data_.isEmpty()) {
              data_ = other.data_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureDataIsMutable();
              data_.addAll(other.data_);
            }
            onChanged();
          }
        } else {
          if (!other.data_.isEmpty()) {
            if (dataBuilder_.isEmpty()) {
              dataBuilder_.dispose();
              dataBuilder_ = null;
              data_ = other.data_;
              bitField0_ = (bitField0_ & ~0x00000040);
              dataBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDataFieldBuilder() : null;
            } else {
              dataBuilder_.addAllMessages(other.data_);
            }
          }
        }
        if (other.getCpuCapable() != false) {
          setCpuCapable(other.getCpuCapable());
        }
        if (other.getGpuCapable() != false) {
          setGpuCapable(other.getGpuCapable());
        }
        if (other.getIncludeAsPreprocessor() != false) {
          setIncludeAsPreprocessor(other.getIncludeAsPreprocessor());
        }
        if (other.getOmitFromMainLoop() != false) {
          setOmitFromMainLoop(other.getOmitFromMainLoop());
        }
        if (other.getIncludeAsPostprocessor() != false) {
          setIncludeAsPostprocessor(other.getIncludeAsPostprocessor());
        }
        if (other.getMutuallyExclusive() != false) {
          setMutuallyExclusive(other.getMutuallyExclusive());
        }
        if (other.getOnlyOnce() != false) {
          setOnlyOnce(other.getOnlyOnce());
        }
        if (other.getPushFront() != false) {
          setPushFront(other.getPushFront());
        }
        if (other.getDontFlatten() != false) {
          setDontFlatten(other.getDontFlatten());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureArgumentTypesIsMutable();
                argumentTypes_.add(s);
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureArgumentDescriptionsIsMutable();
                argumentDescriptions_.add(s);
                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureInputsIsMutable();
                inputs_.add(s);
                break;
              } // case 34
              case 42: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureOutputsIsMutable();
                outputs_.add(s);
                break;
              } // case 42
              case 50: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureConstantsIsMutable();
                constants_.add(s);
                break;
              } // case 50
              case 58: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureToBeDefinedIsMutable();
                toBeDefined_.add(s);
                break;
              } // case 58
              case 66: {
                Messages.Vector.Vector64 m =
                    input.readMessage(
                        Messages.Vector.Vector64.parser(),
                        extensionRegistry);
                if (dataBuilder_ == null) {
                  ensureDataIsMutable();
                  data_.add(m);
                } else {
                  dataBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 80: {
                cpuCapable_ = input.readBool();

                break;
              } // case 80
              case 88: {
                gpuCapable_ = input.readBool();

                break;
              } // case 88
              case 96: {
                includeAsPreprocessor_ = input.readBool();

                break;
              } // case 96
              case 104: {
                omitFromMainLoop_ = input.readBool();

                break;
              } // case 104
              case 112: {
                includeAsPostprocessor_ = input.readBool();

                break;
              } // case 112
              case 120: {
                mutuallyExclusive_ = input.readBool();

                break;
              } // case 120
              case 128: {
                onlyOnce_ = input.readBool();

                break;
              } // case 128
              case 136: {
                pushFront_ = input.readBool();

                break;
              } // case 136
              case 144: {
                dontFlatten_ = input.readBool();

                break;
              } // case 144
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList argumentTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureArgumentTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          argumentTypes_ = new com.google.protobuf.LazyStringArrayList(argumentTypes_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @return A list containing the argumentTypes.
       */
      public com.google.protobuf.ProtocolStringList
          getArgumentTypesList() {
        return argumentTypes_.getUnmodifiableView();
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @return The count of argumentTypes.
       */
      public int getArgumentTypesCount() {
        return argumentTypes_.size();
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @param index The index of the element to return.
       * @return The argumentTypes at the given index.
       */
      public java.lang.String getArgumentTypes(int index) {
        return argumentTypes_.get(index);
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the argumentTypes at the given index.
       */
      public com.google.protobuf.ByteString
          getArgumentTypesBytes(int index) {
        return argumentTypes_.getByteString(index);
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @param index The index to set the value at.
       * @param value The argumentTypes to set.
       * @return This builder for chaining.
       */
      public Builder setArgumentTypes(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgumentTypesIsMutable();
        argumentTypes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @param value The argumentTypes to add.
       * @return This builder for chaining.
       */
      public Builder addArgumentTypes(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgumentTypesIsMutable();
        argumentTypes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @param values The argumentTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllArgumentTypes(
          java.lang.Iterable<java.lang.String> values) {
        ensureArgumentTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, argumentTypes_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearArgumentTypes() {
        argumentTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * argument object binding requirements:
       * </pre>
       *
       * <code>repeated string argument_types = 2;</code>
       * @param value The bytes of the argumentTypes to add.
       * @return This builder for chaining.
       */
      public Builder addArgumentTypesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureArgumentTypesIsMutable();
        argumentTypes_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList argumentDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureArgumentDescriptionsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          argumentDescriptions_ = new com.google.protobuf.LazyStringArrayList(argumentDescriptions_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @return A list containing the argumentDescriptions.
       */
      public com.google.protobuf.ProtocolStringList
          getArgumentDescriptionsList() {
        return argumentDescriptions_.getUnmodifiableView();
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @return The count of argumentDescriptions.
       */
      public int getArgumentDescriptionsCount() {
        return argumentDescriptions_.size();
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @param index The index of the element to return.
       * @return The argumentDescriptions at the given index.
       */
      public java.lang.String getArgumentDescriptions(int index) {
        return argumentDescriptions_.get(index);
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the argumentDescriptions at the given index.
       */
      public com.google.protobuf.ByteString
          getArgumentDescriptionsBytes(int index) {
        return argumentDescriptions_.getByteString(index);
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @param index The index to set the value at.
       * @param value The argumentDescriptions to set.
       * @return This builder for chaining.
       */
      public Builder setArgumentDescriptions(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgumentDescriptionsIsMutable();
        argumentDescriptions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @param value The argumentDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addArgumentDescriptions(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgumentDescriptionsIsMutable();
        argumentDescriptions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @param values The argumentDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addAllArgumentDescriptions(
          java.lang.Iterable<java.lang.String> values) {
        ensureArgumentDescriptionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, argumentDescriptions_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearArgumentDescriptions() {
        argumentDescriptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * matching argument descriptions (used by UI)
       * </pre>
       *
       * <code>repeated string argument_descriptions = 3;</code>
       * @param value The bytes of the argumentDescriptions to add.
       * @return This builder for chaining.
       */
      public Builder addArgumentDescriptionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureArgumentDescriptionsIsMutable();
        argumentDescriptions_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList inputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureInputsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          inputs_ = new com.google.protobuf.LazyStringArrayList(inputs_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @return A list containing the inputs.
       */
      public com.google.protobuf.ProtocolStringList
          getInputsList() {
        return inputs_.getUnmodifiableView();
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @return The count of inputs.
       */
      public int getInputsCount() {
        return inputs_.size();
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @param index The index of the element to return.
       * @return The inputs at the given index.
       */
      public java.lang.String getInputs(int index) {
        return inputs_.get(index);
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the inputs at the given index.
       */
      public com.google.protobuf.ByteString
          getInputsBytes(int index) {
        return inputs_.getByteString(index);
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @param index The index to set the value at.
       * @param value The inputs to set.
       * @return This builder for chaining.
       */
      public Builder setInputs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureInputsIsMutable();
        inputs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @param value The inputs to add.
       * @return This builder for chaining.
       */
      public Builder addInputs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureInputsIsMutable();
        inputs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @param values The inputs to add.
       * @return This builder for chaining.
       */
      public Builder addAllInputs(
          java.lang.Iterable<java.lang.String> values) {
        ensureInputsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, inputs_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearInputs() {
        inputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's required for algorithm inputs (user inputs)
       * </pre>
       *
       * <code>repeated string inputs = 4;</code>
       * @param value The bytes of the inputs to add.
       * @return This builder for chaining.
       */
      public Builder addInputsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureInputsIsMutable();
        inputs_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList outputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureOutputsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          outputs_ = new com.google.protobuf.LazyStringArrayList(outputs_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @return A list containing the outputs.
       */
      public com.google.protobuf.ProtocolStringList
          getOutputsList() {
        return outputs_.getUnmodifiableView();
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @return The count of outputs.
       */
      public int getOutputsCount() {
        return outputs_.size();
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @param index The index of the element to return.
       * @return The outputs at the given index.
       */
      public java.lang.String getOutputs(int index) {
        return outputs_.get(index);
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @param index The index of the value to return.
       * @return The bytes of the outputs at the given index.
       */
      public com.google.protobuf.ByteString
          getOutputsBytes(int index) {
        return outputs_.getByteString(index);
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @param index The index to set the value at.
       * @param value The outputs to set.
       * @return This builder for chaining.
       */
      public Builder setOutputs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureOutputsIsMutable();
        outputs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @param value The outputs to add.
       * @return This builder for chaining.
       */
      public Builder addOutputs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureOutputsIsMutable();
        outputs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @param values The outputs to add.
       * @return This builder for chaining.
       */
      public Builder addAllOutputs(
          java.lang.Iterable<java.lang.String> values) {
        ensureOutputsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, outputs_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearOutputs() {
        outputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's required for algorithm outputs
       * </pre>
       *
       * <code>repeated string outputs = 5;</code>
       * @param value The bytes of the outputs to add.
       * @return This builder for chaining.
       */
      public Builder addOutputsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureOutputsIsMutable();
        outputs_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList constants_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureConstantsIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          constants_ = new com.google.protobuf.LazyStringArrayList(constants_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @return A list containing the constants.
       */
      public com.google.protobuf.ProtocolStringList
          getConstantsList() {
        return constants_.getUnmodifiableView();
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @return The count of constants.
       */
      public int getConstantsCount() {
        return constants_.size();
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @param index The index of the element to return.
       * @return The constants at the given index.
       */
      public java.lang.String getConstants(int index) {
        return constants_.get(index);
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the constants at the given index.
       */
      public com.google.protobuf.ByteString
          getConstantsBytes(int index) {
        return constants_.getByteString(index);
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @param index The index to set the value at.
       * @param value The constants to set.
       * @return This builder for chaining.
       */
      public Builder setConstants(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureConstantsIsMutable();
        constants_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @param value The constants to add.
       * @return This builder for chaining.
       */
      public Builder addConstants(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureConstantsIsMutable();
        constants_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @param values The constants to add.
       * @return This builder for chaining.
       */
      public Builder addAllConstants(
          java.lang.Iterable<java.lang.String> values) {
        ensureConstantsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, constants_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearConstants() {
        constants_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's for uniform values across all nodes
       * </pre>
       *
       * <code>repeated string constants = 6;</code>
       * @param value The bytes of the constants to add.
       * @return This builder for chaining.
       */
      public Builder addConstantsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureConstantsIsMutable();
        constants_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList toBeDefined_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureToBeDefinedIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          toBeDefined_ = new com.google.protobuf.LazyStringArrayList(toBeDefined_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @return A list containing the toBeDefined.
       */
      public com.google.protobuf.ProtocolStringList
          getToBeDefinedList() {
        return toBeDefined_.getUnmodifiableView();
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @return The count of toBeDefined.
       */
      public int getToBeDefinedCount() {
        return toBeDefined_.size();
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @param index The index of the element to return.
       * @return The toBeDefined at the given index.
       */
      public java.lang.String getToBeDefined(int index) {
        return toBeDefined_.get(index);
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the toBeDefined at the given index.
       */
      public com.google.protobuf.ByteString
          getToBeDefinedBytes(int index) {
        return toBeDefined_.getByteString(index);
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @param index The index to set the value at.
       * @param value The toBeDefined to set.
       * @return This builder for chaining.
       */
      public Builder setToBeDefined(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureToBeDefinedIsMutable();
        toBeDefined_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @param value The toBeDefined to add.
       * @return This builder for chaining.
       */
      public Builder addToBeDefined(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureToBeDefinedIsMutable();
        toBeDefined_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @param values The toBeDefined to add.
       * @return This builder for chaining.
       */
      public Builder addAllToBeDefined(
          java.lang.Iterable<java.lang.String> values) {
        ensureToBeDefinedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, toBeDefined_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearToBeDefined() {
        toBeDefined_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * PK's for to be set by user in UI (end-user inputs)
       * </pre>
       *
       * <code>repeated string to_be_defined = 7;</code>
       * @param value The bytes of the toBeDefined to add.
       * @return This builder for chaining.
       */
      public Builder addToBeDefinedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureToBeDefinedIsMutable();
        toBeDefined_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<Messages.Vector.Vector64> data_ =
        java.util.Collections.emptyList();
      private void ensureDataIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          data_ = new java.util.ArrayList<Messages.Vector.Vector64>(data_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Vector64, Messages.Vector.Vector64.Builder, Messages.Vector.Vector64OrBuilder> dataBuilder_;

      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public java.util.List<Messages.Vector.Vector64> getDataList() {
        if (dataBuilder_ == null) {
          return java.util.Collections.unmodifiableList(data_);
        } else {
          return dataBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public int getDataCount() {
        if (dataBuilder_ == null) {
          return data_.size();
        } else {
          return dataBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Messages.Vector.Vector64 getData(int index) {
        if (dataBuilder_ == null) {
          return data_.get(index);
        } else {
          return dataBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder setData(
          int index, Messages.Vector.Vector64 value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.set(index, value);
          onChanged();
        } else {
          dataBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder setData(
          int index, Messages.Vector.Vector64.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.set(index, builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder addData(Messages.Vector.Vector64 value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.add(value);
          onChanged();
        } else {
          dataBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder addData(
          int index, Messages.Vector.Vector64 value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.add(index, value);
          onChanged();
        } else {
          dataBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder addData(
          Messages.Vector.Vector64.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.add(builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder addData(
          int index, Messages.Vector.Vector64.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.add(index, builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder addAllData(
          java.lang.Iterable<? extends Messages.Vector.Vector64> values) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, data_);
          onChanged();
        } else {
          dataBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Builder removeData(int index) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.remove(index);
          onChanged();
        } else {
          dataBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Messages.Vector.Vector64.Builder getDataBuilder(
          int index) {
        return getDataFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Messages.Vector.Vector64OrBuilder getDataOrBuilder(
          int index) {
        if (dataBuilder_ == null) {
          return data_.get(index);  } else {
          return dataBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public java.util.List<? extends Messages.Vector.Vector64OrBuilder> 
           getDataOrBuilderList() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(data_);
        }
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Messages.Vector.Vector64.Builder addDataBuilder() {
        return getDataFieldBuilder().addBuilder(
            Messages.Vector.Vector64.getDefaultInstance());
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public Messages.Vector.Vector64.Builder addDataBuilder(
          int index) {
        return getDataFieldBuilder().addBuilder(
            index, Messages.Vector.Vector64.getDefaultInstance());
      }
      /**
       * <pre>
       * local data relevant to this algorithm (coefficients, etc)
       * </pre>
       *
       * <code>repeated .Messages.Vector64 data = 8;</code>
       */
      public java.util.List<Messages.Vector.Vector64.Builder> 
           getDataBuilderList() {
        return getDataFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Vector64, Messages.Vector.Vector64.Builder, Messages.Vector.Vector64OrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Vector.Vector64, Messages.Vector.Vector64.Builder, Messages.Vector.Vector64OrBuilder>(
                  data_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private boolean cpuCapable_ ;
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>bool cpu_capable = 10;</code>
       * @return The cpuCapable.
       */
      @java.lang.Override
      public boolean getCpuCapable() {
        return cpuCapable_;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>bool cpu_capable = 10;</code>
       * @param value The cpuCapable to set.
       * @return This builder for chaining.
       */
      public Builder setCpuCapable(boolean value) {
        
        cpuCapable_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>bool cpu_capable = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearCpuCapable() {
        
        cpuCapable_ = false;
        onChanged();
        return this;
      }

      private boolean gpuCapable_ ;
      /**
       * <code>bool gpu_capable = 11;</code>
       * @return The gpuCapable.
       */
      @java.lang.Override
      public boolean getGpuCapable() {
        return gpuCapable_;
      }
      /**
       * <code>bool gpu_capable = 11;</code>
       * @param value The gpuCapable to set.
       * @return This builder for chaining.
       */
      public Builder setGpuCapable(boolean value) {
        
        gpuCapable_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool gpu_capable = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearGpuCapable() {
        
        gpuCapable_ = false;
        onChanged();
        return this;
      }

      private boolean includeAsPreprocessor_ ;
      /**
       * <code>bool include_as_preprocessor = 12;</code>
       * @return The includeAsPreprocessor.
       */
      @java.lang.Override
      public boolean getIncludeAsPreprocessor() {
        return includeAsPreprocessor_;
      }
      /**
       * <code>bool include_as_preprocessor = 12;</code>
       * @param value The includeAsPreprocessor to set.
       * @return This builder for chaining.
       */
      public Builder setIncludeAsPreprocessor(boolean value) {
        
        includeAsPreprocessor_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool include_as_preprocessor = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearIncludeAsPreprocessor() {
        
        includeAsPreprocessor_ = false;
        onChanged();
        return this;
      }

      private boolean omitFromMainLoop_ ;
      /**
       * <code>bool omit_from_main_loop = 13;</code>
       * @return The omitFromMainLoop.
       */
      @java.lang.Override
      public boolean getOmitFromMainLoop() {
        return omitFromMainLoop_;
      }
      /**
       * <code>bool omit_from_main_loop = 13;</code>
       * @param value The omitFromMainLoop to set.
       * @return This builder for chaining.
       */
      public Builder setOmitFromMainLoop(boolean value) {
        
        omitFromMainLoop_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool omit_from_main_loop = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearOmitFromMainLoop() {
        
        omitFromMainLoop_ = false;
        onChanged();
        return this;
      }

      private boolean includeAsPostprocessor_ ;
      /**
       * <code>bool include_as_postprocessor = 14;</code>
       * @return The includeAsPostprocessor.
       */
      @java.lang.Override
      public boolean getIncludeAsPostprocessor() {
        return includeAsPostprocessor_;
      }
      /**
       * <code>bool include_as_postprocessor = 14;</code>
       * @param value The includeAsPostprocessor to set.
       * @return This builder for chaining.
       */
      public Builder setIncludeAsPostprocessor(boolean value) {
        
        includeAsPostprocessor_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool include_as_postprocessor = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearIncludeAsPostprocessor() {
        
        includeAsPostprocessor_ = false;
        onChanged();
        return this;
      }

      private boolean mutuallyExclusive_ ;
      /**
       * <code>bool mutually_exclusive = 15;</code>
       * @return The mutuallyExclusive.
       */
      @java.lang.Override
      public boolean getMutuallyExclusive() {
        return mutuallyExclusive_;
      }
      /**
       * <code>bool mutually_exclusive = 15;</code>
       * @param value The mutuallyExclusive to set.
       * @return This builder for chaining.
       */
      public Builder setMutuallyExclusive(boolean value) {
        
        mutuallyExclusive_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool mutually_exclusive = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearMutuallyExclusive() {
        
        mutuallyExclusive_ = false;
        onChanged();
        return this;
      }

      private boolean onlyOnce_ ;
      /**
       * <code>bool only_once = 16;</code>
       * @return The onlyOnce.
       */
      @java.lang.Override
      public boolean getOnlyOnce() {
        return onlyOnce_;
      }
      /**
       * <code>bool only_once = 16;</code>
       * @param value The onlyOnce to set.
       * @return This builder for chaining.
       */
      public Builder setOnlyOnce(boolean value) {
        
        onlyOnce_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool only_once = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearOnlyOnce() {
        
        onlyOnce_ = false;
        onChanged();
        return this;
      }

      private boolean pushFront_ ;
      /**
       * <code>bool push_front = 17;</code>
       * @return The pushFront.
       */
      @java.lang.Override
      public boolean getPushFront() {
        return pushFront_;
      }
      /**
       * <code>bool push_front = 17;</code>
       * @param value The pushFront to set.
       * @return This builder for chaining.
       */
      public Builder setPushFront(boolean value) {
        
        pushFront_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool push_front = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearPushFront() {
        
        pushFront_ = false;
        onChanged();
        return this;
      }

      private boolean dontFlatten_ ;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>bool dont_flatten = 18;</code>
       * @return The dontFlatten.
       */
      @java.lang.Override
      public boolean getDontFlatten() {
        return dontFlatten_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>bool dont_flatten = 18;</code>
       * @param value The dontFlatten to set.
       * @return This builder for chaining.
       */
      public Builder setDontFlatten(boolean value) {
        
        dontFlatten_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>bool dont_flatten = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearDontFlatten() {
        
        dontFlatten_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Function)
    }

    // @@protoc_insertion_point(class_scope:Messages.Function)
    private static final Messages.Concept.Function DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Concept.Function();
    }

    public static Messages.Concept.Function getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Function>
        PARSER = new com.google.protobuf.AbstractParser<Function>() {
      @java.lang.Override
      public Function parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public Messages.Concept.Function getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Command)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Messages.Function function = 1;</code>
     * @return Whether the function field is set.
     */
    boolean hasFunction();
    /**
     * <code>.Messages.Function function = 1;</code>
     * @return The function.
     */
    Messages.Concept.Function getFunction();
    /**
     * <code>.Messages.Function function = 1;</code>
     */
    Messages.Concept.FunctionOrBuilder getFunctionOrBuilder();

    /**
     * <code>bool args_are_set = 2;</code>
     * @return The argsAreSet.
     */
    boolean getArgsAreSet();

    /**
     * <code>bool is_ready = 3;</code>
     * @return The isReady.
     */
    boolean getIsReady();

    /**
     * <code>uint64 exec_count = 4;</code>
     * @return The execCount.
     */
    long getExecCount();

    /**
     * <code>uint64 simd_size = 5;</code>
     * @return The simdSize.
     */
    long getSimdSize();

    /**
     * <code>uint64 version = 6;</code>
     * @return The version.
     */
    long getVersion();

    /**
     * <pre>
     * unique runtime identifier (assigned and only valid within a server session)
     * </pre>
     *
     * <code>int64 id = 7;</code>
     * @return The id.
     */
    long getId();

    /**
     * <code>uint64 n_kernel = 8;</code>
     * @return The nKernel.
     */
    long getNKernel();

    /**
     * <code>float progress = 9;</code>
     * @return The progress.
     */
    float getProgress();

    /**
     * <code>string msg = 10;</code>
     * @return The msg.
     */
    java.lang.String getMsg();
    /**
     * <code>string msg = 10;</code>
     * @return The bytes for msg.
     */
    com.google.protobuf.ByteString
        getMsgBytes();

    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>.Messages.Record64 data = 12;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>.Messages.Record64 data = 12;</code>
     * @return The data.
     */
    Messages.Vector.Record64 getData();
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>.Messages.Record64 data = 12;</code>
     */
    Messages.Vector.Record64OrBuilder getDataOrBuilder();

    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    java.util.List<Messages.Concept.Command> 
        getBeforeList();
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    Messages.Concept.Command getBefore(int index);
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    int getBeforeCount();
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    java.util.List<? extends Messages.Concept.CommandOrBuilder> 
        getBeforeOrBuilderList();
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    Messages.Concept.CommandOrBuilder getBeforeOrBuilder(
        int index);

    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    java.util.List<Messages.Concept.Command> 
        getAfterList();
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    Messages.Concept.Command getAfter(int index);
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    int getAfterCount();
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    java.util.List<? extends Messages.Concept.CommandOrBuilder> 
        getAfterOrBuilderList();
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    Messages.Concept.CommandOrBuilder getAfterOrBuilder(
        int index);

    /**
     * <pre>
     * if assigned, used to identify specific zones for conditions, etc
     * </pre>
     *
     * <code>uint32 region_type = 15;</code>
     * @return The regionType.
     */
    int getRegionType();

    /**
     * <pre>
     * if assigned, used to identify specific zones for conditions, etc
     * </pre>
     *
     * <code>int32 region_id = 16;</code>
     * @return The regionId.
     */
    int getRegionId();
  }
  /**
   * Protobuf type {@code Messages.Command}
   */
  public static final class Command extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Command)
      CommandOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Command.newBuilder() to construct.
    private Command(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Command() {
      msg_ = "";
      before_ = java.util.Collections.emptyList();
      after_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Command();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Concept.internal_static_Messages_Command_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Concept.internal_static_Messages_Command_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Concept.Command.class, Messages.Concept.Command.Builder.class);
    }

    public static final int FUNCTION_FIELD_NUMBER = 1;
    private Messages.Concept.Function function_;
    /**
     * <code>.Messages.Function function = 1;</code>
     * @return Whether the function field is set.
     */
    @java.lang.Override
    public boolean hasFunction() {
      return function_ != null;
    }
    /**
     * <code>.Messages.Function function = 1;</code>
     * @return The function.
     */
    @java.lang.Override
    public Messages.Concept.Function getFunction() {
      return function_ == null ? Messages.Concept.Function.getDefaultInstance() : function_;
    }
    /**
     * <code>.Messages.Function function = 1;</code>
     */
    @java.lang.Override
    public Messages.Concept.FunctionOrBuilder getFunctionOrBuilder() {
      return getFunction();
    }

    public static final int ARGS_ARE_SET_FIELD_NUMBER = 2;
    private boolean argsAreSet_;
    /**
     * <code>bool args_are_set = 2;</code>
     * @return The argsAreSet.
     */
    @java.lang.Override
    public boolean getArgsAreSet() {
      return argsAreSet_;
    }

    public static final int IS_READY_FIELD_NUMBER = 3;
    private boolean isReady_;
    /**
     * <code>bool is_ready = 3;</code>
     * @return The isReady.
     */
    @java.lang.Override
    public boolean getIsReady() {
      return isReady_;
    }

    public static final int EXEC_COUNT_FIELD_NUMBER = 4;
    private long execCount_;
    /**
     * <code>uint64 exec_count = 4;</code>
     * @return The execCount.
     */
    @java.lang.Override
    public long getExecCount() {
      return execCount_;
    }

    public static final int SIMD_SIZE_FIELD_NUMBER = 5;
    private long simdSize_;
    /**
     * <code>uint64 simd_size = 5;</code>
     * @return The simdSize.
     */
    @java.lang.Override
    public long getSimdSize() {
      return simdSize_;
    }

    public static final int VERSION_FIELD_NUMBER = 6;
    private long version_;
    /**
     * <code>uint64 version = 6;</code>
     * @return The version.
     */
    @java.lang.Override
    public long getVersion() {
      return version_;
    }

    public static final int ID_FIELD_NUMBER = 7;
    private long id_;
    /**
     * <pre>
     * unique runtime identifier (assigned and only valid within a server session)
     * </pre>
     *
     * <code>int64 id = 7;</code>
     * @return The id.
     */
    @java.lang.Override
    public long getId() {
      return id_;
    }

    public static final int N_KERNEL_FIELD_NUMBER = 8;
    private long nKernel_;
    /**
     * <code>uint64 n_kernel = 8;</code>
     * @return The nKernel.
     */
    @java.lang.Override
    public long getNKernel() {
      return nKernel_;
    }

    public static final int PROGRESS_FIELD_NUMBER = 9;
    private float progress_;
    /**
     * <code>float progress = 9;</code>
     * @return The progress.
     */
    @java.lang.Override
    public float getProgress() {
      return progress_;
    }

    public static final int MSG_FIELD_NUMBER = 10;
    private volatile java.lang.Object msg_;
    /**
     * <code>string msg = 10;</code>
     * @return The msg.
     */
    @java.lang.Override
    public java.lang.String getMsg() {
      java.lang.Object ref = msg_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msg_ = s;
        return s;
      }
    }
    /**
     * <code>string msg = 10;</code>
     * @return The bytes for msg.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMsgBytes() {
      java.lang.Object ref = msg_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msg_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_FIELD_NUMBER = 12;
    private Messages.Vector.Record64 data_;
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>.Messages.Record64 data = 12;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>.Messages.Record64 data = 12;</code>
     * @return The data.
     */
    @java.lang.Override
    public Messages.Vector.Record64 getData() {
      return data_ == null ? Messages.Vector.Record64.getDefaultInstance() : data_;
    }
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>.Messages.Record64 data = 12;</code>
     */
    @java.lang.Override
    public Messages.Vector.Record64OrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int BEFORE_FIELD_NUMBER = 13;
    private java.util.List<Messages.Concept.Command> before_;
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Concept.Command> getBeforeList() {
      return before_;
    }
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Concept.CommandOrBuilder> 
        getBeforeOrBuilderList() {
      return before_;
    }
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    @java.lang.Override
    public int getBeforeCount() {
      return before_.size();
    }
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    @java.lang.Override
    public Messages.Concept.Command getBefore(int index) {
      return before_.get(index);
    }
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command before = 13;</code>
     */
    @java.lang.Override
    public Messages.Concept.CommandOrBuilder getBeforeOrBuilder(
        int index) {
      return before_.get(index);
    }

    public static final int AFTER_FIELD_NUMBER = 14;
    private java.util.List<Messages.Concept.Command> after_;
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Concept.Command> getAfterList() {
      return after_;
    }
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Concept.CommandOrBuilder> 
        getAfterOrBuilderList() {
      return after_;
    }
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    @java.lang.Override
    public int getAfterCount() {
      return after_.size();
    }
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    @java.lang.Override
    public Messages.Concept.Command getAfter(int index) {
      return after_.get(index);
    }
    /**
     * <pre>
     * optional, to be called from within bound function
     * </pre>
     *
     * <code>repeated .Messages.Command after = 14;</code>
     */
    @java.lang.Override
    public Messages.Concept.CommandOrBuilder getAfterOrBuilder(
        int index) {
      return after_.get(index);
    }

    public static final int REGION_TYPE_FIELD_NUMBER = 15;
    private int regionType_;
    /**
     * <pre>
     * if assigned, used to identify specific zones for conditions, etc
     * </pre>
     *
     * <code>uint32 region_type = 15;</code>
     * @return The regionType.
     */
    @java.lang.Override
    public int getRegionType() {
      return regionType_;
    }

    public static final int REGION_ID_FIELD_NUMBER = 16;
    private int regionId_;
    /**
     * <pre>
     * if assigned, used to identify specific zones for conditions, etc
     * </pre>
     *
     * <code>int32 region_id = 16;</code>
     * @return The regionId.
     */
    @java.lang.Override
    public int getRegionId() {
      return regionId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (function_ != null) {
        output.writeMessage(1, getFunction());
      }
      if (argsAreSet_ != false) {
        output.writeBool(2, argsAreSet_);
      }
      if (isReady_ != false) {
        output.writeBool(3, isReady_);
      }
      if (execCount_ != 0L) {
        output.writeUInt64(4, execCount_);
      }
      if (simdSize_ != 0L) {
        output.writeUInt64(5, simdSize_);
      }
      if (version_ != 0L) {
        output.writeUInt64(6, version_);
      }
      if (id_ != 0L) {
        output.writeInt64(7, id_);
      }
      if (nKernel_ != 0L) {
        output.writeUInt64(8, nKernel_);
      }
      if (java.lang.Float.floatToRawIntBits(progress_) != 0) {
        output.writeFloat(9, progress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msg_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, msg_);
      }
      if (data_ != null) {
        output.writeMessage(12, getData());
      }
      for (int i = 0; i < before_.size(); i++) {
        output.writeMessage(13, before_.get(i));
      }
      for (int i = 0; i < after_.size(); i++) {
        output.writeMessage(14, after_.get(i));
      }
      if (regionType_ != 0) {
        output.writeUInt32(15, regionType_);
      }
      if (regionId_ != 0) {
        output.writeInt32(16, regionId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (function_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFunction());
      }
      if (argsAreSet_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, argsAreSet_);
      }
      if (isReady_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isReady_);
      }
      if (execCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, execCount_);
      }
      if (simdSize_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, simdSize_);
      }
      if (version_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, version_);
      }
      if (id_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, id_);
      }
      if (nKernel_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(8, nKernel_);
      }
      if (java.lang.Float.floatToRawIntBits(progress_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(9, progress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msg_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, msg_);
      }
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getData());
      }
      for (int i = 0; i < before_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, before_.get(i));
      }
      for (int i = 0; i < after_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, after_.get(i));
      }
      if (regionType_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(15, regionType_);
      }
      if (regionId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(16, regionId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Concept.Command)) {
        return super.equals(obj);
      }
      Messages.Concept.Command other = (Messages.Concept.Command) obj;

      if (hasFunction() != other.hasFunction()) return false;
      if (hasFunction()) {
        if (!getFunction()
            .equals(other.getFunction())) return false;
      }
      if (getArgsAreSet()
          != other.getArgsAreSet()) return false;
      if (getIsReady()
          != other.getIsReady()) return false;
      if (getExecCount()
          != other.getExecCount()) return false;
      if (getSimdSize()
          != other.getSimdSize()) return false;
      if (getVersion()
          != other.getVersion()) return false;
      if (getId()
          != other.getId()) return false;
      if (getNKernel()
          != other.getNKernel()) return false;
      if (java.lang.Float.floatToIntBits(getProgress())
          != java.lang.Float.floatToIntBits(
              other.getProgress())) return false;
      if (!getMsg()
          .equals(other.getMsg())) return false;
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!getBeforeList()
          .equals(other.getBeforeList())) return false;
      if (!getAfterList()
          .equals(other.getAfterList())) return false;
      if (getRegionType()
          != other.getRegionType()) return false;
      if (getRegionId()
          != other.getRegionId()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFunction()) {
        hash = (37 * hash) + FUNCTION_FIELD_NUMBER;
        hash = (53 * hash) + getFunction().hashCode();
      }
      hash = (37 * hash) + ARGS_ARE_SET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getArgsAreSet());
      hash = (37 * hash) + IS_READY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsReady());
      hash = (37 * hash) + EXEC_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getExecCount());
      hash = (37 * hash) + SIMD_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSimdSize());
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getVersion());
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getId());
      hash = (37 * hash) + N_KERNEL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNKernel());
      hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getProgress());
      hash = (37 * hash) + MSG_FIELD_NUMBER;
      hash = (53 * hash) + getMsg().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      if (getBeforeCount() > 0) {
        hash = (37 * hash) + BEFORE_FIELD_NUMBER;
        hash = (53 * hash) + getBeforeList().hashCode();
      }
      if (getAfterCount() > 0) {
        hash = (37 * hash) + AFTER_FIELD_NUMBER;
        hash = (53 * hash) + getAfterList().hashCode();
      }
      hash = (37 * hash) + REGION_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getRegionType();
      hash = (37 * hash) + REGION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRegionId();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Messages.Concept.Command parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Command parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Command parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Command parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Command parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Command parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Command parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Command parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Command parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Messages.Concept.Command parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Command parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Command parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Concept.Command prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Command}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Command)
        Messages.Concept.CommandOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Concept.internal_static_Messages_Command_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Concept.internal_static_Messages_Command_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Concept.Command.class, Messages.Concept.Command.Builder.class);
      }

      // Construct using Messages.Concept.Command.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (functionBuilder_ == null) {
          function_ = null;
        } else {
          function_ = null;
          functionBuilder_ = null;
        }
        argsAreSet_ = false;

        isReady_ = false;

        execCount_ = 0L;

        simdSize_ = 0L;

        version_ = 0L;

        id_ = 0L;

        nKernel_ = 0L;

        progress_ = 0F;

        msg_ = "";

        if (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        if (beforeBuilder_ == null) {
          before_ = java.util.Collections.emptyList();
        } else {
          before_ = null;
          beforeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (afterBuilder_ == null) {
          after_ = java.util.Collections.emptyList();
        } else {
          after_ = null;
          afterBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        regionType_ = 0;

        regionId_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Concept.internal_static_Messages_Command_descriptor;
      }

      @java.lang.Override
      public Messages.Concept.Command getDefaultInstanceForType() {
        return Messages.Concept.Command.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Concept.Command build() {
        Messages.Concept.Command result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Concept.Command buildPartial() {
        Messages.Concept.Command result = new Messages.Concept.Command(this);
        int from_bitField0_ = bitField0_;
        if (functionBuilder_ == null) {
          result.function_ = function_;
        } else {
          result.function_ = functionBuilder_.build();
        }
        result.argsAreSet_ = argsAreSet_;
        result.isReady_ = isReady_;
        result.execCount_ = execCount_;
        result.simdSize_ = simdSize_;
        result.version_ = version_;
        result.id_ = id_;
        result.nKernel_ = nKernel_;
        result.progress_ = progress_;
        result.msg_ = msg_;
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        if (beforeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            before_ = java.util.Collections.unmodifiableList(before_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.before_ = before_;
        } else {
          result.before_ = beforeBuilder_.build();
        }
        if (afterBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            after_ = java.util.Collections.unmodifiableList(after_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.after_ = after_;
        } else {
          result.after_ = afterBuilder_.build();
        }
        result.regionType_ = regionType_;
        result.regionId_ = regionId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Messages.Concept.Command) {
          return mergeFrom((Messages.Concept.Command)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Messages.Concept.Command other) {
        if (other == Messages.Concept.Command.getDefaultInstance()) return this;
        if (other.hasFunction()) {
          mergeFunction(other.getFunction());
        }
        if (other.getArgsAreSet() != false) {
          setArgsAreSet(other.getArgsAreSet());
        }
        if (other.getIsReady() != false) {
          setIsReady(other.getIsReady());
        }
        if (other.getExecCount() != 0L) {
          setExecCount(other.getExecCount());
        }
        if (other.getSimdSize() != 0L) {
          setSimdSize(other.getSimdSize());
        }
        if (other.getVersion() != 0L) {
          setVersion(other.getVersion());
        }
        if (other.getId() != 0L) {
          setId(other.getId());
        }
        if (other.getNKernel() != 0L) {
          setNKernel(other.getNKernel());
        }
        if (other.getProgress() != 0F) {
          setProgress(other.getProgress());
        }
        if (!other.getMsg().isEmpty()) {
          msg_ = other.msg_;
          onChanged();
        }
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (beforeBuilder_ == null) {
          if (!other.before_.isEmpty()) {
            if (before_.isEmpty()) {
              before_ = other.before_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureBeforeIsMutable();
              before_.addAll(other.before_);
            }
            onChanged();
          }
        } else {
          if (!other.before_.isEmpty()) {
            if (beforeBuilder_.isEmpty()) {
              beforeBuilder_.dispose();
              beforeBuilder_ = null;
              before_ = other.before_;
              bitField0_ = (bitField0_ & ~0x00000001);
              beforeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBeforeFieldBuilder() : null;
            } else {
              beforeBuilder_.addAllMessages(other.before_);
            }
          }
        }
        if (afterBuilder_ == null) {
          if (!other.after_.isEmpty()) {
            if (after_.isEmpty()) {
              after_ = other.after_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAfterIsMutable();
              after_.addAll(other.after_);
            }
            onChanged();
          }
        } else {
          if (!other.after_.isEmpty()) {
            if (afterBuilder_.isEmpty()) {
              afterBuilder_.dispose();
              afterBuilder_ = null;
              after_ = other.after_;
              bitField0_ = (bitField0_ & ~0x00000002);
              afterBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAfterFieldBuilder() : null;
            } else {
              afterBuilder_.addAllMessages(other.after_);
            }
          }
        }
        if (other.getRegionType() != 0) {
          setRegionType(other.getRegionType());
        }
        if (other.getRegionId() != 0) {
          setRegionId(other.getRegionId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFunctionFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              case 16: {
                argsAreSet_ = input.readBool();

                break;
              } // case 16
              case 24: {
                isReady_ = input.readBool();

                break;
              } // case 24
              case 32: {
                execCount_ = input.readUInt64();

                break;
              } // case 32
              case 40: {
                simdSize_ = input.readUInt64();

                break;
              } // case 40
              case 48: {
                version_ = input.readUInt64();

                break;
              } // case 48
              case 56: {
                id_ = input.readInt64();

                break;
              } // case 56
              case 64: {
                nKernel_ = input.readUInt64();

                break;
              } // case 64
              case 77: {
                progress_ = input.readFloat();

                break;
              } // case 77
              case 82: {
                msg_ = input.readStringRequireUtf8();

                break;
              } // case 82
              case 98: {
                input.readMessage(
                    getDataFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 98
              case 106: {
                Messages.Concept.Command m =
                    input.readMessage(
                        Messages.Concept.Command.parser(),
                        extensionRegistry);
                if (beforeBuilder_ == null) {
                  ensureBeforeIsMutable();
                  before_.add(m);
                } else {
                  beforeBuilder_.addMessage(m);
                }
                break;
              } // case 106
              case 114: {
                Messages.Concept.Command m =
                    input.readMessage(
                        Messages.Concept.Command.parser(),
                        extensionRegistry);
                if (afterBuilder_ == null) {
                  ensureAfterIsMutable();
                  after_.add(m);
                } else {
                  afterBuilder_.addMessage(m);
                }
                break;
              } // case 114
              case 120: {
                regionType_ = input.readUInt32();

                break;
              } // case 120
              case 128: {
                regionId_ = input.readInt32();

                break;
              } // case 128
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private Messages.Concept.Function function_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Concept.Function, Messages.Concept.Function.Builder, Messages.Concept.FunctionOrBuilder> functionBuilder_;
      /**
       * <code>.Messages.Function function = 1;</code>
       * @return Whether the function field is set.
       */
      public boolean hasFunction() {
        return functionBuilder_ != null || function_ != null;
      }
      /**
       * <code>.Messages.Function function = 1;</code>
       * @return The function.
       */
      public Messages.Concept.Function getFunction() {
        if (functionBuilder_ == null) {
          return function_ == null ? Messages.Concept.Function.getDefaultInstance() : function_;
        } else {
          return functionBuilder_.getMessage();
        }
      }
      /**
       * <code>.Messages.Function function = 1;</code>
       */
      public Builder setFunction(Messages.Concept.Function value) {
        if (functionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          function_ = value;
          onChanged();
        } else {
          functionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Function function = 1;</code>
       */
      public Builder setFunction(
          Messages.Concept.Function.Builder builderForValue) {
        if (functionBuilder_ == null) {
          function_ = builderForValue.build();
          onChanged();
        } else {
          functionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Messages.Function function = 1;</code>
       */
      public Builder mergeFunction(Messages.Concept.Function value) {
        if (functionBuilder_ == null) {
          if (function_ != null) {
            function_ =
              Messages.Concept.Function.newBuilder(function_).mergeFrom(value).buildPartial();
          } else {
            function_ = value;
          }
          onChanged();
        } else {
          functionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Function function = 1;</code>
       */
      public Builder clearFunction() {
        if (functionBuilder_ == null) {
          function_ = null;
          onChanged();
        } else {
          function_ = null;
          functionBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Messages.Function function = 1;</code>
       */
      public Messages.Concept.Function.Builder getFunctionBuilder() {
        
        onChanged();
        return getFunctionFieldBuilder().getBuilder();
      }
      /**
       * <code>.Messages.Function function = 1;</code>
       */
      public Messages.Concept.FunctionOrBuilder getFunctionOrBuilder() {
        if (functionBuilder_ != null) {
          return functionBuilder_.getMessageOrBuilder();
        } else {
          return function_ == null ?
              Messages.Concept.Function.getDefaultInstance() : function_;
        }
      }
      /**
       * <code>.Messages.Function function = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Concept.Function, Messages.Concept.Function.Builder, Messages.Concept.FunctionOrBuilder> 
          getFunctionFieldBuilder() {
        if (functionBuilder_ == null) {
          functionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Concept.Function, Messages.Concept.Function.Builder, Messages.Concept.FunctionOrBuilder>(
                  getFunction(),
                  getParentForChildren(),
                  isClean());
          function_ = null;
        }
        return functionBuilder_;
      }

      private boolean argsAreSet_ ;
      /**
       * <code>bool args_are_set = 2;</code>
       * @return The argsAreSet.
       */
      @java.lang.Override
      public boolean getArgsAreSet() {
        return argsAreSet_;
      }
      /**
       * <code>bool args_are_set = 2;</code>
       * @param value The argsAreSet to set.
       * @return This builder for chaining.
       */
      public Builder setArgsAreSet(boolean value) {
        
        argsAreSet_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool args_are_set = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearArgsAreSet() {
        
        argsAreSet_ = false;
        onChanged();
        return this;
      }

      private boolean isReady_ ;
      /**
       * <code>bool is_ready = 3;</code>
       * @return The isReady.
       */
      @java.lang.Override
      public boolean getIsReady() {
        return isReady_;
      }
      /**
       * <code>bool is_ready = 3;</code>
       * @param value The isReady to set.
       * @return This builder for chaining.
       */
      public Builder setIsReady(boolean value) {
        
        isReady_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_ready = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsReady() {
        
        isReady_ = false;
        onChanged();
        return this;
      }

      private long execCount_ ;
      /**
       * <code>uint64 exec_count = 4;</code>
       * @return The execCount.
       */
      @java.lang.Override
      public long getExecCount() {
        return execCount_;
      }
      /**
       * <code>uint64 exec_count = 4;</code>
       * @param value The execCount to set.
       * @return This builder for chaining.
       */
      public Builder setExecCount(long value) {
        
        execCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 exec_count = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearExecCount() {
        
        execCount_ = 0L;
        onChanged();
        return this;
      }

      private long simdSize_ ;
      /**
       * <code>uint64 simd_size = 5;</code>
       * @return The simdSize.
       */
      @java.lang.Override
      public long getSimdSize() {
        return simdSize_;
      }
      /**
       * <code>uint64 simd_size = 5;</code>
       * @param value The simdSize to set.
       * @return This builder for chaining.
       */
      public Builder setSimdSize(long value) {
        
        simdSize_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 simd_size = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSimdSize() {
        
        simdSize_ = 0L;
        onChanged();
        return this;
      }

      private long version_ ;
      /**
       * <code>uint64 version = 6;</code>
       * @return The version.
       */
      @java.lang.Override
      public long getVersion() {
        return version_;
      }
      /**
       * <code>uint64 version = 6;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(long value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 version = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        
        version_ = 0L;
        onChanged();
        return this;
      }

      private long id_ ;
      /**
       * <pre>
       * unique runtime identifier (assigned and only valid within a server session)
       * </pre>
       *
       * <code>int64 id = 7;</code>
       * @return The id.
       */
      @java.lang.Override
      public long getId() {
        return id_;
      }
      /**
       * <pre>
       * unique runtime identifier (assigned and only valid within a server session)
       * </pre>
       *
       * <code>int64 id = 7;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(long value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * unique runtime identifier (assigned and only valid within a server session)
       * </pre>
       *
       * <code>int64 id = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0L;
        onChanged();
        return this;
      }

      private long nKernel_ ;
      /**
       * <code>uint64 n_kernel = 8;</code>
       * @return The nKernel.
       */
      @java.lang.Override
      public long getNKernel() {
        return nKernel_;
      }
      /**
       * <code>uint64 n_kernel = 8;</code>
       * @param value The nKernel to set.
       * @return This builder for chaining.
       */
      public Builder setNKernel(long value) {
        
        nKernel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 n_kernel = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearNKernel() {
        
        nKernel_ = 0L;
        onChanged();
        return this;
      }

      private float progress_ ;
      /**
       * <code>float progress = 9;</code>
       * @return The progress.
       */
      @java.lang.Override
      public float getProgress() {
        return progress_;
      }
      /**
       * <code>float progress = 9;</code>
       * @param value The progress to set.
       * @return This builder for chaining.
       */
      public Builder setProgress(float value) {
        
        progress_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float progress = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearProgress() {
        
        progress_ = 0F;
        onChanged();
        return this;
      }

      private java.lang.Object msg_ = "";
      /**
       * <code>string msg = 10;</code>
       * @return The msg.
       */
      public java.lang.String getMsg() {
        java.lang.Object ref = msg_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msg_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg = 10;</code>
       * @return The bytes for msg.
       */
      public com.google.protobuf.ByteString
          getMsgBytes() {
        java.lang.Object ref = msg_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msg_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg = 10;</code>
       * @param value The msg to set.
       * @return This builder for chaining.
       */
      public Builder setMsg(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msg_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearMsg() {
        
        msg_ = getDefaultInstance().getMsg();
        onChanged();
        return this;
      }
      /**
       * <code>string msg = 10;</code>
       * @param value The bytes for msg to set.
       * @return This builder for chaining.
       */
      public Builder setMsgBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msg_ = value;
        onChanged();
        return this;
      }

      private Messages.Vector.Record64 data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder> dataBuilder_;
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       * @return The data.
       */
      public Messages.Vector.Record64 getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? Messages.Vector.Record64.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       */
      public Builder setData(Messages.Vector.Record64 value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       */
      public Builder setData(
          Messages.Vector.Record64.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       */
      public Builder mergeData(Messages.Vector.Record64 value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              Messages.Vector.Record64.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       */
      public Messages.Vector.Record64.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       */
      public Messages.Vector.Record64OrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              Messages.Vector.Record64.getDefaultInstance() : data_;
        }
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>.Messages.Record64 data = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private java.util.List<Messages.Concept.Command> before_ =
        java.util.Collections.emptyList();
      private void ensureBeforeIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          before_ = new java.util.ArrayList<Messages.Concept.Command>(before_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder> beforeBuilder_;

      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public java.util.List<Messages.Concept.Command> getBeforeList() {
        if (beforeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(before_);
        } else {
          return beforeBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public int getBeforeCount() {
        if (beforeBuilder_ == null) {
          return before_.size();
        } else {
          return beforeBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Messages.Concept.Command getBefore(int index) {
        if (beforeBuilder_ == null) {
          return before_.get(index);
        } else {
          return beforeBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder setBefore(
          int index, Messages.Concept.Command value) {
        if (beforeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBeforeIsMutable();
          before_.set(index, value);
          onChanged();
        } else {
          beforeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder setBefore(
          int index, Messages.Concept.Command.Builder builderForValue) {
        if (beforeBuilder_ == null) {
          ensureBeforeIsMutable();
          before_.set(index, builderForValue.build());
          onChanged();
        } else {
          beforeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder addBefore(Messages.Concept.Command value) {
        if (beforeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBeforeIsMutable();
          before_.add(value);
          onChanged();
        } else {
          beforeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder addBefore(
          int index, Messages.Concept.Command value) {
        if (beforeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBeforeIsMutable();
          before_.add(index, value);
          onChanged();
        } else {
          beforeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder addBefore(
          Messages.Concept.Command.Builder builderForValue) {
        if (beforeBuilder_ == null) {
          ensureBeforeIsMutable();
          before_.add(builderForValue.build());
          onChanged();
        } else {
          beforeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder addBefore(
          int index, Messages.Concept.Command.Builder builderForValue) {
        if (beforeBuilder_ == null) {
          ensureBeforeIsMutable();
          before_.add(index, builderForValue.build());
          onChanged();
        } else {
          beforeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder addAllBefore(
          java.lang.Iterable<? extends Messages.Concept.Command> values) {
        if (beforeBuilder_ == null) {
          ensureBeforeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, before_);
          onChanged();
        } else {
          beforeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder clearBefore() {
        if (beforeBuilder_ == null) {
          before_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          beforeBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Builder removeBefore(int index) {
        if (beforeBuilder_ == null) {
          ensureBeforeIsMutable();
          before_.remove(index);
          onChanged();
        } else {
          beforeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Messages.Concept.Command.Builder getBeforeBuilder(
          int index) {
        return getBeforeFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Messages.Concept.CommandOrBuilder getBeforeOrBuilder(
          int index) {
        if (beforeBuilder_ == null) {
          return before_.get(index);  } else {
          return beforeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public java.util.List<? extends Messages.Concept.CommandOrBuilder> 
           getBeforeOrBuilderList() {
        if (beforeBuilder_ != null) {
          return beforeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(before_);
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Messages.Concept.Command.Builder addBeforeBuilder() {
        return getBeforeFieldBuilder().addBuilder(
            Messages.Concept.Command.getDefaultInstance());
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public Messages.Concept.Command.Builder addBeforeBuilder(
          int index) {
        return getBeforeFieldBuilder().addBuilder(
            index, Messages.Concept.Command.getDefaultInstance());
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command before = 13;</code>
       */
      public java.util.List<Messages.Concept.Command.Builder> 
           getBeforeBuilderList() {
        return getBeforeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder> 
          getBeforeFieldBuilder() {
        if (beforeBuilder_ == null) {
          beforeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder>(
                  before_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          before_ = null;
        }
        return beforeBuilder_;
      }

      private java.util.List<Messages.Concept.Command> after_ =
        java.util.Collections.emptyList();
      private void ensureAfterIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          after_ = new java.util.ArrayList<Messages.Concept.Command>(after_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder> afterBuilder_;

      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public java.util.List<Messages.Concept.Command> getAfterList() {
        if (afterBuilder_ == null) {
          return java.util.Collections.unmodifiableList(after_);
        } else {
          return afterBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public int getAfterCount() {
        if (afterBuilder_ == null) {
          return after_.size();
        } else {
          return afterBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Messages.Concept.Command getAfter(int index) {
        if (afterBuilder_ == null) {
          return after_.get(index);
        } else {
          return afterBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder setAfter(
          int index, Messages.Concept.Command value) {
        if (afterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAfterIsMutable();
          after_.set(index, value);
          onChanged();
        } else {
          afterBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder setAfter(
          int index, Messages.Concept.Command.Builder builderForValue) {
        if (afterBuilder_ == null) {
          ensureAfterIsMutable();
          after_.set(index, builderForValue.build());
          onChanged();
        } else {
          afterBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder addAfter(Messages.Concept.Command value) {
        if (afterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAfterIsMutable();
          after_.add(value);
          onChanged();
        } else {
          afterBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder addAfter(
          int index, Messages.Concept.Command value) {
        if (afterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAfterIsMutable();
          after_.add(index, value);
          onChanged();
        } else {
          afterBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder addAfter(
          Messages.Concept.Command.Builder builderForValue) {
        if (afterBuilder_ == null) {
          ensureAfterIsMutable();
          after_.add(builderForValue.build());
          onChanged();
        } else {
          afterBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder addAfter(
          int index, Messages.Concept.Command.Builder builderForValue) {
        if (afterBuilder_ == null) {
          ensureAfterIsMutable();
          after_.add(index, builderForValue.build());
          onChanged();
        } else {
          afterBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder addAllAfter(
          java.lang.Iterable<? extends Messages.Concept.Command> values) {
        if (afterBuilder_ == null) {
          ensureAfterIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, after_);
          onChanged();
        } else {
          afterBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder clearAfter() {
        if (afterBuilder_ == null) {
          after_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          afterBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Builder removeAfter(int index) {
        if (afterBuilder_ == null) {
          ensureAfterIsMutable();
          after_.remove(index);
          onChanged();
        } else {
          afterBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Messages.Concept.Command.Builder getAfterBuilder(
          int index) {
        return getAfterFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Messages.Concept.CommandOrBuilder getAfterOrBuilder(
          int index) {
        if (afterBuilder_ == null) {
          return after_.get(index);  } else {
          return afterBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public java.util.List<? extends Messages.Concept.CommandOrBuilder> 
           getAfterOrBuilderList() {
        if (afterBuilder_ != null) {
          return afterBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(after_);
        }
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Messages.Concept.Command.Builder addAfterBuilder() {
        return getAfterFieldBuilder().addBuilder(
            Messages.Concept.Command.getDefaultInstance());
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public Messages.Concept.Command.Builder addAfterBuilder(
          int index) {
        return getAfterFieldBuilder().addBuilder(
            index, Messages.Concept.Command.getDefaultInstance());
      }
      /**
       * <pre>
       * optional, to be called from within bound function
       * </pre>
       *
       * <code>repeated .Messages.Command after = 14;</code>
       */
      public java.util.List<Messages.Concept.Command.Builder> 
           getAfterBuilderList() {
        return getAfterFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder> 
          getAfterFieldBuilder() {
        if (afterBuilder_ == null) {
          afterBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder>(
                  after_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          after_ = null;
        }
        return afterBuilder_;
      }

      private int regionType_ ;
      /**
       * <pre>
       * if assigned, used to identify specific zones for conditions, etc
       * </pre>
       *
       * <code>uint32 region_type = 15;</code>
       * @return The regionType.
       */
      @java.lang.Override
      public int getRegionType() {
        return regionType_;
      }
      /**
       * <pre>
       * if assigned, used to identify specific zones for conditions, etc
       * </pre>
       *
       * <code>uint32 region_type = 15;</code>
       * @param value The regionType to set.
       * @return This builder for chaining.
       */
      public Builder setRegionType(int value) {
        
        regionType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * if assigned, used to identify specific zones for conditions, etc
       * </pre>
       *
       * <code>uint32 region_type = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearRegionType() {
        
        regionType_ = 0;
        onChanged();
        return this;
      }

      private int regionId_ ;
      /**
       * <pre>
       * if assigned, used to identify specific zones for conditions, etc
       * </pre>
       *
       * <code>int32 region_id = 16;</code>
       * @return The regionId.
       */
      @java.lang.Override
      public int getRegionId() {
        return regionId_;
      }
      /**
       * <pre>
       * if assigned, used to identify specific zones for conditions, etc
       * </pre>
       *
       * <code>int32 region_id = 16;</code>
       * @param value The regionId to set.
       * @return This builder for chaining.
       */
      public Builder setRegionId(int value) {
        
        regionId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * if assigned, used to identify specific zones for conditions, etc
       * </pre>
       *
       * <code>int32 region_id = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearRegionId() {
        
        regionId_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Command)
    }

    // @@protoc_insertion_point(class_scope:Messages.Command)
    private static final Messages.Concept.Command DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Concept.Command();
    }

    public static Messages.Concept.Command getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Command>
        PARSER = new com.google.protobuf.AbstractParser<Command>() {
      @java.lang.Override
      public Command parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public Messages.Concept.Command getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScriptOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Script)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>string msg = 2;</code>
     * @return The msg.
     */
    java.lang.String getMsg();
    /**
     * <code>string msg = 2;</code>
     * @return The bytes for msg.
     */
    com.google.protobuf.ByteString
        getMsgBytes();

    /**
     * <code>string source_code = 3;</code>
     * @return The sourceCode.
     */
    java.lang.String getSourceCode();
    /**
     * <code>string source_code = 3;</code>
     * @return The bytes for sourceCode.
     */
    com.google.protobuf.ByteString
        getSourceCodeBytes();

    /**
     * <pre>
     * same as system uid, if assigned
     * </pre>
     *
     * <code>int64 uid = 4;</code>
     * @return The uid.
     */
    long getUid();

    /**
     * <code>uint32 device = 5;</code>
     * @return The device.
     */
    int getDevice();

    /**
     * <code>uint32 status = 6;</code>
     * @return The status.
     */
    int getStatus();

    /**
     * <code>uint32 order = 7;</code>
     * @return The order.
     */
    int getOrder();

    /**
     * <code>float progress = 8;</code>
     * @return The progress.
     */
    float getProgress();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Variables variables = 10;</code>
     * @return Whether the variables field is set.
     */
    boolean hasVariables();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Variables variables = 10;</code>
     * @return The variables.
     */
    Messages.Concept.Variables getVariables();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Variables variables = 10;</code>
     */
    Messages.Concept.VariablesOrBuilder getVariablesOrBuilder();

    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    java.util.List<Messages.Concept.Command> 
        getSequenceList();
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    Messages.Concept.Command getSequence(int index);
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    int getSequenceCount();
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    java.util.List<? extends Messages.Concept.CommandOrBuilder> 
        getSequenceOrBuilderList();
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    Messages.Concept.CommandOrBuilder getSequenceOrBuilder(
        int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Script before = 14;</code>
     * @return Whether the before field is set.
     */
    boolean hasBefore();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Script before = 14;</code>
     * @return The before.
     */
    Messages.Concept.Script getBefore();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Script before = 14;</code>
     */
    Messages.Concept.ScriptOrBuilder getBeforeOrBuilder();

    /**
     * <code>.Messages.Script after = 15;</code>
     * @return Whether the after field is set.
     */
    boolean hasAfter();
    /**
     * <code>.Messages.Script after = 15;</code>
     * @return The after.
     */
    Messages.Concept.Script getAfter();
    /**
     * <code>.Messages.Script after = 15;</code>
     */
    Messages.Concept.ScriptOrBuilder getAfterOrBuilder();
  }
  /**
   * Protobuf type {@code Messages.Script}
   */
  public static final class Script extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Script)
      ScriptOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Script.newBuilder() to construct.
    private Script(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Script() {
      name_ = "";
      msg_ = "";
      sourceCode_ = "";
      sequence_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Script();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Concept.internal_static_Messages_Script_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Concept.internal_static_Messages_Script_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Concept.Script.class, Messages.Concept.Script.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MSG_FIELD_NUMBER = 2;
    private volatile java.lang.Object msg_;
    /**
     * <code>string msg = 2;</code>
     * @return The msg.
     */
    @java.lang.Override
    public java.lang.String getMsg() {
      java.lang.Object ref = msg_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        msg_ = s;
        return s;
      }
    }
    /**
     * <code>string msg = 2;</code>
     * @return The bytes for msg.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMsgBytes() {
      java.lang.Object ref = msg_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        msg_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SOURCE_CODE_FIELD_NUMBER = 3;
    private volatile java.lang.Object sourceCode_;
    /**
     * <code>string source_code = 3;</code>
     * @return The sourceCode.
     */
    @java.lang.Override
    public java.lang.String getSourceCode() {
      java.lang.Object ref = sourceCode_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        sourceCode_ = s;
        return s;
      }
    }
    /**
     * <code>string source_code = 3;</code>
     * @return The bytes for sourceCode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSourceCodeBytes() {
      java.lang.Object ref = sourceCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sourceCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int UID_FIELD_NUMBER = 4;
    private long uid_;
    /**
     * <pre>
     * same as system uid, if assigned
     * </pre>
     *
     * <code>int64 uid = 4;</code>
     * @return The uid.
     */
    @java.lang.Override
    public long getUid() {
      return uid_;
    }

    public static final int DEVICE_FIELD_NUMBER = 5;
    private int device_;
    /**
     * <code>uint32 device = 5;</code>
     * @return The device.
     */
    @java.lang.Override
    public int getDevice() {
      return device_;
    }

    public static final int STATUS_FIELD_NUMBER = 6;
    private int status_;
    /**
     * <code>uint32 status = 6;</code>
     * @return The status.
     */
    @java.lang.Override
    public int getStatus() {
      return status_;
    }

    public static final int ORDER_FIELD_NUMBER = 7;
    private int order_;
    /**
     * <code>uint32 order = 7;</code>
     * @return The order.
     */
    @java.lang.Override
    public int getOrder() {
      return order_;
    }

    public static final int PROGRESS_FIELD_NUMBER = 8;
    private float progress_;
    /**
     * <code>float progress = 8;</code>
     * @return The progress.
     */
    @java.lang.Override
    public float getProgress() {
      return progress_;
    }

    public static final int VARIABLES_FIELD_NUMBER = 10;
    private Messages.Concept.Variables variables_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Variables variables = 10;</code>
     * @return Whether the variables field is set.
     */
    @java.lang.Override
    public boolean hasVariables() {
      return variables_ != null;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Variables variables = 10;</code>
     * @return The variables.
     */
    @java.lang.Override
    public Messages.Concept.Variables getVariables() {
      return variables_ == null ? Messages.Concept.Variables.getDefaultInstance() : variables_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Variables variables = 10;</code>
     */
    @java.lang.Override
    public Messages.Concept.VariablesOrBuilder getVariablesOrBuilder() {
      return getVariables();
    }

    public static final int SEQUENCE_FIELD_NUMBER = 12;
    private java.util.List<Messages.Concept.Command> sequence_;
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Concept.Command> getSequenceList() {
      return sequence_;
    }
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Concept.CommandOrBuilder> 
        getSequenceOrBuilderList() {
      return sequence_;
    }
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    @java.lang.Override
    public int getSequenceCount() {
      return sequence_.size();
    }
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    @java.lang.Override
    public Messages.Concept.Command getSequence(int index) {
      return sequence_.get(index);
    }
    /**
     * <pre>
     *reserved  
     * </pre>
     *
     * <code>repeated .Messages.Command Sequence = 12;</code>
     */
    @java.lang.Override
    public Messages.Concept.CommandOrBuilder getSequenceOrBuilder(
        int index) {
      return sequence_.get(index);
    }

    public static final int BEFORE_FIELD_NUMBER = 14;
    private Messages.Concept.Script before_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Script before = 14;</code>
     * @return Whether the before field is set.
     */
    @java.lang.Override
    public boolean hasBefore() {
      return before_ != null;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Script before = 14;</code>
     * @return The before.
     */
    @java.lang.Override
    public Messages.Concept.Script getBefore() {
      return before_ == null ? Messages.Concept.Script.getDefaultInstance() : before_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.Script before = 14;</code>
     */
    @java.lang.Override
    public Messages.Concept.ScriptOrBuilder getBeforeOrBuilder() {
      return getBefore();
    }

    public static final int AFTER_FIELD_NUMBER = 15;
    private Messages.Concept.Script after_;
    /**
     * <code>.Messages.Script after = 15;</code>
     * @return Whether the after field is set.
     */
    @java.lang.Override
    public boolean hasAfter() {
      return after_ != null;
    }
    /**
     * <code>.Messages.Script after = 15;</code>
     * @return The after.
     */
    @java.lang.Override
    public Messages.Concept.Script getAfter() {
      return after_ == null ? Messages.Concept.Script.getDefaultInstance() : after_;
    }
    /**
     * <code>.Messages.Script after = 15;</code>
     */
    @java.lang.Override
    public Messages.Concept.ScriptOrBuilder getAfterOrBuilder() {
      return getAfter();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msg_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, msg_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceCode_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, sourceCode_);
      }
      if (uid_ != 0L) {
        output.writeInt64(4, uid_);
      }
      if (device_ != 0) {
        output.writeUInt32(5, device_);
      }
      if (status_ != 0) {
        output.writeUInt32(6, status_);
      }
      if (order_ != 0) {
        output.writeUInt32(7, order_);
      }
      if (java.lang.Float.floatToRawIntBits(progress_) != 0) {
        output.writeFloat(8, progress_);
      }
      if (variables_ != null) {
        output.writeMessage(10, getVariables());
      }
      for (int i = 0; i < sequence_.size(); i++) {
        output.writeMessage(12, sequence_.get(i));
      }
      if (before_ != null) {
        output.writeMessage(14, getBefore());
      }
      if (after_ != null) {
        output.writeMessage(15, getAfter());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msg_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, msg_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceCode_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, sourceCode_);
      }
      if (uid_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, uid_);
      }
      if (device_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, device_);
      }
      if (status_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, status_);
      }
      if (order_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(7, order_);
      }
      if (java.lang.Float.floatToRawIntBits(progress_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(8, progress_);
      }
      if (variables_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getVariables());
      }
      for (int i = 0; i < sequence_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, sequence_.get(i));
      }
      if (before_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, getBefore());
      }
      if (after_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, getAfter());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Concept.Script)) {
        return super.equals(obj);
      }
      Messages.Concept.Script other = (Messages.Concept.Script) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getMsg()
          .equals(other.getMsg())) return false;
      if (!getSourceCode()
          .equals(other.getSourceCode())) return false;
      if (getUid()
          != other.getUid()) return false;
      if (getDevice()
          != other.getDevice()) return false;
      if (getStatus()
          != other.getStatus()) return false;
      if (getOrder()
          != other.getOrder()) return false;
      if (java.lang.Float.floatToIntBits(getProgress())
          != java.lang.Float.floatToIntBits(
              other.getProgress())) return false;
      if (hasVariables() != other.hasVariables()) return false;
      if (hasVariables()) {
        if (!getVariables()
            .equals(other.getVariables())) return false;
      }
      if (!getSequenceList()
          .equals(other.getSequenceList())) return false;
      if (hasBefore() != other.hasBefore()) return false;
      if (hasBefore()) {
        if (!getBefore()
            .equals(other.getBefore())) return false;
      }
      if (hasAfter() != other.hasAfter()) return false;
      if (hasAfter()) {
        if (!getAfter()
            .equals(other.getAfter())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + MSG_FIELD_NUMBER;
      hash = (53 * hash) + getMsg().hashCode();
      hash = (37 * hash) + SOURCE_CODE_FIELD_NUMBER;
      hash = (53 * hash) + getSourceCode().hashCode();
      hash = (37 * hash) + UID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getUid());
      hash = (37 * hash) + DEVICE_FIELD_NUMBER;
      hash = (53 * hash) + getDevice();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + getStatus();
      hash = (37 * hash) + ORDER_FIELD_NUMBER;
      hash = (53 * hash) + getOrder();
      hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getProgress());
      if (hasVariables()) {
        hash = (37 * hash) + VARIABLES_FIELD_NUMBER;
        hash = (53 * hash) + getVariables().hashCode();
      }
      if (getSequenceCount() > 0) {
        hash = (37 * hash) + SEQUENCE_FIELD_NUMBER;
        hash = (53 * hash) + getSequenceList().hashCode();
      }
      if (hasBefore()) {
        hash = (37 * hash) + BEFORE_FIELD_NUMBER;
        hash = (53 * hash) + getBefore().hashCode();
      }
      if (hasAfter()) {
        hash = (37 * hash) + AFTER_FIELD_NUMBER;
        hash = (53 * hash) + getAfter().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Messages.Concept.Script parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Script parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Script parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Script parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Script parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Script parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Script parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Script parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Script parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Messages.Concept.Script parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Script parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Script parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Concept.Script prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Script}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Script)
        Messages.Concept.ScriptOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Concept.internal_static_Messages_Script_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Concept.internal_static_Messages_Script_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Concept.Script.class, Messages.Concept.Script.Builder.class);
      }

      // Construct using Messages.Concept.Script.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        msg_ = "";

        sourceCode_ = "";

        uid_ = 0L;

        device_ = 0;

        status_ = 0;

        order_ = 0;

        progress_ = 0F;

        if (variablesBuilder_ == null) {
          variables_ = null;
        } else {
          variables_ = null;
          variablesBuilder_ = null;
        }
        if (sequenceBuilder_ == null) {
          sequence_ = java.util.Collections.emptyList();
        } else {
          sequence_ = null;
          sequenceBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (beforeBuilder_ == null) {
          before_ = null;
        } else {
          before_ = null;
          beforeBuilder_ = null;
        }
        if (afterBuilder_ == null) {
          after_ = null;
        } else {
          after_ = null;
          afterBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Concept.internal_static_Messages_Script_descriptor;
      }

      @java.lang.Override
      public Messages.Concept.Script getDefaultInstanceForType() {
        return Messages.Concept.Script.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Concept.Script build() {
        Messages.Concept.Script result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Concept.Script buildPartial() {
        Messages.Concept.Script result = new Messages.Concept.Script(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        result.msg_ = msg_;
        result.sourceCode_ = sourceCode_;
        result.uid_ = uid_;
        result.device_ = device_;
        result.status_ = status_;
        result.order_ = order_;
        result.progress_ = progress_;
        if (variablesBuilder_ == null) {
          result.variables_ = variables_;
        } else {
          result.variables_ = variablesBuilder_.build();
        }
        if (sequenceBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sequence_ = java.util.Collections.unmodifiableList(sequence_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sequence_ = sequence_;
        } else {
          result.sequence_ = sequenceBuilder_.build();
        }
        if (beforeBuilder_ == null) {
          result.before_ = before_;
        } else {
          result.before_ = beforeBuilder_.build();
        }
        if (afterBuilder_ == null) {
          result.after_ = after_;
        } else {
          result.after_ = afterBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Messages.Concept.Script) {
          return mergeFrom((Messages.Concept.Script)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Messages.Concept.Script other) {
        if (other == Messages.Concept.Script.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getMsg().isEmpty()) {
          msg_ = other.msg_;
          onChanged();
        }
        if (!other.getSourceCode().isEmpty()) {
          sourceCode_ = other.sourceCode_;
          onChanged();
        }
        if (other.getUid() != 0L) {
          setUid(other.getUid());
        }
        if (other.getDevice() != 0) {
          setDevice(other.getDevice());
        }
        if (other.getStatus() != 0) {
          setStatus(other.getStatus());
        }
        if (other.getOrder() != 0) {
          setOrder(other.getOrder());
        }
        if (other.getProgress() != 0F) {
          setProgress(other.getProgress());
        }
        if (other.hasVariables()) {
          mergeVariables(other.getVariables());
        }
        if (sequenceBuilder_ == null) {
          if (!other.sequence_.isEmpty()) {
            if (sequence_.isEmpty()) {
              sequence_ = other.sequence_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSequenceIsMutable();
              sequence_.addAll(other.sequence_);
            }
            onChanged();
          }
        } else {
          if (!other.sequence_.isEmpty()) {
            if (sequenceBuilder_.isEmpty()) {
              sequenceBuilder_.dispose();
              sequenceBuilder_ = null;
              sequence_ = other.sequence_;
              bitField0_ = (bitField0_ & ~0x00000001);
              sequenceBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSequenceFieldBuilder() : null;
            } else {
              sequenceBuilder_.addAllMessages(other.sequence_);
            }
          }
        }
        if (other.hasBefore()) {
          mergeBefore(other.getBefore());
        }
        if (other.hasAfter()) {
          mergeAfter(other.getAfter());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                msg_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                sourceCode_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 32: {
                uid_ = input.readInt64();

                break;
              } // case 32
              case 40: {
                device_ = input.readUInt32();

                break;
              } // case 40
              case 48: {
                status_ = input.readUInt32();

                break;
              } // case 48
              case 56: {
                order_ = input.readUInt32();

                break;
              } // case 56
              case 69: {
                progress_ = input.readFloat();

                break;
              } // case 69
              case 82: {
                input.readMessage(
                    getVariablesFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 82
              case 98: {
                Messages.Concept.Command m =
                    input.readMessage(
                        Messages.Concept.Command.parser(),
                        extensionRegistry);
                if (sequenceBuilder_ == null) {
                  ensureSequenceIsMutable();
                  sequence_.add(m);
                } else {
                  sequenceBuilder_.addMessage(m);
                }
                break;
              } // case 98
              case 114: {
                input.readMessage(
                    getBeforeFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getAfterFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 122
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object msg_ = "";
      /**
       * <code>string msg = 2;</code>
       * @return The msg.
       */
      public java.lang.String getMsg() {
        java.lang.Object ref = msg_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          msg_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string msg = 2;</code>
       * @return The bytes for msg.
       */
      public com.google.protobuf.ByteString
          getMsgBytes() {
        java.lang.Object ref = msg_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          msg_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string msg = 2;</code>
       * @param value The msg to set.
       * @return This builder for chaining.
       */
      public Builder setMsg(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        msg_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string msg = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMsg() {
        
        msg_ = getDefaultInstance().getMsg();
        onChanged();
        return this;
      }
      /**
       * <code>string msg = 2;</code>
       * @param value The bytes for msg to set.
       * @return This builder for chaining.
       */
      public Builder setMsgBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        msg_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sourceCode_ = "";
      /**
       * <code>string source_code = 3;</code>
       * @return The sourceCode.
       */
      public java.lang.String getSourceCode() {
        java.lang.Object ref = sourceCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sourceCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string source_code = 3;</code>
       * @return The bytes for sourceCode.
       */
      public com.google.protobuf.ByteString
          getSourceCodeBytes() {
        java.lang.Object ref = sourceCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sourceCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string source_code = 3;</code>
       * @param value The sourceCode to set.
       * @return This builder for chaining.
       */
      public Builder setSourceCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sourceCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string source_code = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSourceCode() {
        
        sourceCode_ = getDefaultInstance().getSourceCode();
        onChanged();
        return this;
      }
      /**
       * <code>string source_code = 3;</code>
       * @param value The bytes for sourceCode to set.
       * @return This builder for chaining.
       */
      public Builder setSourceCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sourceCode_ = value;
        onChanged();
        return this;
      }

      private long uid_ ;
      /**
       * <pre>
       * same as system uid, if assigned
       * </pre>
       *
       * <code>int64 uid = 4;</code>
       * @return The uid.
       */
      @java.lang.Override
      public long getUid() {
        return uid_;
      }
      /**
       * <pre>
       * same as system uid, if assigned
       * </pre>
       *
       * <code>int64 uid = 4;</code>
       * @param value The uid to set.
       * @return This builder for chaining.
       */
      public Builder setUid(long value) {
        
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * same as system uid, if assigned
       * </pre>
       *
       * <code>int64 uid = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearUid() {
        
        uid_ = 0L;
        onChanged();
        return this;
      }

      private int device_ ;
      /**
       * <code>uint32 device = 5;</code>
       * @return The device.
       */
      @java.lang.Override
      public int getDevice() {
        return device_;
      }
      /**
       * <code>uint32 device = 5;</code>
       * @param value The device to set.
       * @return This builder for chaining.
       */
      public Builder setDevice(int value) {
        
        device_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 device = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevice() {
        
        device_ = 0;
        onChanged();
        return this;
      }

      private int status_ ;
      /**
       * <code>uint32 status = 6;</code>
       * @return The status.
       */
      @java.lang.Override
      public int getStatus() {
        return status_;
      }
      /**
       * <code>uint32 status = 6;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 status = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }

      private int order_ ;
      /**
       * <code>uint32 order = 7;</code>
       * @return The order.
       */
      @java.lang.Override
      public int getOrder() {
        return order_;
      }
      /**
       * <code>uint32 order = 7;</code>
       * @param value The order to set.
       * @return This builder for chaining.
       */
      public Builder setOrder(int value) {
        
        order_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 order = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrder() {
        
        order_ = 0;
        onChanged();
        return this;
      }

      private float progress_ ;
      /**
       * <code>float progress = 8;</code>
       * @return The progress.
       */
      @java.lang.Override
      public float getProgress() {
        return progress_;
      }
      /**
       * <code>float progress = 8;</code>
       * @param value The progress to set.
       * @return This builder for chaining.
       */
      public Builder setProgress(float value) {
        
        progress_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float progress = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearProgress() {
        
        progress_ = 0F;
        onChanged();
        return this;
      }

      private Messages.Concept.Variables variables_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Concept.Variables, Messages.Concept.Variables.Builder, Messages.Concept.VariablesOrBuilder> variablesBuilder_;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       * @return Whether the variables field is set.
       */
      public boolean hasVariables() {
        return variablesBuilder_ != null || variables_ != null;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       * @return The variables.
       */
      public Messages.Concept.Variables getVariables() {
        if (variablesBuilder_ == null) {
          return variables_ == null ? Messages.Concept.Variables.getDefaultInstance() : variables_;
        } else {
          return variablesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       */
      public Builder setVariables(Messages.Concept.Variables value) {
        if (variablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          variables_ = value;
          onChanged();
        } else {
          variablesBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       */
      public Builder setVariables(
          Messages.Concept.Variables.Builder builderForValue) {
        if (variablesBuilder_ == null) {
          variables_ = builderForValue.build();
          onChanged();
        } else {
          variablesBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       */
      public Builder mergeVariables(Messages.Concept.Variables value) {
        if (variablesBuilder_ == null) {
          if (variables_ != null) {
            variables_ =
              Messages.Concept.Variables.newBuilder(variables_).mergeFrom(value).buildPartial();
          } else {
            variables_ = value;
          }
          onChanged();
        } else {
          variablesBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       */
      public Builder clearVariables() {
        if (variablesBuilder_ == null) {
          variables_ = null;
          onChanged();
        } else {
          variables_ = null;
          variablesBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       */
      public Messages.Concept.Variables.Builder getVariablesBuilder() {
        
        onChanged();
        return getVariablesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       */
      public Messages.Concept.VariablesOrBuilder getVariablesOrBuilder() {
        if (variablesBuilder_ != null) {
          return variablesBuilder_.getMessageOrBuilder();
        } else {
          return variables_ == null ?
              Messages.Concept.Variables.getDefaultInstance() : variables_;
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Variables variables = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Concept.Variables, Messages.Concept.Variables.Builder, Messages.Concept.VariablesOrBuilder> 
          getVariablesFieldBuilder() {
        if (variablesBuilder_ == null) {
          variablesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Concept.Variables, Messages.Concept.Variables.Builder, Messages.Concept.VariablesOrBuilder>(
                  getVariables(),
                  getParentForChildren(),
                  isClean());
          variables_ = null;
        }
        return variablesBuilder_;
      }

      private java.util.List<Messages.Concept.Command> sequence_ =
        java.util.Collections.emptyList();
      private void ensureSequenceIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sequence_ = new java.util.ArrayList<Messages.Concept.Command>(sequence_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder> sequenceBuilder_;

      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public java.util.List<Messages.Concept.Command> getSequenceList() {
        if (sequenceBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sequence_);
        } else {
          return sequenceBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public int getSequenceCount() {
        if (sequenceBuilder_ == null) {
          return sequence_.size();
        } else {
          return sequenceBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Messages.Concept.Command getSequence(int index) {
        if (sequenceBuilder_ == null) {
          return sequence_.get(index);
        } else {
          return sequenceBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder setSequence(
          int index, Messages.Concept.Command value) {
        if (sequenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSequenceIsMutable();
          sequence_.set(index, value);
          onChanged();
        } else {
          sequenceBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder setSequence(
          int index, Messages.Concept.Command.Builder builderForValue) {
        if (sequenceBuilder_ == null) {
          ensureSequenceIsMutable();
          sequence_.set(index, builderForValue.build());
          onChanged();
        } else {
          sequenceBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder addSequence(Messages.Concept.Command value) {
        if (sequenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSequenceIsMutable();
          sequence_.add(value);
          onChanged();
        } else {
          sequenceBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder addSequence(
          int index, Messages.Concept.Command value) {
        if (sequenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSequenceIsMutable();
          sequence_.add(index, value);
          onChanged();
        } else {
          sequenceBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder addSequence(
          Messages.Concept.Command.Builder builderForValue) {
        if (sequenceBuilder_ == null) {
          ensureSequenceIsMutable();
          sequence_.add(builderForValue.build());
          onChanged();
        } else {
          sequenceBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder addSequence(
          int index, Messages.Concept.Command.Builder builderForValue) {
        if (sequenceBuilder_ == null) {
          ensureSequenceIsMutable();
          sequence_.add(index, builderForValue.build());
          onChanged();
        } else {
          sequenceBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder addAllSequence(
          java.lang.Iterable<? extends Messages.Concept.Command> values) {
        if (sequenceBuilder_ == null) {
          ensureSequenceIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sequence_);
          onChanged();
        } else {
          sequenceBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder clearSequence() {
        if (sequenceBuilder_ == null) {
          sequence_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          sequenceBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Builder removeSequence(int index) {
        if (sequenceBuilder_ == null) {
          ensureSequenceIsMutable();
          sequence_.remove(index);
          onChanged();
        } else {
          sequenceBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Messages.Concept.Command.Builder getSequenceBuilder(
          int index) {
        return getSequenceFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Messages.Concept.CommandOrBuilder getSequenceOrBuilder(
          int index) {
        if (sequenceBuilder_ == null) {
          return sequence_.get(index);  } else {
          return sequenceBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public java.util.List<? extends Messages.Concept.CommandOrBuilder> 
           getSequenceOrBuilderList() {
        if (sequenceBuilder_ != null) {
          return sequenceBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sequence_);
        }
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Messages.Concept.Command.Builder addSequenceBuilder() {
        return getSequenceFieldBuilder().addBuilder(
            Messages.Concept.Command.getDefaultInstance());
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public Messages.Concept.Command.Builder addSequenceBuilder(
          int index) {
        return getSequenceFieldBuilder().addBuilder(
            index, Messages.Concept.Command.getDefaultInstance());
      }
      /**
       * <pre>
       *reserved  
       * </pre>
       *
       * <code>repeated .Messages.Command Sequence = 12;</code>
       */
      public java.util.List<Messages.Concept.Command.Builder> 
           getSequenceBuilderList() {
        return getSequenceFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder> 
          getSequenceFieldBuilder() {
        if (sequenceBuilder_ == null) {
          sequenceBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder>(
                  sequence_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sequence_ = null;
        }
        return sequenceBuilder_;
      }

      private Messages.Concept.Script before_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder> beforeBuilder_;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       * @return Whether the before field is set.
       */
      public boolean hasBefore() {
        return beforeBuilder_ != null || before_ != null;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       * @return The before.
       */
      public Messages.Concept.Script getBefore() {
        if (beforeBuilder_ == null) {
          return before_ == null ? Messages.Concept.Script.getDefaultInstance() : before_;
        } else {
          return beforeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       */
      public Builder setBefore(Messages.Concept.Script value) {
        if (beforeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          before_ = value;
          onChanged();
        } else {
          beforeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       */
      public Builder setBefore(
          Messages.Concept.Script.Builder builderForValue) {
        if (beforeBuilder_ == null) {
          before_ = builderForValue.build();
          onChanged();
        } else {
          beforeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       */
      public Builder mergeBefore(Messages.Concept.Script value) {
        if (beforeBuilder_ == null) {
          if (before_ != null) {
            before_ =
              Messages.Concept.Script.newBuilder(before_).mergeFrom(value).buildPartial();
          } else {
            before_ = value;
          }
          onChanged();
        } else {
          beforeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       */
      public Builder clearBefore() {
        if (beforeBuilder_ == null) {
          before_ = null;
          onChanged();
        } else {
          before_ = null;
          beforeBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       */
      public Messages.Concept.Script.Builder getBeforeBuilder() {
        
        onChanged();
        return getBeforeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       */
      public Messages.Concept.ScriptOrBuilder getBeforeOrBuilder() {
        if (beforeBuilder_ != null) {
          return beforeBuilder_.getMessageOrBuilder();
        } else {
          return before_ == null ?
              Messages.Concept.Script.getDefaultInstance() : before_;
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.Script before = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder> 
          getBeforeFieldBuilder() {
        if (beforeBuilder_ == null) {
          beforeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder>(
                  getBefore(),
                  getParentForChildren(),
                  isClean());
          before_ = null;
        }
        return beforeBuilder_;
      }

      private Messages.Concept.Script after_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder> afterBuilder_;
      /**
       * <code>.Messages.Script after = 15;</code>
       * @return Whether the after field is set.
       */
      public boolean hasAfter() {
        return afterBuilder_ != null || after_ != null;
      }
      /**
       * <code>.Messages.Script after = 15;</code>
       * @return The after.
       */
      public Messages.Concept.Script getAfter() {
        if (afterBuilder_ == null) {
          return after_ == null ? Messages.Concept.Script.getDefaultInstance() : after_;
        } else {
          return afterBuilder_.getMessage();
        }
      }
      /**
       * <code>.Messages.Script after = 15;</code>
       */
      public Builder setAfter(Messages.Concept.Script value) {
        if (afterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          after_ = value;
          onChanged();
        } else {
          afterBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Script after = 15;</code>
       */
      public Builder setAfter(
          Messages.Concept.Script.Builder builderForValue) {
        if (afterBuilder_ == null) {
          after_ = builderForValue.build();
          onChanged();
        } else {
          afterBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Messages.Script after = 15;</code>
       */
      public Builder mergeAfter(Messages.Concept.Script value) {
        if (afterBuilder_ == null) {
          if (after_ != null) {
            after_ =
              Messages.Concept.Script.newBuilder(after_).mergeFrom(value).buildPartial();
          } else {
            after_ = value;
          }
          onChanged();
        } else {
          afterBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Script after = 15;</code>
       */
      public Builder clearAfter() {
        if (afterBuilder_ == null) {
          after_ = null;
          onChanged();
        } else {
          after_ = null;
          afterBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Messages.Script after = 15;</code>
       */
      public Messages.Concept.Script.Builder getAfterBuilder() {
        
        onChanged();
        return getAfterFieldBuilder().getBuilder();
      }
      /**
       * <code>.Messages.Script after = 15;</code>
       */
      public Messages.Concept.ScriptOrBuilder getAfterOrBuilder() {
        if (afterBuilder_ != null) {
          return afterBuilder_.getMessageOrBuilder();
        } else {
          return after_ == null ?
              Messages.Concept.Script.getDefaultInstance() : after_;
        }
      }
      /**
       * <code>.Messages.Script after = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder> 
          getAfterFieldBuilder() {
        if (afterBuilder_ == null) {
          afterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder>(
                  getAfter(),
                  getParentForChildren(),
                  isClean());
          after_ = null;
        }
        return afterBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Script)
    }

    // @@protoc_insertion_point(class_scope:Messages.Script)
    private static final Messages.Concept.Script DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Concept.Script();
    }

    public static Messages.Concept.Script getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Script>
        PARSER = new com.google.protobuf.AbstractParser<Script>() {
      @java.lang.Override
      public Script parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public Messages.Concept.Script getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Model)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string dofs = 3;</code>
     * @return A list containing the dofs.
     */
    java.util.List<java.lang.String>
        getDofsList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string dofs = 3;</code>
     * @return The count of dofs.
     */
    int getDofsCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string dofs = 3;</code>
     * @param index The index of the element to return.
     * @return The dofs at the given index.
     */
    java.lang.String getDofs(int index);
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string dofs = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the dofs at the given index.
     */
    com.google.protobuf.ByteString
        getDofsBytes(int index);

    /**
     * <pre>
     * ordered algorithms (by name)
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @return A list containing the algorithms.
     */
    java.util.List<java.lang.String>
        getAlgorithmsList();
    /**
     * <pre>
     * ordered algorithms (by name)
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @return The count of algorithms.
     */
    int getAlgorithmsCount();
    /**
     * <pre>
     * ordered algorithms (by name)
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @param index The index of the element to return.
     * @return The algorithms at the given index.
     */
    java.lang.String getAlgorithms(int index);
    /**
     * <pre>
     * ordered algorithms (by name)
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the algorithms at the given index.
     */
    com.google.protobuf.ByteString
        getAlgorithmsBytes(int index);

    /**
     * <pre>
     * serialized property-keys
     * </pre>
     *
     * <code>repeated string available_outputs = 5;</code>
     * @return A list containing the availableOutputs.
     */
    java.util.List<java.lang.String>
        getAvailableOutputsList();
    /**
     * <pre>
     * serialized property-keys
     * </pre>
     *
     * <code>repeated string available_outputs = 5;</code>
     * @return The count of availableOutputs.
     */
    int getAvailableOutputsCount();
    /**
     * <pre>
     * serialized property-keys
     * </pre>
     *
     * <code>repeated string available_outputs = 5;</code>
     * @param index The index of the element to return.
     * @return The availableOutputs at the given index.
     */
    java.lang.String getAvailableOutputs(int index);
    /**
     * <pre>
     * serialized property-keys
     * </pre>
     *
     * <code>repeated string available_outputs = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the availableOutputs at the given index.
     */
    com.google.protobuf.ByteString
        getAvailableOutputsBytes(int index);

    /**
     * <pre>
     * some pk's are not recorded by default as an optimization. they can be added
     * </pre>
     *
     * <code>repeated string extra_properties = 6;</code>
     * @return A list containing the extraProperties.
     */
    java.util.List<java.lang.String>
        getExtraPropertiesList();
    /**
     * <pre>
     * some pk's are not recorded by default as an optimization. they can be added
     * </pre>
     *
     * <code>repeated string extra_properties = 6;</code>
     * @return The count of extraProperties.
     */
    int getExtraPropertiesCount();
    /**
     * <pre>
     * some pk's are not recorded by default as an optimization. they can be added
     * </pre>
     *
     * <code>repeated string extra_properties = 6;</code>
     * @param index The index of the element to return.
     * @return The extraProperties at the given index.
     */
    java.lang.String getExtraProperties(int index);
    /**
     * <pre>
     * some pk's are not recorded by default as an optimization. they can be added
     * </pre>
     *
     * <code>repeated string extra_properties = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the extraProperties at the given index.
     */
    com.google.protobuf.ByteString
        getExtraPropertiesBytes(int index);

    /**
     * <pre>
     * relevant algorithm/function names that are applied to one ore more regions or initialize
     * </pre>
     *
     * <code>repeated string compatible_conditions = 7;</code>
     * @return A list containing the compatibleConditions.
     */
    java.util.List<java.lang.String>
        getCompatibleConditionsList();
    /**
     * <pre>
     * relevant algorithm/function names that are applied to one ore more regions or initialize
     * </pre>
     *
     * <code>repeated string compatible_conditions = 7;</code>
     * @return The count of compatibleConditions.
     */
    int getCompatibleConditionsCount();
    /**
     * <pre>
     * relevant algorithm/function names that are applied to one ore more regions or initialize
     * </pre>
     *
     * <code>repeated string compatible_conditions = 7;</code>
     * @param index The index of the element to return.
     * @return The compatibleConditions at the given index.
     */
    java.lang.String getCompatibleConditions(int index);
    /**
     * <pre>
     * relevant algorithm/function names that are applied to one ore more regions or initialize
     * </pre>
     *
     * <code>repeated string compatible_conditions = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the compatibleConditions at the given index.
     */
    com.google.protobuf.ByteString
        getCompatibleConditionsBytes(int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    java.util.List<Messages.Concept.Model> 
        getSubModelsList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    Messages.Concept.Model getSubModels(int index);
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    int getSubModelsCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    java.util.List<? extends Messages.Concept.ModelOrBuilder> 
        getSubModelsOrBuilderList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    Messages.Concept.ModelOrBuilder getSubModelsOrBuilder(
        int index);

    /**
     * <pre>
     * default constants, unless otherwise specified (by region)
     * </pre>
     *
     * <code>.Messages.Record64 default_data = 10;</code>
     * @return Whether the defaultData field is set.
     */
    boolean hasDefaultData();
    /**
     * <pre>
     * default constants, unless otherwise specified (by region)
     * </pre>
     *
     * <code>.Messages.Record64 default_data = 10;</code>
     * @return The defaultData.
     */
    Messages.Vector.Record64 getDefaultData();
    /**
     * <pre>
     * default constants, unless otherwise specified (by region)
     * </pre>
     *
     * <code>.Messages.Record64 default_data = 10;</code>
     */
    Messages.Vector.Record64OrBuilder getDefaultDataOrBuilder();

    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    java.util.List<Messages.Vector.Rule> 
        getRulesList();
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    Messages.Vector.Rule getRules(int index);
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    int getRulesCount();
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    java.util.List<? extends Messages.Vector.RuleOrBuilder> 
        getRulesOrBuilderList();
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    Messages.Vector.RuleOrBuilder getRulesOrBuilder(
        int index);

    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    java.util.List<Messages.Vector.Rule> 
        getMutexStackList();
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    Messages.Vector.Rule getMutexStack(int index);
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    int getMutexStackCount();
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    java.util.List<? extends Messages.Vector.RuleOrBuilder> 
        getMutexStackOrBuilderList();
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    Messages.Vector.RuleOrBuilder getMutexStackOrBuilder(
        int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
     * @return Whether the markovMatrix field is set.
     */
    boolean hasMarkovMatrix();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
     * @return The markovMatrix.
     */
    Messages.Vector.SparseMatrix getMarkovMatrix();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
     */
    Messages.Vector.SparseMatrixOrBuilder getMarkovMatrixOrBuilder();
  }
  /**
   * Protobuf type {@code Messages.Model}
   */
  public static final class Model extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Model)
      ModelOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Model.newBuilder() to construct.
    private Model(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Model() {
      name_ = "";
      dofs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      algorithms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      availableOutputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      extraProperties_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      compatibleConditions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      subModels_ = java.util.Collections.emptyList();
      rules_ = java.util.Collections.emptyList();
      mutexStack_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Model();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Concept.internal_static_Messages_Model_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Concept.internal_static_Messages_Model_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Concept.Model.class, Messages.Concept.Model.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOFS_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList dofs_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string dofs = 3;</code>
     * @return A list containing the dofs.
     */
    public com.google.protobuf.ProtocolStringList
        getDofsList() {
      return dofs_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string dofs = 3;</code>
     * @return The count of dofs.
     */
    public int getDofsCount() {
      return dofs_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string dofs = 3;</code>
     * @param index The index of the element to return.
     * @return The dofs at the given index.
     */
    public java.lang.String getDofs(int index) {
      return dofs_.get(index);
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated string dofs = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the dofs at the given index.
     */
    public com.google.protobuf.ByteString
        getDofsBytes(int index) {
      return dofs_.getByteString(index);
    }

    public static final int ALGORITHMS_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList algorithms_;
    /**
     * <pre>
     * ordered algorithms (by name)
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @return A list containing the algorithms.
     */
    public com.google.protobuf.ProtocolStringList
        getAlgorithmsList() {
      return algorithms_;
    }
    /**
     * <pre>
     * ordered algorithms (by name)
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @return The count of algorithms.
     */
    public int getAlgorithmsCount() {
      return algorithms_.size();
    }
    /**
     * <pre>
     * ordered algorithms (by name)
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @param index The index of the element to return.
     * @return The algorithms at the given index.
     */
    public java.lang.String getAlgorithms(int index) {
      return algorithms_.get(index);
    }
    /**
     * <pre>
     * ordered algorithms (by name)
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the algorithms at the given index.
     */
    public com.google.protobuf.ByteString
        getAlgorithmsBytes(int index) {
      return algorithms_.getByteString(index);
    }

    public static final int AVAILABLE_OUTPUTS_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList availableOutputs_;
    /**
     * <pre>
     * serialized property-keys
     * </pre>
     *
     * <code>repeated string available_outputs = 5;</code>
     * @return A list containing the availableOutputs.
     */
    public com.google.protobuf.ProtocolStringList
        getAvailableOutputsList() {
      return availableOutputs_;
    }
    /**
     * <pre>
     * serialized property-keys
     * </pre>
     *
     * <code>repeated string available_outputs = 5;</code>
     * @return The count of availableOutputs.
     */
    public int getAvailableOutputsCount() {
      return availableOutputs_.size();
    }
    /**
     * <pre>
     * serialized property-keys
     * </pre>
     *
     * <code>repeated string available_outputs = 5;</code>
     * @param index The index of the element to return.
     * @return The availableOutputs at the given index.
     */
    public java.lang.String getAvailableOutputs(int index) {
      return availableOutputs_.get(index);
    }
    /**
     * <pre>
     * serialized property-keys
     * </pre>
     *
     * <code>repeated string available_outputs = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the availableOutputs at the given index.
     */
    public com.google.protobuf.ByteString
        getAvailableOutputsBytes(int index) {
      return availableOutputs_.getByteString(index);
    }

    public static final int EXTRA_PROPERTIES_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList extraProperties_;
    /**
     * <pre>
     * some pk's are not recorded by default as an optimization. they can be added
     * </pre>
     *
     * <code>repeated string extra_properties = 6;</code>
     * @return A list containing the extraProperties.
     */
    public com.google.protobuf.ProtocolStringList
        getExtraPropertiesList() {
      return extraProperties_;
    }
    /**
     * <pre>
     * some pk's are not recorded by default as an optimization. they can be added
     * </pre>
     *
     * <code>repeated string extra_properties = 6;</code>
     * @return The count of extraProperties.
     */
    public int getExtraPropertiesCount() {
      return extraProperties_.size();
    }
    /**
     * <pre>
     * some pk's are not recorded by default as an optimization. they can be added
     * </pre>
     *
     * <code>repeated string extra_properties = 6;</code>
     * @param index The index of the element to return.
     * @return The extraProperties at the given index.
     */
    public java.lang.String getExtraProperties(int index) {
      return extraProperties_.get(index);
    }
    /**
     * <pre>
     * some pk's are not recorded by default as an optimization. they can be added
     * </pre>
     *
     * <code>repeated string extra_properties = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the extraProperties at the given index.
     */
    public com.google.protobuf.ByteString
        getExtraPropertiesBytes(int index) {
      return extraProperties_.getByteString(index);
    }

    public static final int COMPATIBLE_CONDITIONS_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList compatibleConditions_;
    /**
     * <pre>
     * relevant algorithm/function names that are applied to one ore more regions or initialize
     * </pre>
     *
     * <code>repeated string compatible_conditions = 7;</code>
     * @return A list containing the compatibleConditions.
     */
    public com.google.protobuf.ProtocolStringList
        getCompatibleConditionsList() {
      return compatibleConditions_;
    }
    /**
     * <pre>
     * relevant algorithm/function names that are applied to one ore more regions or initialize
     * </pre>
     *
     * <code>repeated string compatible_conditions = 7;</code>
     * @return The count of compatibleConditions.
     */
    public int getCompatibleConditionsCount() {
      return compatibleConditions_.size();
    }
    /**
     * <pre>
     * relevant algorithm/function names that are applied to one ore more regions or initialize
     * </pre>
     *
     * <code>repeated string compatible_conditions = 7;</code>
     * @param index The index of the element to return.
     * @return The compatibleConditions at the given index.
     */
    public java.lang.String getCompatibleConditions(int index) {
      return compatibleConditions_.get(index);
    }
    /**
     * <pre>
     * relevant algorithm/function names that are applied to one ore more regions or initialize
     * </pre>
     *
     * <code>repeated string compatible_conditions = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the compatibleConditions at the given index.
     */
    public com.google.protobuf.ByteString
        getCompatibleConditionsBytes(int index) {
      return compatibleConditions_.getByteString(index);
    }

    public static final int SUB_MODELS_FIELD_NUMBER = 9;
    private java.util.List<Messages.Concept.Model> subModels_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Concept.Model> getSubModelsList() {
      return subModels_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Concept.ModelOrBuilder> 
        getSubModelsOrBuilderList() {
      return subModels_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    @java.lang.Override
    public int getSubModelsCount() {
      return subModels_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    @java.lang.Override
    public Messages.Concept.Model getSubModels(int index) {
      return subModels_.get(index);
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated .Messages.Model sub_models = 9;</code>
     */
    @java.lang.Override
    public Messages.Concept.ModelOrBuilder getSubModelsOrBuilder(
        int index) {
      return subModels_.get(index);
    }

    public static final int DEFAULT_DATA_FIELD_NUMBER = 10;
    private Messages.Vector.Record64 defaultData_;
    /**
     * <pre>
     * default constants, unless otherwise specified (by region)
     * </pre>
     *
     * <code>.Messages.Record64 default_data = 10;</code>
     * @return Whether the defaultData field is set.
     */
    @java.lang.Override
    public boolean hasDefaultData() {
      return defaultData_ != null;
    }
    /**
     * <pre>
     * default constants, unless otherwise specified (by region)
     * </pre>
     *
     * <code>.Messages.Record64 default_data = 10;</code>
     * @return The defaultData.
     */
    @java.lang.Override
    public Messages.Vector.Record64 getDefaultData() {
      return defaultData_ == null ? Messages.Vector.Record64.getDefaultInstance() : defaultData_;
    }
    /**
     * <pre>
     * default constants, unless otherwise specified (by region)
     * </pre>
     *
     * <code>.Messages.Record64 default_data = 10;</code>
     */
    @java.lang.Override
    public Messages.Vector.Record64OrBuilder getDefaultDataOrBuilder() {
      return getDefaultData();
    }

    public static final int RULES_FIELD_NUMBER = 11;
    private java.util.List<Messages.Vector.Rule> rules_;
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Vector.Rule> getRulesList() {
      return rules_;
    }
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Vector.RuleOrBuilder> 
        getRulesOrBuilderList() {
      return rules_;
    }
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    @java.lang.Override
    public int getRulesCount() {
      return rules_.size();
    }
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    @java.lang.Override
    public Messages.Vector.Rule getRules(int index) {
      return rules_.get(index);
    }
    /**
     * <pre>
     * how each PK can be calculated (by algorithm name)
     * </pre>
     *
     * <code>repeated .Messages.Rule rules = 11;</code>
     */
    @java.lang.Override
    public Messages.Vector.RuleOrBuilder getRulesOrBuilder(
        int index) {
      return rules_.get(index);
    }

    public static final int MUTEX_STACK_FIELD_NUMBER = 12;
    private java.util.List<Messages.Vector.Rule> mutexStack_;
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Vector.Rule> getMutexStackList() {
      return mutexStack_;
    }
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Vector.RuleOrBuilder> 
        getMutexStackOrBuilderList() {
      return mutexStack_;
    }
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    @java.lang.Override
    public int getMutexStackCount() {
      return mutexStack_.size();
    }
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    @java.lang.Override
    public Messages.Vector.Rule getMutexStack(int index) {
      return mutexStack_.get(index);
    }
    /**
     * <code>repeated .Messages.Rule mutex_stack = 12;</code>
     */
    @java.lang.Override
    public Messages.Vector.RuleOrBuilder getMutexStackOrBuilder(
        int index) {
      return mutexStack_.get(index);
    }

    public static final int MARKOV_MATRIX_FIELD_NUMBER = 15;
    private Messages.Vector.SparseMatrix markovMatrix_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
     * @return Whether the markovMatrix field is set.
     */
    @java.lang.Override
    public boolean hasMarkovMatrix() {
      return markovMatrix_ != null;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
     * @return The markovMatrix.
     */
    @java.lang.Override
    public Messages.Vector.SparseMatrix getMarkovMatrix() {
      return markovMatrix_ == null ? Messages.Vector.SparseMatrix.getDefaultInstance() : markovMatrix_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
     */
    @java.lang.Override
    public Messages.Vector.SparseMatrixOrBuilder getMarkovMatrixOrBuilder() {
      return getMarkovMatrix();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < dofs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dofs_.getRaw(i));
      }
      for (int i = 0; i < algorithms_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, algorithms_.getRaw(i));
      }
      for (int i = 0; i < availableOutputs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, availableOutputs_.getRaw(i));
      }
      for (int i = 0; i < extraProperties_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, extraProperties_.getRaw(i));
      }
      for (int i = 0; i < compatibleConditions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, compatibleConditions_.getRaw(i));
      }
      for (int i = 0; i < subModels_.size(); i++) {
        output.writeMessage(9, subModels_.get(i));
      }
      if (defaultData_ != null) {
        output.writeMessage(10, getDefaultData());
      }
      for (int i = 0; i < rules_.size(); i++) {
        output.writeMessage(11, rules_.get(i));
      }
      for (int i = 0; i < mutexStack_.size(); i++) {
        output.writeMessage(12, mutexStack_.get(i));
      }
      if (markovMatrix_ != null) {
        output.writeMessage(15, getMarkovMatrix());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < dofs_.size(); i++) {
          dataSize += computeStringSizeNoTag(dofs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDofsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < algorithms_.size(); i++) {
          dataSize += computeStringSizeNoTag(algorithms_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAlgorithmsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < availableOutputs_.size(); i++) {
          dataSize += computeStringSizeNoTag(availableOutputs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAvailableOutputsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < extraProperties_.size(); i++) {
          dataSize += computeStringSizeNoTag(extraProperties_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExtraPropertiesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < compatibleConditions_.size(); i++) {
          dataSize += computeStringSizeNoTag(compatibleConditions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCompatibleConditionsList().size();
      }
      for (int i = 0; i < subModels_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, subModels_.get(i));
      }
      if (defaultData_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getDefaultData());
      }
      for (int i = 0; i < rules_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, rules_.get(i));
      }
      for (int i = 0; i < mutexStack_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, mutexStack_.get(i));
      }
      if (markovMatrix_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, getMarkovMatrix());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Concept.Model)) {
        return super.equals(obj);
      }
      Messages.Concept.Model other = (Messages.Concept.Model) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getDofsList()
          .equals(other.getDofsList())) return false;
      if (!getAlgorithmsList()
          .equals(other.getAlgorithmsList())) return false;
      if (!getAvailableOutputsList()
          .equals(other.getAvailableOutputsList())) return false;
      if (!getExtraPropertiesList()
          .equals(other.getExtraPropertiesList())) return false;
      if (!getCompatibleConditionsList()
          .equals(other.getCompatibleConditionsList())) return false;
      if (!getSubModelsList()
          .equals(other.getSubModelsList())) return false;
      if (hasDefaultData() != other.hasDefaultData()) return false;
      if (hasDefaultData()) {
        if (!getDefaultData()
            .equals(other.getDefaultData())) return false;
      }
      if (!getRulesList()
          .equals(other.getRulesList())) return false;
      if (!getMutexStackList()
          .equals(other.getMutexStackList())) return false;
      if (hasMarkovMatrix() != other.hasMarkovMatrix()) return false;
      if (hasMarkovMatrix()) {
        if (!getMarkovMatrix()
            .equals(other.getMarkovMatrix())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getDofsCount() > 0) {
        hash = (37 * hash) + DOFS_FIELD_NUMBER;
        hash = (53 * hash) + getDofsList().hashCode();
      }
      if (getAlgorithmsCount() > 0) {
        hash = (37 * hash) + ALGORITHMS_FIELD_NUMBER;
        hash = (53 * hash) + getAlgorithmsList().hashCode();
      }
      if (getAvailableOutputsCount() > 0) {
        hash = (37 * hash) + AVAILABLE_OUTPUTS_FIELD_NUMBER;
        hash = (53 * hash) + getAvailableOutputsList().hashCode();
      }
      if (getExtraPropertiesCount() > 0) {
        hash = (37 * hash) + EXTRA_PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + getExtraPropertiesList().hashCode();
      }
      if (getCompatibleConditionsCount() > 0) {
        hash = (37 * hash) + COMPATIBLE_CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getCompatibleConditionsList().hashCode();
      }
      if (getSubModelsCount() > 0) {
        hash = (37 * hash) + SUB_MODELS_FIELD_NUMBER;
        hash = (53 * hash) + getSubModelsList().hashCode();
      }
      if (hasDefaultData()) {
        hash = (37 * hash) + DEFAULT_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultData().hashCode();
      }
      if (getRulesCount() > 0) {
        hash = (37 * hash) + RULES_FIELD_NUMBER;
        hash = (53 * hash) + getRulesList().hashCode();
      }
      if (getMutexStackCount() > 0) {
        hash = (37 * hash) + MUTEX_STACK_FIELD_NUMBER;
        hash = (53 * hash) + getMutexStackList().hashCode();
      }
      if (hasMarkovMatrix()) {
        hash = (37 * hash) + MARKOV_MATRIX_FIELD_NUMBER;
        hash = (53 * hash) + getMarkovMatrix().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Messages.Concept.Model parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Model parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Model parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Model parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Model parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Model parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Model parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Model parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Model parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Messages.Concept.Model parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Model parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Model parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Concept.Model prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Model}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Model)
        Messages.Concept.ModelOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Concept.internal_static_Messages_Model_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Concept.internal_static_Messages_Model_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Concept.Model.class, Messages.Concept.Model.Builder.class);
      }

      // Construct using Messages.Concept.Model.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        dofs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        algorithms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        availableOutputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        extraProperties_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        compatibleConditions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        if (subModelsBuilder_ == null) {
          subModels_ = java.util.Collections.emptyList();
        } else {
          subModels_ = null;
          subModelsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (defaultDataBuilder_ == null) {
          defaultData_ = null;
        } else {
          defaultData_ = null;
          defaultDataBuilder_ = null;
        }
        if (rulesBuilder_ == null) {
          rules_ = java.util.Collections.emptyList();
        } else {
          rules_ = null;
          rulesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (mutexStackBuilder_ == null) {
          mutexStack_ = java.util.Collections.emptyList();
        } else {
          mutexStack_ = null;
          mutexStackBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (markovMatrixBuilder_ == null) {
          markovMatrix_ = null;
        } else {
          markovMatrix_ = null;
          markovMatrixBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Concept.internal_static_Messages_Model_descriptor;
      }

      @java.lang.Override
      public Messages.Concept.Model getDefaultInstanceForType() {
        return Messages.Concept.Model.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Concept.Model build() {
        Messages.Concept.Model result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Concept.Model buildPartial() {
        Messages.Concept.Model result = new Messages.Concept.Model(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (((bitField0_ & 0x00000001) != 0)) {
          dofs_ = dofs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.dofs_ = dofs_;
        if (((bitField0_ & 0x00000002) != 0)) {
          algorithms_ = algorithms_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.algorithms_ = algorithms_;
        if (((bitField0_ & 0x00000004) != 0)) {
          availableOutputs_ = availableOutputs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.availableOutputs_ = availableOutputs_;
        if (((bitField0_ & 0x00000008) != 0)) {
          extraProperties_ = extraProperties_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.extraProperties_ = extraProperties_;
        if (((bitField0_ & 0x00000010) != 0)) {
          compatibleConditions_ = compatibleConditions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.compatibleConditions_ = compatibleConditions_;
        if (subModelsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            subModels_ = java.util.Collections.unmodifiableList(subModels_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.subModels_ = subModels_;
        } else {
          result.subModels_ = subModelsBuilder_.build();
        }
        if (defaultDataBuilder_ == null) {
          result.defaultData_ = defaultData_;
        } else {
          result.defaultData_ = defaultDataBuilder_.build();
        }
        if (rulesBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            rules_ = java.util.Collections.unmodifiableList(rules_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.rules_ = rules_;
        } else {
          result.rules_ = rulesBuilder_.build();
        }
        if (mutexStackBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            mutexStack_ = java.util.Collections.unmodifiableList(mutexStack_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.mutexStack_ = mutexStack_;
        } else {
          result.mutexStack_ = mutexStackBuilder_.build();
        }
        if (markovMatrixBuilder_ == null) {
          result.markovMatrix_ = markovMatrix_;
        } else {
          result.markovMatrix_ = markovMatrixBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Messages.Concept.Model) {
          return mergeFrom((Messages.Concept.Model)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Messages.Concept.Model other) {
        if (other == Messages.Concept.Model.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.dofs_.isEmpty()) {
          if (dofs_.isEmpty()) {
            dofs_ = other.dofs_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDofsIsMutable();
            dofs_.addAll(other.dofs_);
          }
          onChanged();
        }
        if (!other.algorithms_.isEmpty()) {
          if (algorithms_.isEmpty()) {
            algorithms_ = other.algorithms_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureAlgorithmsIsMutable();
            algorithms_.addAll(other.algorithms_);
          }
          onChanged();
        }
        if (!other.availableOutputs_.isEmpty()) {
          if (availableOutputs_.isEmpty()) {
            availableOutputs_ = other.availableOutputs_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureAvailableOutputsIsMutable();
            availableOutputs_.addAll(other.availableOutputs_);
          }
          onChanged();
        }
        if (!other.extraProperties_.isEmpty()) {
          if (extraProperties_.isEmpty()) {
            extraProperties_ = other.extraProperties_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureExtraPropertiesIsMutable();
            extraProperties_.addAll(other.extraProperties_);
          }
          onChanged();
        }
        if (!other.compatibleConditions_.isEmpty()) {
          if (compatibleConditions_.isEmpty()) {
            compatibleConditions_ = other.compatibleConditions_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureCompatibleConditionsIsMutable();
            compatibleConditions_.addAll(other.compatibleConditions_);
          }
          onChanged();
        }
        if (subModelsBuilder_ == null) {
          if (!other.subModels_.isEmpty()) {
            if (subModels_.isEmpty()) {
              subModels_ = other.subModels_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureSubModelsIsMutable();
              subModels_.addAll(other.subModels_);
            }
            onChanged();
          }
        } else {
          if (!other.subModels_.isEmpty()) {
            if (subModelsBuilder_.isEmpty()) {
              subModelsBuilder_.dispose();
              subModelsBuilder_ = null;
              subModels_ = other.subModels_;
              bitField0_ = (bitField0_ & ~0x00000020);
              subModelsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSubModelsFieldBuilder() : null;
            } else {
              subModelsBuilder_.addAllMessages(other.subModels_);
            }
          }
        }
        if (other.hasDefaultData()) {
          mergeDefaultData(other.getDefaultData());
        }
        if (rulesBuilder_ == null) {
          if (!other.rules_.isEmpty()) {
            if (rules_.isEmpty()) {
              rules_ = other.rules_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureRulesIsMutable();
              rules_.addAll(other.rules_);
            }
            onChanged();
          }
        } else {
          if (!other.rules_.isEmpty()) {
            if (rulesBuilder_.isEmpty()) {
              rulesBuilder_.dispose();
              rulesBuilder_ = null;
              rules_ = other.rules_;
              bitField0_ = (bitField0_ & ~0x00000040);
              rulesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRulesFieldBuilder() : null;
            } else {
              rulesBuilder_.addAllMessages(other.rules_);
            }
          }
        }
        if (mutexStackBuilder_ == null) {
          if (!other.mutexStack_.isEmpty()) {
            if (mutexStack_.isEmpty()) {
              mutexStack_ = other.mutexStack_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureMutexStackIsMutable();
              mutexStack_.addAll(other.mutexStack_);
            }
            onChanged();
          }
        } else {
          if (!other.mutexStack_.isEmpty()) {
            if (mutexStackBuilder_.isEmpty()) {
              mutexStackBuilder_.dispose();
              mutexStackBuilder_ = null;
              mutexStack_ = other.mutexStack_;
              bitField0_ = (bitField0_ & ~0x00000080);
              mutexStackBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMutexStackFieldBuilder() : null;
            } else {
              mutexStackBuilder_.addAllMessages(other.mutexStack_);
            }
          }
        }
        if (other.hasMarkovMatrix()) {
          mergeMarkovMatrix(other.getMarkovMatrix());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureDofsIsMutable();
                dofs_.add(s);
                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureAlgorithmsIsMutable();
                algorithms_.add(s);
                break;
              } // case 34
              case 42: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureAvailableOutputsIsMutable();
                availableOutputs_.add(s);
                break;
              } // case 42
              case 50: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureExtraPropertiesIsMutable();
                extraProperties_.add(s);
                break;
              } // case 50
              case 58: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureCompatibleConditionsIsMutable();
                compatibleConditions_.add(s);
                break;
              } // case 58
              case 74: {
                Messages.Concept.Model m =
                    input.readMessage(
                        Messages.Concept.Model.parser(),
                        extensionRegistry);
                if (subModelsBuilder_ == null) {
                  ensureSubModelsIsMutable();
                  subModels_.add(m);
                } else {
                  subModelsBuilder_.addMessage(m);
                }
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getDefaultDataFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 82
              case 90: {
                Messages.Vector.Rule m =
                    input.readMessage(
                        Messages.Vector.Rule.parser(),
                        extensionRegistry);
                if (rulesBuilder_ == null) {
                  ensureRulesIsMutable();
                  rules_.add(m);
                } else {
                  rulesBuilder_.addMessage(m);
                }
                break;
              } // case 90
              case 98: {
                Messages.Vector.Rule m =
                    input.readMessage(
                        Messages.Vector.Rule.parser(),
                        extensionRegistry);
                if (mutexStackBuilder_ == null) {
                  ensureMutexStackIsMutable();
                  mutexStack_.add(m);
                } else {
                  mutexStackBuilder_.addMessage(m);
                }
                break;
              } // case 98
              case 122: {
                input.readMessage(
                    getMarkovMatrixFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 122
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList dofs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDofsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          dofs_ = new com.google.protobuf.LazyStringArrayList(dofs_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @return A list containing the dofs.
       */
      public com.google.protobuf.ProtocolStringList
          getDofsList() {
        return dofs_.getUnmodifiableView();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @return The count of dofs.
       */
      public int getDofsCount() {
        return dofs_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @param index The index of the element to return.
       * @return The dofs at the given index.
       */
      public java.lang.String getDofs(int index) {
        return dofs_.get(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the dofs at the given index.
       */
      public com.google.protobuf.ByteString
          getDofsBytes(int index) {
        return dofs_.getByteString(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @param index The index to set the value at.
       * @param value The dofs to set.
       * @return This builder for chaining.
       */
      public Builder setDofs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDofsIsMutable();
        dofs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @param value The dofs to add.
       * @return This builder for chaining.
       */
      public Builder addDofs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDofsIsMutable();
        dofs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @param values The dofs to add.
       * @return This builder for chaining.
       */
      public Builder addAllDofs(
          java.lang.Iterable<java.lang.String> values) {
        ensureDofsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, dofs_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDofs() {
        dofs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated string dofs = 3;</code>
       * @param value The bytes of the dofs to add.
       * @return This builder for chaining.
       */
      public Builder addDofsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDofsIsMutable();
        dofs_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList algorithms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAlgorithmsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          algorithms_ = new com.google.protobuf.LazyStringArrayList(algorithms_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @return A list containing the algorithms.
       */
      public com.google.protobuf.ProtocolStringList
          getAlgorithmsList() {
        return algorithms_.getUnmodifiableView();
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @return The count of algorithms.
       */
      public int getAlgorithmsCount() {
        return algorithms_.size();
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param index The index of the element to return.
       * @return The algorithms at the given index.
       */
      public java.lang.String getAlgorithms(int index) {
        return algorithms_.get(index);
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the algorithms at the given index.
       */
      public com.google.protobuf.ByteString
          getAlgorithmsBytes(int index) {
        return algorithms_.getByteString(index);
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param index The index to set the value at.
       * @param value The algorithms to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithms(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAlgorithmsIsMutable();
        algorithms_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param value The algorithms to add.
       * @return This builder for chaining.
       */
      public Builder addAlgorithms(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAlgorithmsIsMutable();
        algorithms_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param values The algorithms to add.
       * @return This builder for chaining.
       */
      public Builder addAllAlgorithms(
          java.lang.Iterable<java.lang.String> values) {
        ensureAlgorithmsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, algorithms_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearAlgorithms() {
        algorithms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ordered algorithms (by name)
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param value The bytes of the algorithms to add.
       * @return This builder for chaining.
       */
      public Builder addAlgorithmsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureAlgorithmsIsMutable();
        algorithms_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList availableOutputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAvailableOutputsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          availableOutputs_ = new com.google.protobuf.LazyStringArrayList(availableOutputs_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @return A list containing the availableOutputs.
       */
      public com.google.protobuf.ProtocolStringList
          getAvailableOutputsList() {
        return availableOutputs_.getUnmodifiableView();
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @return The count of availableOutputs.
       */
      public int getAvailableOutputsCount() {
        return availableOutputs_.size();
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @param index The index of the element to return.
       * @return The availableOutputs at the given index.
       */
      public java.lang.String getAvailableOutputs(int index) {
        return availableOutputs_.get(index);
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @param index The index of the value to return.
       * @return The bytes of the availableOutputs at the given index.
       */
      public com.google.protobuf.ByteString
          getAvailableOutputsBytes(int index) {
        return availableOutputs_.getByteString(index);
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @param index The index to set the value at.
       * @param value The availableOutputs to set.
       * @return This builder for chaining.
       */
      public Builder setAvailableOutputs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAvailableOutputsIsMutable();
        availableOutputs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @param value The availableOutputs to add.
       * @return This builder for chaining.
       */
      public Builder addAvailableOutputs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAvailableOutputsIsMutable();
        availableOutputs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @param values The availableOutputs to add.
       * @return This builder for chaining.
       */
      public Builder addAllAvailableOutputs(
          java.lang.Iterable<java.lang.String> values) {
        ensureAvailableOutputsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, availableOutputs_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearAvailableOutputs() {
        availableOutputs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serialized property-keys
       * </pre>
       *
       * <code>repeated string available_outputs = 5;</code>
       * @param value The bytes of the availableOutputs to add.
       * @return This builder for chaining.
       */
      public Builder addAvailableOutputsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureAvailableOutputsIsMutable();
        availableOutputs_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList extraProperties_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureExtraPropertiesIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          extraProperties_ = new com.google.protobuf.LazyStringArrayList(extraProperties_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @return A list containing the extraProperties.
       */
      public com.google.protobuf.ProtocolStringList
          getExtraPropertiesList() {
        return extraProperties_.getUnmodifiableView();
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @return The count of extraProperties.
       */
      public int getExtraPropertiesCount() {
        return extraProperties_.size();
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @param index The index of the element to return.
       * @return The extraProperties at the given index.
       */
      public java.lang.String getExtraProperties(int index) {
        return extraProperties_.get(index);
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the extraProperties at the given index.
       */
      public com.google.protobuf.ByteString
          getExtraPropertiesBytes(int index) {
        return extraProperties_.getByteString(index);
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @param index The index to set the value at.
       * @param value The extraProperties to set.
       * @return This builder for chaining.
       */
      public Builder setExtraProperties(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExtraPropertiesIsMutable();
        extraProperties_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @param value The extraProperties to add.
       * @return This builder for chaining.
       */
      public Builder addExtraProperties(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExtraPropertiesIsMutable();
        extraProperties_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @param values The extraProperties to add.
       * @return This builder for chaining.
       */
      public Builder addAllExtraProperties(
          java.lang.Iterable<java.lang.String> values) {
        ensureExtraPropertiesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, extraProperties_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtraProperties() {
        extraProperties_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * some pk's are not recorded by default as an optimization. they can be added
       * </pre>
       *
       * <code>repeated string extra_properties = 6;</code>
       * @param value The bytes of the extraProperties to add.
       * @return This builder for chaining.
       */
      public Builder addExtraPropertiesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureExtraPropertiesIsMutable();
        extraProperties_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList compatibleConditions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureCompatibleConditionsIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          compatibleConditions_ = new com.google.protobuf.LazyStringArrayList(compatibleConditions_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @return A list containing the compatibleConditions.
       */
      public com.google.protobuf.ProtocolStringList
          getCompatibleConditionsList() {
        return compatibleConditions_.getUnmodifiableView();
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @return The count of compatibleConditions.
       */
      public int getCompatibleConditionsCount() {
        return compatibleConditions_.size();
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @param index The index of the element to return.
       * @return The compatibleConditions at the given index.
       */
      public java.lang.String getCompatibleConditions(int index) {
        return compatibleConditions_.get(index);
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the compatibleConditions at the given index.
       */
      public com.google.protobuf.ByteString
          getCompatibleConditionsBytes(int index) {
        return compatibleConditions_.getByteString(index);
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @param index The index to set the value at.
       * @param value The compatibleConditions to set.
       * @return This builder for chaining.
       */
      public Builder setCompatibleConditions(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCompatibleConditionsIsMutable();
        compatibleConditions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @param value The compatibleConditions to add.
       * @return This builder for chaining.
       */
      public Builder addCompatibleConditions(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureCompatibleConditionsIsMutable();
        compatibleConditions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @param values The compatibleConditions to add.
       * @return This builder for chaining.
       */
      public Builder addAllCompatibleConditions(
          java.lang.Iterable<java.lang.String> values) {
        ensureCompatibleConditionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, compatibleConditions_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearCompatibleConditions() {
        compatibleConditions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * relevant algorithm/function names that are applied to one ore more regions or initialize
       * </pre>
       *
       * <code>repeated string compatible_conditions = 7;</code>
       * @param value The bytes of the compatibleConditions to add.
       * @return This builder for chaining.
       */
      public Builder addCompatibleConditionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureCompatibleConditionsIsMutable();
        compatibleConditions_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<Messages.Concept.Model> subModels_ =
        java.util.Collections.emptyList();
      private void ensureSubModelsIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          subModels_ = new java.util.ArrayList<Messages.Concept.Model>(subModels_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Model, Messages.Concept.Model.Builder, Messages.Concept.ModelOrBuilder> subModelsBuilder_;

      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public java.util.List<Messages.Concept.Model> getSubModelsList() {
        if (subModelsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subModels_);
        } else {
          return subModelsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public int getSubModelsCount() {
        if (subModelsBuilder_ == null) {
          return subModels_.size();
        } else {
          return subModelsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Messages.Concept.Model getSubModels(int index) {
        if (subModelsBuilder_ == null) {
          return subModels_.get(index);
        } else {
          return subModelsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder setSubModels(
          int index, Messages.Concept.Model value) {
        if (subModelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubModelsIsMutable();
          subModels_.set(index, value);
          onChanged();
        } else {
          subModelsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder setSubModels(
          int index, Messages.Concept.Model.Builder builderForValue) {
        if (subModelsBuilder_ == null) {
          ensureSubModelsIsMutable();
          subModels_.set(index, builderForValue.build());
          onChanged();
        } else {
          subModelsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder addSubModels(Messages.Concept.Model value) {
        if (subModelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubModelsIsMutable();
          subModels_.add(value);
          onChanged();
        } else {
          subModelsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder addSubModels(
          int index, Messages.Concept.Model value) {
        if (subModelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubModelsIsMutable();
          subModels_.add(index, value);
          onChanged();
        } else {
          subModelsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder addSubModels(
          Messages.Concept.Model.Builder builderForValue) {
        if (subModelsBuilder_ == null) {
          ensureSubModelsIsMutable();
          subModels_.add(builderForValue.build());
          onChanged();
        } else {
          subModelsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder addSubModels(
          int index, Messages.Concept.Model.Builder builderForValue) {
        if (subModelsBuilder_ == null) {
          ensureSubModelsIsMutable();
          subModels_.add(index, builderForValue.build());
          onChanged();
        } else {
          subModelsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder addAllSubModels(
          java.lang.Iterable<? extends Messages.Concept.Model> values) {
        if (subModelsBuilder_ == null) {
          ensureSubModelsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, subModels_);
          onChanged();
        } else {
          subModelsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder clearSubModels() {
        if (subModelsBuilder_ == null) {
          subModels_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          subModelsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Builder removeSubModels(int index) {
        if (subModelsBuilder_ == null) {
          ensureSubModelsIsMutable();
          subModels_.remove(index);
          onChanged();
        } else {
          subModelsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Messages.Concept.Model.Builder getSubModelsBuilder(
          int index) {
        return getSubModelsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Messages.Concept.ModelOrBuilder getSubModelsOrBuilder(
          int index) {
        if (subModelsBuilder_ == null) {
          return subModels_.get(index);  } else {
          return subModelsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public java.util.List<? extends Messages.Concept.ModelOrBuilder> 
           getSubModelsOrBuilderList() {
        if (subModelsBuilder_ != null) {
          return subModelsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subModels_);
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Messages.Concept.Model.Builder addSubModelsBuilder() {
        return getSubModelsFieldBuilder().addBuilder(
            Messages.Concept.Model.getDefaultInstance());
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public Messages.Concept.Model.Builder addSubModelsBuilder(
          int index) {
        return getSubModelsFieldBuilder().addBuilder(
            index, Messages.Concept.Model.getDefaultInstance());
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated .Messages.Model sub_models = 9;</code>
       */
      public java.util.List<Messages.Concept.Model.Builder> 
           getSubModelsBuilderList() {
        return getSubModelsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Model, Messages.Concept.Model.Builder, Messages.Concept.ModelOrBuilder> 
          getSubModelsFieldBuilder() {
        if (subModelsBuilder_ == null) {
          subModelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Concept.Model, Messages.Concept.Model.Builder, Messages.Concept.ModelOrBuilder>(
                  subModels_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          subModels_ = null;
        }
        return subModelsBuilder_;
      }

      private Messages.Vector.Record64 defaultData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder> defaultDataBuilder_;
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       * @return Whether the defaultData field is set.
       */
      public boolean hasDefaultData() {
        return defaultDataBuilder_ != null || defaultData_ != null;
      }
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       * @return The defaultData.
       */
      public Messages.Vector.Record64 getDefaultData() {
        if (defaultDataBuilder_ == null) {
          return defaultData_ == null ? Messages.Vector.Record64.getDefaultInstance() : defaultData_;
        } else {
          return defaultDataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       */
      public Builder setDefaultData(Messages.Vector.Record64 value) {
        if (defaultDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          defaultData_ = value;
          onChanged();
        } else {
          defaultDataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       */
      public Builder setDefaultData(
          Messages.Vector.Record64.Builder builderForValue) {
        if (defaultDataBuilder_ == null) {
          defaultData_ = builderForValue.build();
          onChanged();
        } else {
          defaultDataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       */
      public Builder mergeDefaultData(Messages.Vector.Record64 value) {
        if (defaultDataBuilder_ == null) {
          if (defaultData_ != null) {
            defaultData_ =
              Messages.Vector.Record64.newBuilder(defaultData_).mergeFrom(value).buildPartial();
          } else {
            defaultData_ = value;
          }
          onChanged();
        } else {
          defaultDataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       */
      public Builder clearDefaultData() {
        if (defaultDataBuilder_ == null) {
          defaultData_ = null;
          onChanged();
        } else {
          defaultData_ = null;
          defaultDataBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       */
      public Messages.Vector.Record64.Builder getDefaultDataBuilder() {
        
        onChanged();
        return getDefaultDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       */
      public Messages.Vector.Record64OrBuilder getDefaultDataOrBuilder() {
        if (defaultDataBuilder_ != null) {
          return defaultDataBuilder_.getMessageOrBuilder();
        } else {
          return defaultData_ == null ?
              Messages.Vector.Record64.getDefaultInstance() : defaultData_;
        }
      }
      /**
       * <pre>
       * default constants, unless otherwise specified (by region)
       * </pre>
       *
       * <code>.Messages.Record64 default_data = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder> 
          getDefaultDataFieldBuilder() {
        if (defaultDataBuilder_ == null) {
          defaultDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder>(
                  getDefaultData(),
                  getParentForChildren(),
                  isClean());
          defaultData_ = null;
        }
        return defaultDataBuilder_;
      }

      private java.util.List<Messages.Vector.Rule> rules_ =
        java.util.Collections.emptyList();
      private void ensureRulesIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          rules_ = new java.util.ArrayList<Messages.Vector.Rule>(rules_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder> rulesBuilder_;

      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public java.util.List<Messages.Vector.Rule> getRulesList() {
        if (rulesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(rules_);
        } else {
          return rulesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public int getRulesCount() {
        if (rulesBuilder_ == null) {
          return rules_.size();
        } else {
          return rulesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Messages.Vector.Rule getRules(int index) {
        if (rulesBuilder_ == null) {
          return rules_.get(index);
        } else {
          return rulesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder setRules(
          int index, Messages.Vector.Rule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.set(index, value);
          onChanged();
        } else {
          rulesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder setRules(
          int index, Messages.Vector.Rule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.set(index, builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder addRules(Messages.Vector.Rule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.add(value);
          onChanged();
        } else {
          rulesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder addRules(
          int index, Messages.Vector.Rule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.add(index, value);
          onChanged();
        } else {
          rulesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder addRules(
          Messages.Vector.Rule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.add(builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder addRules(
          int index, Messages.Vector.Rule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.add(index, builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder addAllRules(
          java.lang.Iterable<? extends Messages.Vector.Rule> values) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, rules_);
          onChanged();
        } else {
          rulesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder clearRules() {
        if (rulesBuilder_ == null) {
          rules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          rulesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Builder removeRules(int index) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.remove(index);
          onChanged();
        } else {
          rulesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Messages.Vector.Rule.Builder getRulesBuilder(
          int index) {
        return getRulesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Messages.Vector.RuleOrBuilder getRulesOrBuilder(
          int index) {
        if (rulesBuilder_ == null) {
          return rules_.get(index);  } else {
          return rulesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public java.util.List<? extends Messages.Vector.RuleOrBuilder> 
           getRulesOrBuilderList() {
        if (rulesBuilder_ != null) {
          return rulesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(rules_);
        }
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Messages.Vector.Rule.Builder addRulesBuilder() {
        return getRulesFieldBuilder().addBuilder(
            Messages.Vector.Rule.getDefaultInstance());
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public Messages.Vector.Rule.Builder addRulesBuilder(
          int index) {
        return getRulesFieldBuilder().addBuilder(
            index, Messages.Vector.Rule.getDefaultInstance());
      }
      /**
       * <pre>
       * how each PK can be calculated (by algorithm name)
       * </pre>
       *
       * <code>repeated .Messages.Rule rules = 11;</code>
       */
      public java.util.List<Messages.Vector.Rule.Builder> 
           getRulesBuilderList() {
        return getRulesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder> 
          getRulesFieldBuilder() {
        if (rulesBuilder_ == null) {
          rulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder>(
                  rules_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          rules_ = null;
        }
        return rulesBuilder_;
      }

      private java.util.List<Messages.Vector.Rule> mutexStack_ =
        java.util.Collections.emptyList();
      private void ensureMutexStackIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          mutexStack_ = new java.util.ArrayList<Messages.Vector.Rule>(mutexStack_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder> mutexStackBuilder_;

      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public java.util.List<Messages.Vector.Rule> getMutexStackList() {
        if (mutexStackBuilder_ == null) {
          return java.util.Collections.unmodifiableList(mutexStack_);
        } else {
          return mutexStackBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public int getMutexStackCount() {
        if (mutexStackBuilder_ == null) {
          return mutexStack_.size();
        } else {
          return mutexStackBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Messages.Vector.Rule getMutexStack(int index) {
        if (mutexStackBuilder_ == null) {
          return mutexStack_.get(index);
        } else {
          return mutexStackBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder setMutexStack(
          int index, Messages.Vector.Rule value) {
        if (mutexStackBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMutexStackIsMutable();
          mutexStack_.set(index, value);
          onChanged();
        } else {
          mutexStackBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder setMutexStack(
          int index, Messages.Vector.Rule.Builder builderForValue) {
        if (mutexStackBuilder_ == null) {
          ensureMutexStackIsMutable();
          mutexStack_.set(index, builderForValue.build());
          onChanged();
        } else {
          mutexStackBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder addMutexStack(Messages.Vector.Rule value) {
        if (mutexStackBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMutexStackIsMutable();
          mutexStack_.add(value);
          onChanged();
        } else {
          mutexStackBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder addMutexStack(
          int index, Messages.Vector.Rule value) {
        if (mutexStackBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMutexStackIsMutable();
          mutexStack_.add(index, value);
          onChanged();
        } else {
          mutexStackBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder addMutexStack(
          Messages.Vector.Rule.Builder builderForValue) {
        if (mutexStackBuilder_ == null) {
          ensureMutexStackIsMutable();
          mutexStack_.add(builderForValue.build());
          onChanged();
        } else {
          mutexStackBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder addMutexStack(
          int index, Messages.Vector.Rule.Builder builderForValue) {
        if (mutexStackBuilder_ == null) {
          ensureMutexStackIsMutable();
          mutexStack_.add(index, builderForValue.build());
          onChanged();
        } else {
          mutexStackBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder addAllMutexStack(
          java.lang.Iterable<? extends Messages.Vector.Rule> values) {
        if (mutexStackBuilder_ == null) {
          ensureMutexStackIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, mutexStack_);
          onChanged();
        } else {
          mutexStackBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder clearMutexStack() {
        if (mutexStackBuilder_ == null) {
          mutexStack_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          mutexStackBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Builder removeMutexStack(int index) {
        if (mutexStackBuilder_ == null) {
          ensureMutexStackIsMutable();
          mutexStack_.remove(index);
          onChanged();
        } else {
          mutexStackBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Messages.Vector.Rule.Builder getMutexStackBuilder(
          int index) {
        return getMutexStackFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Messages.Vector.RuleOrBuilder getMutexStackOrBuilder(
          int index) {
        if (mutexStackBuilder_ == null) {
          return mutexStack_.get(index);  } else {
          return mutexStackBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public java.util.List<? extends Messages.Vector.RuleOrBuilder> 
           getMutexStackOrBuilderList() {
        if (mutexStackBuilder_ != null) {
          return mutexStackBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(mutexStack_);
        }
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Messages.Vector.Rule.Builder addMutexStackBuilder() {
        return getMutexStackFieldBuilder().addBuilder(
            Messages.Vector.Rule.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public Messages.Vector.Rule.Builder addMutexStackBuilder(
          int index) {
        return getMutexStackFieldBuilder().addBuilder(
            index, Messages.Vector.Rule.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.Rule mutex_stack = 12;</code>
       */
      public java.util.List<Messages.Vector.Rule.Builder> 
           getMutexStackBuilderList() {
        return getMutexStackFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder> 
          getMutexStackFieldBuilder() {
        if (mutexStackBuilder_ == null) {
          mutexStackBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder>(
                  mutexStack_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          mutexStack_ = null;
        }
        return mutexStackBuilder_;
      }

      private Messages.Vector.SparseMatrix markovMatrix_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.SparseMatrix, Messages.Vector.SparseMatrix.Builder, Messages.Vector.SparseMatrixOrBuilder> markovMatrixBuilder_;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       * @return Whether the markovMatrix field is set.
       */
      public boolean hasMarkovMatrix() {
        return markovMatrixBuilder_ != null || markovMatrix_ != null;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       * @return The markovMatrix.
       */
      public Messages.Vector.SparseMatrix getMarkovMatrix() {
        if (markovMatrixBuilder_ == null) {
          return markovMatrix_ == null ? Messages.Vector.SparseMatrix.getDefaultInstance() : markovMatrix_;
        } else {
          return markovMatrixBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       */
      public Builder setMarkovMatrix(Messages.Vector.SparseMatrix value) {
        if (markovMatrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          markovMatrix_ = value;
          onChanged();
        } else {
          markovMatrixBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       */
      public Builder setMarkovMatrix(
          Messages.Vector.SparseMatrix.Builder builderForValue) {
        if (markovMatrixBuilder_ == null) {
          markovMatrix_ = builderForValue.build();
          onChanged();
        } else {
          markovMatrixBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       */
      public Builder mergeMarkovMatrix(Messages.Vector.SparseMatrix value) {
        if (markovMatrixBuilder_ == null) {
          if (markovMatrix_ != null) {
            markovMatrix_ =
              Messages.Vector.SparseMatrix.newBuilder(markovMatrix_).mergeFrom(value).buildPartial();
          } else {
            markovMatrix_ = value;
          }
          onChanged();
        } else {
          markovMatrixBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       */
      public Builder clearMarkovMatrix() {
        if (markovMatrixBuilder_ == null) {
          markovMatrix_ = null;
          onChanged();
        } else {
          markovMatrix_ = null;
          markovMatrixBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       */
      public Messages.Vector.SparseMatrix.Builder getMarkovMatrixBuilder() {
        
        onChanged();
        return getMarkovMatrixFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       */
      public Messages.Vector.SparseMatrixOrBuilder getMarkovMatrixOrBuilder() {
        if (markovMatrixBuilder_ != null) {
          return markovMatrixBuilder_.getMessageOrBuilder();
        } else {
          return markovMatrix_ == null ?
              Messages.Vector.SparseMatrix.getDefaultInstance() : markovMatrix_;
        }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>.Messages.SparseMatrix markov_matrix = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.SparseMatrix, Messages.Vector.SparseMatrix.Builder, Messages.Vector.SparseMatrixOrBuilder> 
          getMarkovMatrixFieldBuilder() {
        if (markovMatrixBuilder_ == null) {
          markovMatrixBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.SparseMatrix, Messages.Vector.SparseMatrix.Builder, Messages.Vector.SparseMatrixOrBuilder>(
                  getMarkovMatrix(),
                  getParentForChildren(),
                  isClean());
          markovMatrix_ = null;
        }
        return markovMatrixBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Model)
    }

    // @@protoc_insertion_point(class_scope:Messages.Model)
    private static final Messages.Concept.Model DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Concept.Model();
    }

    public static Messages.Concept.Model getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Model>
        PARSER = new com.google.protobuf.AbstractParser<Model>() {
      @java.lang.Override
      public Model parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public Messages.Concept.Model getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CouplingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Coupling)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>string source_system = 1;</code>
     * @return The sourceSystem.
     */
    java.lang.String getSourceSystem();
    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>string source_system = 1;</code>
     * @return The bytes for sourceSystem.
     */
    com.google.protobuf.ByteString
        getSourceSystemBytes();

    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>string target_system = 2;</code>
     * @return The targetSystem.
     */
    java.lang.String getTargetSystem();
    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>string target_system = 2;</code>
     * @return The bytes for targetSystem.
     */
    com.google.protobuf.ByteString
        getTargetSystemBytes();

    /**
     * <pre>
     * uid is only valid within a given session
     * </pre>
     *
     * <code>int64 source_uid = 3;</code>
     * @return The sourceUid.
     */
    long getSourceUid();

    /**
     * <pre>
     * uid is only valid within a given session
     * </pre>
     *
     * <code>int64 target_uid = 4;</code>
     * @return The targetUid.
     */
    long getTargetUid();

    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>.Messages.Zone source_region = 5;</code>
     * @return Whether the sourceRegion field is set.
     */
    boolean hasSourceRegion();
    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>.Messages.Zone source_region = 5;</code>
     * @return The sourceRegion.
     */
    Messages.Spatial.Zone getSourceRegion();
    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>.Messages.Zone source_region = 5;</code>
     */
    Messages.Spatial.ZoneOrBuilder getSourceRegionOrBuilder();

    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>.Messages.Zone target_region = 6;</code>
     * @return Whether the targetRegion field is set.
     */
    boolean hasTargetRegion();
    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>.Messages.Zone target_region = 6;</code>
     * @return The targetRegion.
     */
    Messages.Spatial.Zone getTargetRegion();
    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>.Messages.Zone target_region = 6;</code>
     */
    Messages.Spatial.ZoneOrBuilder getTargetRegionOrBuilder();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint32 sampling_mode = 9;</code>
     * @return The samplingMode.
     */
    int getSamplingMode();

    /**
     * <code>string name = 10;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 10;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * s---wo---w1---w2---t
     * </pre>
     *
     * <code>repeated string dofs = 11;</code>
     * @return A list containing the dofs.
     */
    java.util.List<java.lang.String>
        getDofsList();
    /**
     * <pre>
     * s---wo---w1---w2---t
     * </pre>
     *
     * <code>repeated string dofs = 11;</code>
     * @return The count of dofs.
     */
    int getDofsCount();
    /**
     * <pre>
     * s---wo---w1---w2---t
     * </pre>
     *
     * <code>repeated string dofs = 11;</code>
     * @param index The index of the element to return.
     * @return The dofs at the given index.
     */
    java.lang.String getDofs(int index);
    /**
     * <pre>
     * s---wo---w1---w2---t
     * </pre>
     *
     * <code>repeated string dofs = 11;</code>
     * @param index The index of the value to return.
     * @return The bytes of the dofs at the given index.
     */
    com.google.protobuf.ByteString
        getDofsBytes(int index);

    /**
     * <code>.Messages.Representation representation = 12;</code>
     * @return Whether the representation field is set.
     */
    boolean hasRepresentation();
    /**
     * <code>.Messages.Representation representation = 12;</code>
     * @return The representation.
     */
    Messages.MetaOuterClass.Representation getRepresentation();
    /**
     * <code>.Messages.Representation representation = 12;</code>
     */
    Messages.MetaOuterClass.RepresentationOrBuilder getRepresentationOrBuilder();

    /**
     * <pre>
     * s----Z Z----t
     * </pre>
     *
     * <code>bool enabled = 13;</code>
     * @return The enabled.
     */
    boolean getEnabled();

    /**
     * <pre>
     * s----------&gt;t
     * </pre>
     *
     * <code>bool forward = 14;</code>
     * @return The forward.
     */
    boolean getForward();

    /**
     * <pre>
     * s&lt;----------t
     * </pre>
     *
     * <code>bool reverse = 15;</code>
     * @return The reverse.
     */
    boolean getReverse();
  }
  /**
   * Protobuf type {@code Messages.Coupling}
   */
  public static final class Coupling extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Coupling)
      CouplingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Coupling.newBuilder() to construct.
    private Coupling(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Coupling() {
      sourceSystem_ = "";
      targetSystem_ = "";
      name_ = "";
      dofs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Coupling();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Concept.internal_static_Messages_Coupling_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Concept.internal_static_Messages_Coupling_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Concept.Coupling.class, Messages.Concept.Coupling.Builder.class);
    }

    public static final int SOURCE_SYSTEM_FIELD_NUMBER = 1;
    private volatile java.lang.Object sourceSystem_;
    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>string source_system = 1;</code>
     * @return The sourceSystem.
     */
    @java.lang.Override
    public java.lang.String getSourceSystem() {
      java.lang.Object ref = sourceSystem_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        sourceSystem_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>string source_system = 1;</code>
     * @return The bytes for sourceSystem.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSourceSystemBytes() {
      java.lang.Object ref = sourceSystem_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sourceSystem_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TARGET_SYSTEM_FIELD_NUMBER = 2;
    private volatile java.lang.Object targetSystem_;
    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>string target_system = 2;</code>
     * @return The targetSystem.
     */
    @java.lang.Override
    public java.lang.String getTargetSystem() {
      java.lang.Object ref = targetSystem_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        targetSystem_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>string target_system = 2;</code>
     * @return The bytes for targetSystem.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTargetSystemBytes() {
      java.lang.Object ref = targetSystem_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetSystem_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SOURCE_UID_FIELD_NUMBER = 3;
    private long sourceUid_;
    /**
     * <pre>
     * uid is only valid within a given session
     * </pre>
     *
     * <code>int64 source_uid = 3;</code>
     * @return The sourceUid.
     */
    @java.lang.Override
    public long getSourceUid() {
      return sourceUid_;
    }

    public static final int TARGET_UID_FIELD_NUMBER = 4;
    private long targetUid_;
    /**
     * <pre>
     * uid is only valid within a given session
     * </pre>
     *
     * <code>int64 target_uid = 4;</code>
     * @return The targetUid.
     */
    @java.lang.Override
    public long getTargetUid() {
      return targetUid_;
    }

    public static final int SOURCE_REGION_FIELD_NUMBER = 5;
    private Messages.Spatial.Zone sourceRegion_;
    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>.Messages.Zone source_region = 5;</code>
     * @return Whether the sourceRegion field is set.
     */
    @java.lang.Override
    public boolean hasSourceRegion() {
      return sourceRegion_ != null;
    }
    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>.Messages.Zone source_region = 5;</code>
     * @return The sourceRegion.
     */
    @java.lang.Override
    public Messages.Spatial.Zone getSourceRegion() {
      return sourceRegion_ == null ? Messages.Spatial.Zone.getDefaultInstance() : sourceRegion_;
    }
    /**
     * <pre>
     * s---
     * </pre>
     *
     * <code>.Messages.Zone source_region = 5;</code>
     */
    @java.lang.Override
    public Messages.Spatial.ZoneOrBuilder getSourceRegionOrBuilder() {
      return getSourceRegion();
    }

    public static final int TARGET_REGION_FIELD_NUMBER = 6;
    private Messages.Spatial.Zone targetRegion_;
    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>.Messages.Zone target_region = 6;</code>
     * @return Whether the targetRegion field is set.
     */
    @java.lang.Override
    public boolean hasTargetRegion() {
      return targetRegion_ != null;
    }
    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>.Messages.Zone target_region = 6;</code>
     * @return The targetRegion.
     */
    @java.lang.Override
    public Messages.Spatial.Zone getTargetRegion() {
      return targetRegion_ == null ? Messages.Spatial.Zone.getDefaultInstance() : targetRegion_;
    }
    /**
     * <pre>
     * ---t
     * </pre>
     *
     * <code>.Messages.Zone target_region = 6;</code>
     */
    @java.lang.Override
    public Messages.Spatial.ZoneOrBuilder getTargetRegionOrBuilder() {
      return getTargetRegion();
    }

    public static final int SAMPLING_MODE_FIELD_NUMBER = 9;
    private int samplingMode_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint32 sampling_mode = 9;</code>
     * @return The samplingMode.
     */
    @java.lang.Override
    public int getSamplingMode() {
      return samplingMode_;
    }

    public static final int NAME_FIELD_NUMBER = 10;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 10;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 10;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DOFS_FIELD_NUMBER = 11;
    private com.google.protobuf.LazyStringList dofs_;
    /**
     * <pre>
     * s---wo---w1---w2---t
     * </pre>
     *
     * <code>repeated string dofs = 11;</code>
     * @return A list containing the dofs.
     */
    public com.google.protobuf.ProtocolStringList
        getDofsList() {
      return dofs_;
    }
    /**
     * <pre>
     * s---wo---w1---w2---t
     * </pre>
     *
     * <code>repeated string dofs = 11;</code>
     * @return The count of dofs.
     */
    public int getDofsCount() {
      return dofs_.size();
    }
    /**
     * <pre>
     * s---wo---w1---w2---t
     * </pre>
     *
     * <code>repeated string dofs = 11;</code>
     * @param index The index of the element to return.
     * @return The dofs at the given index.
     */
    public java.lang.String getDofs(int index) {
      return dofs_.get(index);
    }
    /**
     * <pre>
     * s---wo---w1---w2---t
     * </pre>
     *
     * <code>repeated string dofs = 11;</code>
     * @param index The index of the value to return.
     * @return The bytes of the dofs at the given index.
     */
    public com.google.protobuf.ByteString
        getDofsBytes(int index) {
      return dofs_.getByteString(index);
    }

    public static final int REPRESENTATION_FIELD_NUMBER = 12;
    private Messages.MetaOuterClass.Representation representation_;
    /**
     * <code>.Messages.Representation representation = 12;</code>
     * @return Whether the representation field is set.
     */
    @java.lang.Override
    public boolean hasRepresentation() {
      return representation_ != null;
    }
    /**
     * <code>.Messages.Representation representation = 12;</code>
     * @return The representation.
     */
    @java.lang.Override
    public Messages.MetaOuterClass.Representation getRepresentation() {
      return representation_ == null ? Messages.MetaOuterClass.Representation.getDefaultInstance() : representation_;
    }
    /**
     * <code>.Messages.Representation representation = 12;</code>
     */
    @java.lang.Override
    public Messages.MetaOuterClass.RepresentationOrBuilder getRepresentationOrBuilder() {
      return getRepresentation();
    }

    public static final int ENABLED_FIELD_NUMBER = 13;
    private boolean enabled_;
    /**
     * <pre>
     * s----Z Z----t
     * </pre>
     *
     * <code>bool enabled = 13;</code>
     * @return The enabled.
     */
    @java.lang.Override
    public boolean getEnabled() {
      return enabled_;
    }

    public static final int FORWARD_FIELD_NUMBER = 14;
    private boolean forward_;
    /**
     * <pre>
     * s----------&gt;t
     * </pre>
     *
     * <code>bool forward = 14;</code>
     * @return The forward.
     */
    @java.lang.Override
    public boolean getForward() {
      return forward_;
    }

    public static final int REVERSE_FIELD_NUMBER = 15;
    private boolean reverse_;
    /**
     * <pre>
     * s&lt;----------t
     * </pre>
     *
     * <code>bool reverse = 15;</code>
     * @return The reverse.
     */
    @java.lang.Override
    public boolean getReverse() {
      return reverse_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceSystem_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, sourceSystem_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(targetSystem_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, targetSystem_);
      }
      if (sourceUid_ != 0L) {
        output.writeInt64(3, sourceUid_);
      }
      if (targetUid_ != 0L) {
        output.writeInt64(4, targetUid_);
      }
      if (sourceRegion_ != null) {
        output.writeMessage(5, getSourceRegion());
      }
      if (targetRegion_ != null) {
        output.writeMessage(6, getTargetRegion());
      }
      if (samplingMode_ != 0) {
        output.writeUInt32(9, samplingMode_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, name_);
      }
      for (int i = 0; i < dofs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, dofs_.getRaw(i));
      }
      if (representation_ != null) {
        output.writeMessage(12, getRepresentation());
      }
      if (enabled_ != false) {
        output.writeBool(13, enabled_);
      }
      if (forward_ != false) {
        output.writeBool(14, forward_);
      }
      if (reverse_ != false) {
        output.writeBool(15, reverse_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceSystem_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, sourceSystem_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(targetSystem_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, targetSystem_);
      }
      if (sourceUid_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, sourceUid_);
      }
      if (targetUid_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, targetUid_);
      }
      if (sourceRegion_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSourceRegion());
      }
      if (targetRegion_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getTargetRegion());
      }
      if (samplingMode_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(9, samplingMode_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < dofs_.size(); i++) {
          dataSize += computeStringSizeNoTag(dofs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDofsList().size();
      }
      if (representation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getRepresentation());
      }
      if (enabled_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, enabled_);
      }
      if (forward_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(14, forward_);
      }
      if (reverse_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(15, reverse_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Concept.Coupling)) {
        return super.equals(obj);
      }
      Messages.Concept.Coupling other = (Messages.Concept.Coupling) obj;

      if (!getSourceSystem()
          .equals(other.getSourceSystem())) return false;
      if (!getTargetSystem()
          .equals(other.getTargetSystem())) return false;
      if (getSourceUid()
          != other.getSourceUid()) return false;
      if (getTargetUid()
          != other.getTargetUid()) return false;
      if (hasSourceRegion() != other.hasSourceRegion()) return false;
      if (hasSourceRegion()) {
        if (!getSourceRegion()
            .equals(other.getSourceRegion())) return false;
      }
      if (hasTargetRegion() != other.hasTargetRegion()) return false;
      if (hasTargetRegion()) {
        if (!getTargetRegion()
            .equals(other.getTargetRegion())) return false;
      }
      if (getSamplingMode()
          != other.getSamplingMode()) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getDofsList()
          .equals(other.getDofsList())) return false;
      if (hasRepresentation() != other.hasRepresentation()) return false;
      if (hasRepresentation()) {
        if (!getRepresentation()
            .equals(other.getRepresentation())) return false;
      }
      if (getEnabled()
          != other.getEnabled()) return false;
      if (getForward()
          != other.getForward()) return false;
      if (getReverse()
          != other.getReverse()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SOURCE_SYSTEM_FIELD_NUMBER;
      hash = (53 * hash) + getSourceSystem().hashCode();
      hash = (37 * hash) + TARGET_SYSTEM_FIELD_NUMBER;
      hash = (53 * hash) + getTargetSystem().hashCode();
      hash = (37 * hash) + SOURCE_UID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSourceUid());
      hash = (37 * hash) + TARGET_UID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTargetUid());
      if (hasSourceRegion()) {
        hash = (37 * hash) + SOURCE_REGION_FIELD_NUMBER;
        hash = (53 * hash) + getSourceRegion().hashCode();
      }
      if (hasTargetRegion()) {
        hash = (37 * hash) + TARGET_REGION_FIELD_NUMBER;
        hash = (53 * hash) + getTargetRegion().hashCode();
      }
      hash = (37 * hash) + SAMPLING_MODE_FIELD_NUMBER;
      hash = (53 * hash) + getSamplingMode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getDofsCount() > 0) {
        hash = (37 * hash) + DOFS_FIELD_NUMBER;
        hash = (53 * hash) + getDofsList().hashCode();
      }
      if (hasRepresentation()) {
        hash = (37 * hash) + REPRESENTATION_FIELD_NUMBER;
        hash = (53 * hash) + getRepresentation().hashCode();
      }
      hash = (37 * hash) + ENABLED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getEnabled());
      hash = (37 * hash) + FORWARD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getForward());
      hash = (37 * hash) + REVERSE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getReverse());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Messages.Concept.Coupling parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Coupling parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Coupling parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Coupling parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Coupling parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.Coupling parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.Coupling parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Coupling parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Coupling parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Messages.Concept.Coupling parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.Coupling parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.Coupling parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Concept.Coupling prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Coupling}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Coupling)
        Messages.Concept.CouplingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Concept.internal_static_Messages_Coupling_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Concept.internal_static_Messages_Coupling_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Concept.Coupling.class, Messages.Concept.Coupling.Builder.class);
      }

      // Construct using Messages.Concept.Coupling.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sourceSystem_ = "";

        targetSystem_ = "";

        sourceUid_ = 0L;

        targetUid_ = 0L;

        if (sourceRegionBuilder_ == null) {
          sourceRegion_ = null;
        } else {
          sourceRegion_ = null;
          sourceRegionBuilder_ = null;
        }
        if (targetRegionBuilder_ == null) {
          targetRegion_ = null;
        } else {
          targetRegion_ = null;
          targetRegionBuilder_ = null;
        }
        samplingMode_ = 0;

        name_ = "";

        dofs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (representationBuilder_ == null) {
          representation_ = null;
        } else {
          representation_ = null;
          representationBuilder_ = null;
        }
        enabled_ = false;

        forward_ = false;

        reverse_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Concept.internal_static_Messages_Coupling_descriptor;
      }

      @java.lang.Override
      public Messages.Concept.Coupling getDefaultInstanceForType() {
        return Messages.Concept.Coupling.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Concept.Coupling build() {
        Messages.Concept.Coupling result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Concept.Coupling buildPartial() {
        Messages.Concept.Coupling result = new Messages.Concept.Coupling(this);
        int from_bitField0_ = bitField0_;
        result.sourceSystem_ = sourceSystem_;
        result.targetSystem_ = targetSystem_;
        result.sourceUid_ = sourceUid_;
        result.targetUid_ = targetUid_;
        if (sourceRegionBuilder_ == null) {
          result.sourceRegion_ = sourceRegion_;
        } else {
          result.sourceRegion_ = sourceRegionBuilder_.build();
        }
        if (targetRegionBuilder_ == null) {
          result.targetRegion_ = targetRegion_;
        } else {
          result.targetRegion_ = targetRegionBuilder_.build();
        }
        result.samplingMode_ = samplingMode_;
        result.name_ = name_;
        if (((bitField0_ & 0x00000001) != 0)) {
          dofs_ = dofs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.dofs_ = dofs_;
        if (representationBuilder_ == null) {
          result.representation_ = representation_;
        } else {
          result.representation_ = representationBuilder_.build();
        }
        result.enabled_ = enabled_;
        result.forward_ = forward_;
        result.reverse_ = reverse_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Messages.Concept.Coupling) {
          return mergeFrom((Messages.Concept.Coupling)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Messages.Concept.Coupling other) {
        if (other == Messages.Concept.Coupling.getDefaultInstance()) return this;
        if (!other.getSourceSystem().isEmpty()) {
          sourceSystem_ = other.sourceSystem_;
          onChanged();
        }
        if (!other.getTargetSystem().isEmpty()) {
          targetSystem_ = other.targetSystem_;
          onChanged();
        }
        if (other.getSourceUid() != 0L) {
          setSourceUid(other.getSourceUid());
        }
        if (other.getTargetUid() != 0L) {
          setTargetUid(other.getTargetUid());
        }
        if (other.hasSourceRegion()) {
          mergeSourceRegion(other.getSourceRegion());
        }
        if (other.hasTargetRegion()) {
          mergeTargetRegion(other.getTargetRegion());
        }
        if (other.getSamplingMode() != 0) {
          setSamplingMode(other.getSamplingMode());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.dofs_.isEmpty()) {
          if (dofs_.isEmpty()) {
            dofs_ = other.dofs_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDofsIsMutable();
            dofs_.addAll(other.dofs_);
          }
          onChanged();
        }
        if (other.hasRepresentation()) {
          mergeRepresentation(other.getRepresentation());
        }
        if (other.getEnabled() != false) {
          setEnabled(other.getEnabled());
        }
        if (other.getForward() != false) {
          setForward(other.getForward());
        }
        if (other.getReverse() != false) {
          setReverse(other.getReverse());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                sourceSystem_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                targetSystem_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 24: {
                sourceUid_ = input.readInt64();

                break;
              } // case 24
              case 32: {
                targetUid_ = input.readInt64();

                break;
              } // case 32
              case 42: {
                input.readMessage(
                    getSourceRegionFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getTargetRegionFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 50
              case 72: {
                samplingMode_ = input.readUInt32();

                break;
              } // case 72
              case 82: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 82
              case 90: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureDofsIsMutable();
                dofs_.add(s);
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getRepresentationFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 98
              case 104: {
                enabled_ = input.readBool();

                break;
              } // case 104
              case 112: {
                forward_ = input.readBool();

                break;
              } // case 112
              case 120: {
                reverse_ = input.readBool();

                break;
              } // case 120
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object sourceSystem_ = "";
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>string source_system = 1;</code>
       * @return The sourceSystem.
       */
      public java.lang.String getSourceSystem() {
        java.lang.Object ref = sourceSystem_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sourceSystem_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>string source_system = 1;</code>
       * @return The bytes for sourceSystem.
       */
      public com.google.protobuf.ByteString
          getSourceSystemBytes() {
        java.lang.Object ref = sourceSystem_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sourceSystem_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>string source_system = 1;</code>
       * @param value The sourceSystem to set.
       * @return This builder for chaining.
       */
      public Builder setSourceSystem(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sourceSystem_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>string source_system = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSourceSystem() {
        
        sourceSystem_ = getDefaultInstance().getSourceSystem();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>string source_system = 1;</code>
       * @param value The bytes for sourceSystem to set.
       * @return This builder for chaining.
       */
      public Builder setSourceSystemBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sourceSystem_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object targetSystem_ = "";
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>string target_system = 2;</code>
       * @return The targetSystem.
       */
      public java.lang.String getTargetSystem() {
        java.lang.Object ref = targetSystem_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          targetSystem_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>string target_system = 2;</code>
       * @return The bytes for targetSystem.
       */
      public com.google.protobuf.ByteString
          getTargetSystemBytes() {
        java.lang.Object ref = targetSystem_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetSystem_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>string target_system = 2;</code>
       * @param value The targetSystem to set.
       * @return This builder for chaining.
       */
      public Builder setTargetSystem(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        targetSystem_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>string target_system = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetSystem() {
        
        targetSystem_ = getDefaultInstance().getTargetSystem();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>string target_system = 2;</code>
       * @param value The bytes for targetSystem to set.
       * @return This builder for chaining.
       */
      public Builder setTargetSystemBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        targetSystem_ = value;
        onChanged();
        return this;
      }

      private long sourceUid_ ;
      /**
       * <pre>
       * uid is only valid within a given session
       * </pre>
       *
       * <code>int64 source_uid = 3;</code>
       * @return The sourceUid.
       */
      @java.lang.Override
      public long getSourceUid() {
        return sourceUid_;
      }
      /**
       * <pre>
       * uid is only valid within a given session
       * </pre>
       *
       * <code>int64 source_uid = 3;</code>
       * @param value The sourceUid to set.
       * @return This builder for chaining.
       */
      public Builder setSourceUid(long value) {
        
        sourceUid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * uid is only valid within a given session
       * </pre>
       *
       * <code>int64 source_uid = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSourceUid() {
        
        sourceUid_ = 0L;
        onChanged();
        return this;
      }

      private long targetUid_ ;
      /**
       * <pre>
       * uid is only valid within a given session
       * </pre>
       *
       * <code>int64 target_uid = 4;</code>
       * @return The targetUid.
       */
      @java.lang.Override
      public long getTargetUid() {
        return targetUid_;
      }
      /**
       * <pre>
       * uid is only valid within a given session
       * </pre>
       *
       * <code>int64 target_uid = 4;</code>
       * @param value The targetUid to set.
       * @return This builder for chaining.
       */
      public Builder setTargetUid(long value) {
        
        targetUid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * uid is only valid within a given session
       * </pre>
       *
       * <code>int64 target_uid = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetUid() {
        
        targetUid_ = 0L;
        onChanged();
        return this;
      }

      private Messages.Spatial.Zone sourceRegion_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Spatial.Zone, Messages.Spatial.Zone.Builder, Messages.Spatial.ZoneOrBuilder> sourceRegionBuilder_;
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       * @return Whether the sourceRegion field is set.
       */
      public boolean hasSourceRegion() {
        return sourceRegionBuilder_ != null || sourceRegion_ != null;
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       * @return The sourceRegion.
       */
      public Messages.Spatial.Zone getSourceRegion() {
        if (sourceRegionBuilder_ == null) {
          return sourceRegion_ == null ? Messages.Spatial.Zone.getDefaultInstance() : sourceRegion_;
        } else {
          return sourceRegionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       */
      public Builder setSourceRegion(Messages.Spatial.Zone value) {
        if (sourceRegionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sourceRegion_ = value;
          onChanged();
        } else {
          sourceRegionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       */
      public Builder setSourceRegion(
          Messages.Spatial.Zone.Builder builderForValue) {
        if (sourceRegionBuilder_ == null) {
          sourceRegion_ = builderForValue.build();
          onChanged();
        } else {
          sourceRegionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       */
      public Builder mergeSourceRegion(Messages.Spatial.Zone value) {
        if (sourceRegionBuilder_ == null) {
          if (sourceRegion_ != null) {
            sourceRegion_ =
              Messages.Spatial.Zone.newBuilder(sourceRegion_).mergeFrom(value).buildPartial();
          } else {
            sourceRegion_ = value;
          }
          onChanged();
        } else {
          sourceRegionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       */
      public Builder clearSourceRegion() {
        if (sourceRegionBuilder_ == null) {
          sourceRegion_ = null;
          onChanged();
        } else {
          sourceRegion_ = null;
          sourceRegionBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       */
      public Messages.Spatial.Zone.Builder getSourceRegionBuilder() {
        
        onChanged();
        return getSourceRegionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       */
      public Messages.Spatial.ZoneOrBuilder getSourceRegionOrBuilder() {
        if (sourceRegionBuilder_ != null) {
          return sourceRegionBuilder_.getMessageOrBuilder();
        } else {
          return sourceRegion_ == null ?
              Messages.Spatial.Zone.getDefaultInstance() : sourceRegion_;
        }
      }
      /**
       * <pre>
       * s---
       * </pre>
       *
       * <code>.Messages.Zone source_region = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Spatial.Zone, Messages.Spatial.Zone.Builder, Messages.Spatial.ZoneOrBuilder> 
          getSourceRegionFieldBuilder() {
        if (sourceRegionBuilder_ == null) {
          sourceRegionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Spatial.Zone, Messages.Spatial.Zone.Builder, Messages.Spatial.ZoneOrBuilder>(
                  getSourceRegion(),
                  getParentForChildren(),
                  isClean());
          sourceRegion_ = null;
        }
        return sourceRegionBuilder_;
      }

      private Messages.Spatial.Zone targetRegion_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Spatial.Zone, Messages.Spatial.Zone.Builder, Messages.Spatial.ZoneOrBuilder> targetRegionBuilder_;
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       * @return Whether the targetRegion field is set.
       */
      public boolean hasTargetRegion() {
        return targetRegionBuilder_ != null || targetRegion_ != null;
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       * @return The targetRegion.
       */
      public Messages.Spatial.Zone getTargetRegion() {
        if (targetRegionBuilder_ == null) {
          return targetRegion_ == null ? Messages.Spatial.Zone.getDefaultInstance() : targetRegion_;
        } else {
          return targetRegionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       */
      public Builder setTargetRegion(Messages.Spatial.Zone value) {
        if (targetRegionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          targetRegion_ = value;
          onChanged();
        } else {
          targetRegionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       */
      public Builder setTargetRegion(
          Messages.Spatial.Zone.Builder builderForValue) {
        if (targetRegionBuilder_ == null) {
          targetRegion_ = builderForValue.build();
          onChanged();
        } else {
          targetRegionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       */
      public Builder mergeTargetRegion(Messages.Spatial.Zone value) {
        if (targetRegionBuilder_ == null) {
          if (targetRegion_ != null) {
            targetRegion_ =
              Messages.Spatial.Zone.newBuilder(targetRegion_).mergeFrom(value).buildPartial();
          } else {
            targetRegion_ = value;
          }
          onChanged();
        } else {
          targetRegionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       */
      public Builder clearTargetRegion() {
        if (targetRegionBuilder_ == null) {
          targetRegion_ = null;
          onChanged();
        } else {
          targetRegion_ = null;
          targetRegionBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       */
      public Messages.Spatial.Zone.Builder getTargetRegionBuilder() {
        
        onChanged();
        return getTargetRegionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       */
      public Messages.Spatial.ZoneOrBuilder getTargetRegionOrBuilder() {
        if (targetRegionBuilder_ != null) {
          return targetRegionBuilder_.getMessageOrBuilder();
        } else {
          return targetRegion_ == null ?
              Messages.Spatial.Zone.getDefaultInstance() : targetRegion_;
        }
      }
      /**
       * <pre>
       * ---t
       * </pre>
       *
       * <code>.Messages.Zone target_region = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Spatial.Zone, Messages.Spatial.Zone.Builder, Messages.Spatial.ZoneOrBuilder> 
          getTargetRegionFieldBuilder() {
        if (targetRegionBuilder_ == null) {
          targetRegionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Spatial.Zone, Messages.Spatial.Zone.Builder, Messages.Spatial.ZoneOrBuilder>(
                  getTargetRegion(),
                  getParentForChildren(),
                  isClean());
          targetRegion_ = null;
        }
        return targetRegionBuilder_;
      }

      private int samplingMode_ ;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint32 sampling_mode = 9;</code>
       * @return The samplingMode.
       */
      @java.lang.Override
      public int getSamplingMode() {
        return samplingMode_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint32 sampling_mode = 9;</code>
       * @param value The samplingMode to set.
       * @return This builder for chaining.
       */
      public Builder setSamplingMode(int value) {
        
        samplingMode_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint32 sampling_mode = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearSamplingMode() {
        
        samplingMode_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 10;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 10;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 10;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 10;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList dofs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDofsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          dofs_ = new com.google.protobuf.LazyStringArrayList(dofs_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @return A list containing the dofs.
       */
      public com.google.protobuf.ProtocolStringList
          getDofsList() {
        return dofs_.getUnmodifiableView();
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @return The count of dofs.
       */
      public int getDofsCount() {
        return dofs_.size();
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @param index The index of the element to return.
       * @return The dofs at the given index.
       */
      public java.lang.String getDofs(int index) {
        return dofs_.get(index);
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @param index The index of the value to return.
       * @return The bytes of the dofs at the given index.
       */
      public com.google.protobuf.ByteString
          getDofsBytes(int index) {
        return dofs_.getByteString(index);
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @param index The index to set the value at.
       * @param value The dofs to set.
       * @return This builder for chaining.
       */
      public Builder setDofs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDofsIsMutable();
        dofs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @param value The dofs to add.
       * @return This builder for chaining.
       */
      public Builder addDofs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDofsIsMutable();
        dofs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @param values The dofs to add.
       * @return This builder for chaining.
       */
      public Builder addAllDofs(
          java.lang.Iterable<java.lang.String> values) {
        ensureDofsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, dofs_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearDofs() {
        dofs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s---wo---w1---w2---t
       * </pre>
       *
       * <code>repeated string dofs = 11;</code>
       * @param value The bytes of the dofs to add.
       * @return This builder for chaining.
       */
      public Builder addDofsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDofsIsMutable();
        dofs_.add(value);
        onChanged();
        return this;
      }

      private Messages.MetaOuterClass.Representation representation_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.MetaOuterClass.Representation, Messages.MetaOuterClass.Representation.Builder, Messages.MetaOuterClass.RepresentationOrBuilder> representationBuilder_;
      /**
       * <code>.Messages.Representation representation = 12;</code>
       * @return Whether the representation field is set.
       */
      public boolean hasRepresentation() {
        return representationBuilder_ != null || representation_ != null;
      }
      /**
       * <code>.Messages.Representation representation = 12;</code>
       * @return The representation.
       */
      public Messages.MetaOuterClass.Representation getRepresentation() {
        if (representationBuilder_ == null) {
          return representation_ == null ? Messages.MetaOuterClass.Representation.getDefaultInstance() : representation_;
        } else {
          return representationBuilder_.getMessage();
        }
      }
      /**
       * <code>.Messages.Representation representation = 12;</code>
       */
      public Builder setRepresentation(Messages.MetaOuterClass.Representation value) {
        if (representationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          representation_ = value;
          onChanged();
        } else {
          representationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Representation representation = 12;</code>
       */
      public Builder setRepresentation(
          Messages.MetaOuterClass.Representation.Builder builderForValue) {
        if (representationBuilder_ == null) {
          representation_ = builderForValue.build();
          onChanged();
        } else {
          representationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Messages.Representation representation = 12;</code>
       */
      public Builder mergeRepresentation(Messages.MetaOuterClass.Representation value) {
        if (representationBuilder_ == null) {
          if (representation_ != null) {
            representation_ =
              Messages.MetaOuterClass.Representation.newBuilder(representation_).mergeFrom(value).buildPartial();
          } else {
            representation_ = value;
          }
          onChanged();
        } else {
          representationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Representation representation = 12;</code>
       */
      public Builder clearRepresentation() {
        if (representationBuilder_ == null) {
          representation_ = null;
          onChanged();
        } else {
          representation_ = null;
          representationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Messages.Representation representation = 12;</code>
       */
      public Messages.MetaOuterClass.Representation.Builder getRepresentationBuilder() {
        
        onChanged();
        return getRepresentationFieldBuilder().getBuilder();
      }
      /**
       * <code>.Messages.Representation representation = 12;</code>
       */
      public Messages.MetaOuterClass.RepresentationOrBuilder getRepresentationOrBuilder() {
        if (representationBuilder_ != null) {
          return representationBuilder_.getMessageOrBuilder();
        } else {
          return representation_ == null ?
              Messages.MetaOuterClass.Representation.getDefaultInstance() : representation_;
        }
      }
      /**
       * <code>.Messages.Representation representation = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.MetaOuterClass.Representation, Messages.MetaOuterClass.Representation.Builder, Messages.MetaOuterClass.RepresentationOrBuilder> 
          getRepresentationFieldBuilder() {
        if (representationBuilder_ == null) {
          representationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.MetaOuterClass.Representation, Messages.MetaOuterClass.Representation.Builder, Messages.MetaOuterClass.RepresentationOrBuilder>(
                  getRepresentation(),
                  getParentForChildren(),
                  isClean());
          representation_ = null;
        }
        return representationBuilder_;
      }

      private boolean enabled_ ;
      /**
       * <pre>
       * s----Z Z----t
       * </pre>
       *
       * <code>bool enabled = 13;</code>
       * @return The enabled.
       */
      @java.lang.Override
      public boolean getEnabled() {
        return enabled_;
      }
      /**
       * <pre>
       * s----Z Z----t
       * </pre>
       *
       * <code>bool enabled = 13;</code>
       * @param value The enabled to set.
       * @return This builder for chaining.
       */
      public Builder setEnabled(boolean value) {
        
        enabled_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s----Z Z----t
       * </pre>
       *
       * <code>bool enabled = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnabled() {
        
        enabled_ = false;
        onChanged();
        return this;
      }

      private boolean forward_ ;
      /**
       * <pre>
       * s----------&gt;t
       * </pre>
       *
       * <code>bool forward = 14;</code>
       * @return The forward.
       */
      @java.lang.Override
      public boolean getForward() {
        return forward_;
      }
      /**
       * <pre>
       * s----------&gt;t
       * </pre>
       *
       * <code>bool forward = 14;</code>
       * @param value The forward to set.
       * @return This builder for chaining.
       */
      public Builder setForward(boolean value) {
        
        forward_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s----------&gt;t
       * </pre>
       *
       * <code>bool forward = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearForward() {
        
        forward_ = false;
        onChanged();
        return this;
      }

      private boolean reverse_ ;
      /**
       * <pre>
       * s&lt;----------t
       * </pre>
       *
       * <code>bool reverse = 15;</code>
       * @return The reverse.
       */
      @java.lang.Override
      public boolean getReverse() {
        return reverse_;
      }
      /**
       * <pre>
       * s&lt;----------t
       * </pre>
       *
       * <code>bool reverse = 15;</code>
       * @param value The reverse to set.
       * @return This builder for chaining.
       */
      public Builder setReverse(boolean value) {
        
        reverse_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * s&lt;----------t
       * </pre>
       *
       * <code>bool reverse = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearReverse() {
        
        reverse_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Coupling)
    }

    // @@protoc_insertion_point(class_scope:Messages.Coupling)
    private static final Messages.Concept.Coupling DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Concept.Coupling();
    }

    public static Messages.Concept.Coupling getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Coupling>
        PARSER = new com.google.protobuf.AbstractParser<Coupling>() {
      @java.lang.Override
      public Coupling parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public Messages.Concept.Coupling getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SystemOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.System)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * name and other basic info, some of which is non-persistent 
     * </pre>
     *
     * <code>.Messages.Meta meta = 1;</code>
     * @return Whether the meta field is set.
     */
    boolean hasMeta();
    /**
     * <pre>
     * name and other basic info, some of which is non-persistent 
     * </pre>
     *
     * <code>.Messages.Meta meta = 1;</code>
     * @return The meta.
     */
    Messages.MetaOuterClass.Meta getMeta();
    /**
     * <pre>
     * name and other basic info, some of which is non-persistent 
     * </pre>
     *
     * <code>.Messages.Meta meta = 1;</code>
     */
    Messages.MetaOuterClass.MetaOrBuilder getMetaOrBuilder();

    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    java.util.List<Messages.Concept.Script> 
        getScriptList();
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    Messages.Concept.Script getScript(int index);
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    int getScriptCount();
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    java.util.List<? extends Messages.Concept.ScriptOrBuilder> 
        getScriptOrBuilderList();
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    Messages.Concept.ScriptOrBuilder getScriptOrBuilder(
        int index);

    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_transform = 3;</code>
     * @return A list containing the localTransform.
     */
    java.util.List<java.lang.Double> getLocalTransformList();
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_transform = 3;</code>
     * @return The count of localTransform.
     */
    int getLocalTransformCount();
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_transform = 3;</code>
     * @param index The index of the element to return.
     * @return The localTransform at the given index.
     */
    double getLocalTransform(int index);

    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_rate = 4;</code>
     * @return A list containing the localRate.
     */
    java.util.List<java.lang.Double> getLocalRateList();
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_rate = 4;</code>
     * @return The count of localRate.
     */
    int getLocalRateCount();
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_rate = 4;</code>
     * @param index The index of the element to return.
     * @return The localRate at the given index.
     */
    double getLocalRate(int index);

    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_accel = 5;</code>
     * @return A list containing the localAccel.
     */
    java.util.List<java.lang.Double> getLocalAccelList();
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_accel = 5;</code>
     * @return The count of localAccel.
     */
    int getLocalAccelCount();
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_accel = 5;</code>
     * @param index The index of the element to return.
     * @return The localAccel at the given index.
     */
    double getLocalAccel(int index);

    /**
     * <pre>
     * sub-system names (exact matches)
     * </pre>
     *
     * <code>repeated string children = 6;</code>
     * @return A list containing the children.
     */
    java.util.List<java.lang.String>
        getChildrenList();
    /**
     * <pre>
     * sub-system names (exact matches)
     * </pre>
     *
     * <code>repeated string children = 6;</code>
     * @return The count of children.
     */
    int getChildrenCount();
    /**
     * <pre>
     * sub-system names (exact matches)
     * </pre>
     *
     * <code>repeated string children = 6;</code>
     * @param index The index of the element to return.
     * @return The children at the given index.
     */
    java.lang.String getChildren(int index);
    /**
     * <pre>
     * sub-system names (exact matches)
     * </pre>
     *
     * <code>repeated string children = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the children at the given index.
     */
    com.google.protobuf.ByteString
        getChildrenBytes(int index);

    /**
     * <pre>
     * external file references, such as *.xcg geometry (Messages::Topology)
     * </pre>
     *
     * <code>repeated string referenced_files = 7;</code>
     * @return A list containing the referencedFiles.
     */
    java.util.List<java.lang.String>
        getReferencedFilesList();
    /**
     * <pre>
     * external file references, such as *.xcg geometry (Messages::Topology)
     * </pre>
     *
     * <code>repeated string referenced_files = 7;</code>
     * @return The count of referencedFiles.
     */
    int getReferencedFilesCount();
    /**
     * <pre>
     * external file references, such as *.xcg geometry (Messages::Topology)
     * </pre>
     *
     * <code>repeated string referenced_files = 7;</code>
     * @param index The index of the element to return.
     * @return The referencedFiles at the given index.
     */
    java.lang.String getReferencedFiles(int index);
    /**
     * <pre>
     * external file references, such as *.xcg geometry (Messages::Topology)
     * </pre>
     *
     * <code>repeated string referenced_files = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the referencedFiles at the given index.
     */
    com.google.protobuf.ByteString
        getReferencedFilesBytes(int index);

    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    java.util.List<Messages.Vector.File> 
        getEmbeddedFilesList();
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    Messages.Vector.File getEmbeddedFiles(int index);
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    int getEmbeddedFilesCount();
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    java.util.List<? extends Messages.Vector.FileOrBuilder> 
        getEmbeddedFilesOrBuilderList();
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    Messages.Vector.FileOrBuilder getEmbeddedFilesOrBuilder(
        int index);

    /**
     * <code>repeated string notes = 9;</code>
     * @return A list containing the notes.
     */
    java.util.List<java.lang.String>
        getNotesList();
    /**
     * <code>repeated string notes = 9;</code>
     * @return The count of notes.
     */
    int getNotesCount();
    /**
     * <code>repeated string notes = 9;</code>
     * @param index The index of the element to return.
     * @return The notes at the given index.
     */
    java.lang.String getNotes(int index);
    /**
     * <code>repeated string notes = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the notes at the given index.
     */
    com.google.protobuf.ByteString
        getNotesBytes(int index);

    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    java.util.List<Messages.Concept.Coupling> 
        getCouplingsList();
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    Messages.Concept.Coupling getCouplings(int index);
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    int getCouplingsCount();
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    java.util.List<? extends Messages.Concept.CouplingOrBuilder> 
        getCouplingsOrBuilderList();
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    Messages.Concept.CouplingOrBuilder getCouplingsOrBuilder(
        int index);

    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    java.util.List<Messages.Concept.Model> 
        getModelsList();
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    Messages.Concept.Model getModels(int index);
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    int getModelsCount();
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    java.util.List<? extends Messages.Concept.ModelOrBuilder> 
        getModelsOrBuilderList();
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    Messages.Concept.ModelOrBuilder getModelsOrBuilder(
        int index);

    /**
     * <pre>
     * physics.data and system requirements
     * </pre>
     *
     * <code>.Messages.Record64 physical_constants = 12;</code>
     * @return Whether the physicalConstants field is set.
     */
    boolean hasPhysicalConstants();
    /**
     * <pre>
     * physics.data and system requirements
     * </pre>
     *
     * <code>.Messages.Record64 physical_constants = 12;</code>
     * @return The physicalConstants.
     */
    Messages.Vector.Record64 getPhysicalConstants();
    /**
     * <pre>
     * physics.data and system requirements
     * </pre>
     *
     * <code>.Messages.Record64 physical_constants = 12;</code>
     */
    Messages.Vector.Record64OrBuilder getPhysicalConstantsOrBuilder();

    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    java.util.List<Messages.Concept.Command> 
        getConditionsList();
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    Messages.Concept.Command getConditions(int index);
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    java.util.List<? extends Messages.Concept.CommandOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    Messages.Concept.CommandOrBuilder getConditionsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Messages.System}
   */
  public static final class System extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.System)
      SystemOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use System.newBuilder() to construct.
    private System(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private System() {
      script_ = java.util.Collections.emptyList();
      localTransform_ = emptyDoubleList();
      localRate_ = emptyDoubleList();
      localAccel_ = emptyDoubleList();
      children_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      referencedFiles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      embeddedFiles_ = java.util.Collections.emptyList();
      notes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      couplings_ = java.util.Collections.emptyList();
      models_ = java.util.Collections.emptyList();
      conditions_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new System();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Concept.internal_static_Messages_System_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Concept.internal_static_Messages_System_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Concept.System.class, Messages.Concept.System.Builder.class);
    }

    public static final int META_FIELD_NUMBER = 1;
    private Messages.MetaOuterClass.Meta meta_;
    /**
     * <pre>
     * name and other basic info, some of which is non-persistent 
     * </pre>
     *
     * <code>.Messages.Meta meta = 1;</code>
     * @return Whether the meta field is set.
     */
    @java.lang.Override
    public boolean hasMeta() {
      return meta_ != null;
    }
    /**
     * <pre>
     * name and other basic info, some of which is non-persistent 
     * </pre>
     *
     * <code>.Messages.Meta meta = 1;</code>
     * @return The meta.
     */
    @java.lang.Override
    public Messages.MetaOuterClass.Meta getMeta() {
      return meta_ == null ? Messages.MetaOuterClass.Meta.getDefaultInstance() : meta_;
    }
    /**
     * <pre>
     * name and other basic info, some of which is non-persistent 
     * </pre>
     *
     * <code>.Messages.Meta meta = 1;</code>
     */
    @java.lang.Override
    public Messages.MetaOuterClass.MetaOrBuilder getMetaOrBuilder() {
      return getMeta();
    }

    public static final int SCRIPT_FIELD_NUMBER = 2;
    private java.util.List<Messages.Concept.Script> script_;
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Concept.Script> getScriptList() {
      return script_;
    }
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Concept.ScriptOrBuilder> 
        getScriptOrBuilderList() {
      return script_;
    }
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    @java.lang.Override
    public int getScriptCount() {
      return script_.size();
    }
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    @java.lang.Override
    public Messages.Concept.Script getScript(int index) {
      return script_.get(index);
    }
    /**
     * <pre>
     * serialized solver defined by a sequence of instructions
     * </pre>
     *
     * <code>repeated .Messages.Script script = 2;</code>
     */
    @java.lang.Override
    public Messages.Concept.ScriptOrBuilder getScriptOrBuilder(
        int index) {
      return script_.get(index);
    }

    public static final int LOCAL_TRANSFORM_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.DoubleList localTransform_;
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_transform = 3;</code>
     * @return A list containing the localTransform.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getLocalTransformList() {
      return localTransform_;
    }
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_transform = 3;</code>
     * @return The count of localTransform.
     */
    public int getLocalTransformCount() {
      return localTransform_.size();
    }
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_transform = 3;</code>
     * @param index The index of the element to return.
     * @return The localTransform at the given index.
     */
    public double getLocalTransform(int index) {
      return localTransform_.getDouble(index);
    }
    private int localTransformMemoizedSerializedSize = -1;

    public static final int LOCAL_RATE_FIELD_NUMBER = 4;
    private com.google.protobuf.Internal.DoubleList localRate_;
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_rate = 4;</code>
     * @return A list containing the localRate.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getLocalRateList() {
      return localRate_;
    }
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_rate = 4;</code>
     * @return The count of localRate.
     */
    public int getLocalRateCount() {
      return localRate_.size();
    }
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_rate = 4;</code>
     * @param index The index of the element to return.
     * @return The localRate at the given index.
     */
    public double getLocalRate(int index) {
      return localRate_.getDouble(index);
    }
    private int localRateMemoizedSerializedSize = -1;

    public static final int LOCAL_ACCEL_FIELD_NUMBER = 5;
    private com.google.protobuf.Internal.DoubleList localAccel_;
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_accel = 5;</code>
     * @return A list containing the localAccel.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getLocalAccelList() {
      return localAccel_;
    }
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_accel = 5;</code>
     * @return The count of localAccel.
     */
    public int getLocalAccelCount() {
      return localAccel_.size();
    }
    /**
     * <pre>
     * double16 (glm::dmat4) local transformation matrix
     * </pre>
     *
     * <code>repeated double local_accel = 5;</code>
     * @param index The index of the element to return.
     * @return The localAccel at the given index.
     */
    public double getLocalAccel(int index) {
      return localAccel_.getDouble(index);
    }
    private int localAccelMemoizedSerializedSize = -1;

    public static final int CHILDREN_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList children_;
    /**
     * <pre>
     * sub-system names (exact matches)
     * </pre>
     *
     * <code>repeated string children = 6;</code>
     * @return A list containing the children.
     */
    public com.google.protobuf.ProtocolStringList
        getChildrenList() {
      return children_;
    }
    /**
     * <pre>
     * sub-system names (exact matches)
     * </pre>
     *
     * <code>repeated string children = 6;</code>
     * @return The count of children.
     */
    public int getChildrenCount() {
      return children_.size();
    }
    /**
     * <pre>
     * sub-system names (exact matches)
     * </pre>
     *
     * <code>repeated string children = 6;</code>
     * @param index The index of the element to return.
     * @return The children at the given index.
     */
    public java.lang.String getChildren(int index) {
      return children_.get(index);
    }
    /**
     * <pre>
     * sub-system names (exact matches)
     * </pre>
     *
     * <code>repeated string children = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the children at the given index.
     */
    public com.google.protobuf.ByteString
        getChildrenBytes(int index) {
      return children_.getByteString(index);
    }

    public static final int REFERENCED_FILES_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList referencedFiles_;
    /**
     * <pre>
     * external file references, such as *.xcg geometry (Messages::Topology)
     * </pre>
     *
     * <code>repeated string referenced_files = 7;</code>
     * @return A list containing the referencedFiles.
     */
    public com.google.protobuf.ProtocolStringList
        getReferencedFilesList() {
      return referencedFiles_;
    }
    /**
     * <pre>
     * external file references, such as *.xcg geometry (Messages::Topology)
     * </pre>
     *
     * <code>repeated string referenced_files = 7;</code>
     * @return The count of referencedFiles.
     */
    public int getReferencedFilesCount() {
      return referencedFiles_.size();
    }
    /**
     * <pre>
     * external file references, such as *.xcg geometry (Messages::Topology)
     * </pre>
     *
     * <code>repeated string referenced_files = 7;</code>
     * @param index The index of the element to return.
     * @return The referencedFiles at the given index.
     */
    public java.lang.String getReferencedFiles(int index) {
      return referencedFiles_.get(index);
    }
    /**
     * <pre>
     * external file references, such as *.xcg geometry (Messages::Topology)
     * </pre>
     *
     * <code>repeated string referenced_files = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the referencedFiles at the given index.
     */
    public com.google.protobuf.ByteString
        getReferencedFilesBytes(int index) {
      return referencedFiles_.getByteString(index);
    }

    public static final int EMBEDDED_FILES_FIELD_NUMBER = 8;
    private java.util.List<Messages.Vector.File> embeddedFiles_;
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Vector.File> getEmbeddedFilesList() {
      return embeddedFiles_;
    }
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Vector.FileOrBuilder> 
        getEmbeddedFilesOrBuilderList() {
      return embeddedFiles_;
    }
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    @java.lang.Override
    public int getEmbeddedFilesCount() {
      return embeddedFiles_.size();
    }
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    @java.lang.Override
    public Messages.Vector.File getEmbeddedFiles(int index) {
      return embeddedFiles_.get(index);
    }
    /**
     * <pre>
     * files such as symbol and supporting documentation
     * </pre>
     *
     * <code>repeated .Messages.File embedded_files = 8;</code>
     */
    @java.lang.Override
    public Messages.Vector.FileOrBuilder getEmbeddedFilesOrBuilder(
        int index) {
      return embeddedFiles_.get(index);
    }

    public static final int NOTES_FIELD_NUMBER = 9;
    private com.google.protobuf.LazyStringList notes_;
    /**
     * <code>repeated string notes = 9;</code>
     * @return A list containing the notes.
     */
    public com.google.protobuf.ProtocolStringList
        getNotesList() {
      return notes_;
    }
    /**
     * <code>repeated string notes = 9;</code>
     * @return The count of notes.
     */
    public int getNotesCount() {
      return notes_.size();
    }
    /**
     * <code>repeated string notes = 9;</code>
     * @param index The index of the element to return.
     * @return The notes at the given index.
     */
    public java.lang.String getNotes(int index) {
      return notes_.get(index);
    }
    /**
     * <code>repeated string notes = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the notes at the given index.
     */
    public com.google.protobuf.ByteString
        getNotesBytes(int index) {
      return notes_.getByteString(index);
    }

    public static final int COUPLINGS_FIELD_NUMBER = 10;
    private java.util.List<Messages.Concept.Coupling> couplings_;
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Concept.Coupling> getCouplingsList() {
      return couplings_;
    }
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Concept.CouplingOrBuilder> 
        getCouplingsOrBuilderList() {
      return couplings_;
    }
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    @java.lang.Override
    public int getCouplingsCount() {
      return couplings_.size();
    }
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    @java.lang.Override
    public Messages.Concept.Coupling getCouplings(int index) {
      return couplings_.get(index);
    }
    /**
     * <pre>
     * links and contacts between regions
     * </pre>
     *
     * <code>repeated .Messages.Coupling couplings = 10;</code>
     */
    @java.lang.Override
    public Messages.Concept.CouplingOrBuilder getCouplingsOrBuilder(
        int index) {
      return couplings_.get(index);
    }

    public static final int MODELS_FIELD_NUMBER = 11;
    private java.util.List<Messages.Concept.Model> models_;
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Concept.Model> getModelsList() {
      return models_;
    }
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Concept.ModelOrBuilder> 
        getModelsOrBuilderList() {
      return models_;
    }
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    @java.lang.Override
    public int getModelsCount() {
      return models_.size();
    }
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    @java.lang.Override
    public Messages.Concept.Model getModels(int index) {
      return models_.get(index);
    }
    /**
     * <pre>
     * physical / mathematical models (groups of algorithms)
     * </pre>
     *
     * <code>repeated .Messages.Model models = 11;</code>
     */
    @java.lang.Override
    public Messages.Concept.ModelOrBuilder getModelsOrBuilder(
        int index) {
      return models_.get(index);
    }

    public static final int PHYSICAL_CONSTANTS_FIELD_NUMBER = 12;
    private Messages.Vector.Record64 physicalConstants_;
    /**
     * <pre>
     * physics.data and system requirements
     * </pre>
     *
     * <code>.Messages.Record64 physical_constants = 12;</code>
     * @return Whether the physicalConstants field is set.
     */
    @java.lang.Override
    public boolean hasPhysicalConstants() {
      return physicalConstants_ != null;
    }
    /**
     * <pre>
     * physics.data and system requirements
     * </pre>
     *
     * <code>.Messages.Record64 physical_constants = 12;</code>
     * @return The physicalConstants.
     */
    @java.lang.Override
    public Messages.Vector.Record64 getPhysicalConstants() {
      return physicalConstants_ == null ? Messages.Vector.Record64.getDefaultInstance() : physicalConstants_;
    }
    /**
     * <pre>
     * physics.data and system requirements
     * </pre>
     *
     * <code>.Messages.Record64 physical_constants = 12;</code>
     */
    @java.lang.Override
    public Messages.Vector.Record64OrBuilder getPhysicalConstantsOrBuilder() {
      return getPhysicalConstants();
    }

    public static final int CONDITIONS_FIELD_NUMBER = 13;
    private java.util.List<Messages.Concept.Command> conditions_;
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Concept.Command> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Concept.CommandOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    @java.lang.Override
    public Messages.Concept.Command getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * special algorithm commands applied as constraints and conditions
     * </pre>
     *
     * <code>repeated .Messages.Command conditions = 13;</code>
     */
    @java.lang.Override
    public Messages.Concept.CommandOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (meta_ != null) {
        output.writeMessage(1, getMeta());
      }
      for (int i = 0; i < script_.size(); i++) {
        output.writeMessage(2, script_.get(i));
      }
      if (getLocalTransformList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(localTransformMemoizedSerializedSize);
      }
      for (int i = 0; i < localTransform_.size(); i++) {
        output.writeDoubleNoTag(localTransform_.getDouble(i));
      }
      if (getLocalRateList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(localRateMemoizedSerializedSize);
      }
      for (int i = 0; i < localRate_.size(); i++) {
        output.writeDoubleNoTag(localRate_.getDouble(i));
      }
      if (getLocalAccelList().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(localAccelMemoizedSerializedSize);
      }
      for (int i = 0; i < localAccel_.size(); i++) {
        output.writeDoubleNoTag(localAccel_.getDouble(i));
      }
      for (int i = 0; i < children_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, children_.getRaw(i));
      }
      for (int i = 0; i < referencedFiles_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, referencedFiles_.getRaw(i));
      }
      for (int i = 0; i < embeddedFiles_.size(); i++) {
        output.writeMessage(8, embeddedFiles_.get(i));
      }
      for (int i = 0; i < notes_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, notes_.getRaw(i));
      }
      for (int i = 0; i < couplings_.size(); i++) {
        output.writeMessage(10, couplings_.get(i));
      }
      for (int i = 0; i < models_.size(); i++) {
        output.writeMessage(11, models_.get(i));
      }
      if (physicalConstants_ != null) {
        output.writeMessage(12, getPhysicalConstants());
      }
      for (int i = 0; i < conditions_.size(); i++) {
        output.writeMessage(13, conditions_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (meta_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMeta());
      }
      for (int i = 0; i < script_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, script_.get(i));
      }
      {
        int dataSize = 0;
        dataSize = 8 * getLocalTransformList().size();
        size += dataSize;
        if (!getLocalTransformList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        localTransformMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getLocalRateList().size();
        size += dataSize;
        if (!getLocalRateList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        localRateMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getLocalAccelList().size();
        size += dataSize;
        if (!getLocalAccelList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        localAccelMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < children_.size(); i++) {
          dataSize += computeStringSizeNoTag(children_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getChildrenList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < referencedFiles_.size(); i++) {
          dataSize += computeStringSizeNoTag(referencedFiles_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getReferencedFilesList().size();
      }
      for (int i = 0; i < embeddedFiles_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, embeddedFiles_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < notes_.size(); i++) {
          dataSize += computeStringSizeNoTag(notes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getNotesList().size();
      }
      for (int i = 0; i < couplings_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, couplings_.get(i));
      }
      for (int i = 0; i < models_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, models_.get(i));
      }
      if (physicalConstants_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getPhysicalConstants());
      }
      for (int i = 0; i < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, conditions_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Concept.System)) {
        return super.equals(obj);
      }
      Messages.Concept.System other = (Messages.Concept.System) obj;

      if (hasMeta() != other.hasMeta()) return false;
      if (hasMeta()) {
        if (!getMeta()
            .equals(other.getMeta())) return false;
      }
      if (!getScriptList()
          .equals(other.getScriptList())) return false;
      if (!getLocalTransformList()
          .equals(other.getLocalTransformList())) return false;
      if (!getLocalRateList()
          .equals(other.getLocalRateList())) return false;
      if (!getLocalAccelList()
          .equals(other.getLocalAccelList())) return false;
      if (!getChildrenList()
          .equals(other.getChildrenList())) return false;
      if (!getReferencedFilesList()
          .equals(other.getReferencedFilesList())) return false;
      if (!getEmbeddedFilesList()
          .equals(other.getEmbeddedFilesList())) return false;
      if (!getNotesList()
          .equals(other.getNotesList())) return false;
      if (!getCouplingsList()
          .equals(other.getCouplingsList())) return false;
      if (!getModelsList()
          .equals(other.getModelsList())) return false;
      if (hasPhysicalConstants() != other.hasPhysicalConstants()) return false;
      if (hasPhysicalConstants()) {
        if (!getPhysicalConstants()
            .equals(other.getPhysicalConstants())) return false;
      }
      if (!getConditionsList()
          .equals(other.getConditionsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMeta()) {
        hash = (37 * hash) + META_FIELD_NUMBER;
        hash = (53 * hash) + getMeta().hashCode();
      }
      if (getScriptCount() > 0) {
        hash = (37 * hash) + SCRIPT_FIELD_NUMBER;
        hash = (53 * hash) + getScriptList().hashCode();
      }
      if (getLocalTransformCount() > 0) {
        hash = (37 * hash) + LOCAL_TRANSFORM_FIELD_NUMBER;
        hash = (53 * hash) + getLocalTransformList().hashCode();
      }
      if (getLocalRateCount() > 0) {
        hash = (37 * hash) + LOCAL_RATE_FIELD_NUMBER;
        hash = (53 * hash) + getLocalRateList().hashCode();
      }
      if (getLocalAccelCount() > 0) {
        hash = (37 * hash) + LOCAL_ACCEL_FIELD_NUMBER;
        hash = (53 * hash) + getLocalAccelList().hashCode();
      }
      if (getChildrenCount() > 0) {
        hash = (37 * hash) + CHILDREN_FIELD_NUMBER;
        hash = (53 * hash) + getChildrenList().hashCode();
      }
      if (getReferencedFilesCount() > 0) {
        hash = (37 * hash) + REFERENCED_FILES_FIELD_NUMBER;
        hash = (53 * hash) + getReferencedFilesList().hashCode();
      }
      if (getEmbeddedFilesCount() > 0) {
        hash = (37 * hash) + EMBEDDED_FILES_FIELD_NUMBER;
        hash = (53 * hash) + getEmbeddedFilesList().hashCode();
      }
      if (getNotesCount() > 0) {
        hash = (37 * hash) + NOTES_FIELD_NUMBER;
        hash = (53 * hash) + getNotesList().hashCode();
      }
      if (getCouplingsCount() > 0) {
        hash = (37 * hash) + COUPLINGS_FIELD_NUMBER;
        hash = (53 * hash) + getCouplingsList().hashCode();
      }
      if (getModelsCount() > 0) {
        hash = (37 * hash) + MODELS_FIELD_NUMBER;
        hash = (53 * hash) + getModelsList().hashCode();
      }
      if (hasPhysicalConstants()) {
        hash = (37 * hash) + PHYSICAL_CONSTANTS_FIELD_NUMBER;
        hash = (53 * hash) + getPhysicalConstants().hashCode();
      }
      if (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Messages.Concept.System parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.System parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.System parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.System parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.System parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Messages.Concept.System parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Messages.Concept.System parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.System parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.System parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static Messages.Concept.System parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Messages.Concept.System parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static Messages.Concept.System parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Concept.System prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.System}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.System)
        Messages.Concept.SystemOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Concept.internal_static_Messages_System_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Concept.internal_static_Messages_System_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Concept.System.class, Messages.Concept.System.Builder.class);
      }

      // Construct using Messages.Concept.System.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (metaBuilder_ == null) {
          meta_ = null;
        } else {
          meta_ = null;
          metaBuilder_ = null;
        }
        if (scriptBuilder_ == null) {
          script_ = java.util.Collections.emptyList();
        } else {
          script_ = null;
          scriptBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        localTransform_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000002);
        localRate_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000004);
        localAccel_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000008);
        children_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        referencedFiles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (embeddedFilesBuilder_ == null) {
          embeddedFiles_ = java.util.Collections.emptyList();
        } else {
          embeddedFiles_ = null;
          embeddedFilesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        notes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000080);
        if (couplingsBuilder_ == null) {
          couplings_ = java.util.Collections.emptyList();
        } else {
          couplings_ = null;
          couplingsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        if (modelsBuilder_ == null) {
          models_ = java.util.Collections.emptyList();
        } else {
          models_ = null;
          modelsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        if (physicalConstantsBuilder_ == null) {
          physicalConstants_ = null;
        } else {
          physicalConstants_ = null;
          physicalConstantsBuilder_ = null;
        }
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Concept.internal_static_Messages_System_descriptor;
      }

      @java.lang.Override
      public Messages.Concept.System getDefaultInstanceForType() {
        return Messages.Concept.System.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Concept.System build() {
        Messages.Concept.System result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Concept.System buildPartial() {
        Messages.Concept.System result = new Messages.Concept.System(this);
        int from_bitField0_ = bitField0_;
        if (metaBuilder_ == null) {
          result.meta_ = meta_;
        } else {
          result.meta_ = metaBuilder_.build();
        }
        if (scriptBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            script_ = java.util.Collections.unmodifiableList(script_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.script_ = script_;
        } else {
          result.script_ = scriptBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          localTransform_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.localTransform_ = localTransform_;
        if (((bitField0_ & 0x00000004) != 0)) {
          localRate_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.localRate_ = localRate_;
        if (((bitField0_ & 0x00000008) != 0)) {
          localAccel_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.localAccel_ = localAccel_;
        if (((bitField0_ & 0x00000010) != 0)) {
          children_ = children_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.children_ = children_;
        if (((bitField0_ & 0x00000020) != 0)) {
          referencedFiles_ = referencedFiles_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.referencedFiles_ = referencedFiles_;
        if (embeddedFilesBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            embeddedFiles_ = java.util.Collections.unmodifiableList(embeddedFiles_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.embeddedFiles_ = embeddedFiles_;
        } else {
          result.embeddedFiles_ = embeddedFilesBuilder_.build();
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          notes_ = notes_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.notes_ = notes_;
        if (couplingsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            couplings_ = java.util.Collections.unmodifiableList(couplings_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.couplings_ = couplings_;
        } else {
          result.couplings_ = couplingsBuilder_.build();
        }
        if (modelsBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0)) {
            models_ = java.util.Collections.unmodifiableList(models_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.models_ = models_;
        } else {
          result.models_ = modelsBuilder_.build();
        }
        if (physicalConstantsBuilder_ == null) {
          result.physicalConstants_ = physicalConstants_;
        } else {
          result.physicalConstants_ = physicalConstantsBuilder_.build();
        }
        if (conditionsBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0)) {
            conditions_ = java.util.Collections.unmodifiableList(conditions_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.conditions_ = conditions_;
        } else {
          result.conditions_ = conditionsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Messages.Concept.System) {
          return mergeFrom((Messages.Concept.System)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Messages.Concept.System other) {
        if (other == Messages.Concept.System.getDefaultInstance()) return this;
        if (other.hasMeta()) {
          mergeMeta(other.getMeta());
        }
        if (scriptBuilder_ == null) {
          if (!other.script_.isEmpty()) {
            if (script_.isEmpty()) {
              script_ = other.script_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureScriptIsMutable();
              script_.addAll(other.script_);
            }
            onChanged();
          }
        } else {
          if (!other.script_.isEmpty()) {
            if (scriptBuilder_.isEmpty()) {
              scriptBuilder_.dispose();
              scriptBuilder_ = null;
              script_ = other.script_;
              bitField0_ = (bitField0_ & ~0x00000001);
              scriptBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getScriptFieldBuilder() : null;
            } else {
              scriptBuilder_.addAllMessages(other.script_);
            }
          }
        }
        if (!other.localTransform_.isEmpty()) {
          if (localTransform_.isEmpty()) {
            localTransform_ = other.localTransform_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureLocalTransformIsMutable();
            localTransform_.addAll(other.localTransform_);
          }
          onChanged();
        }
        if (!other.localRate_.isEmpty()) {
          if (localRate_.isEmpty()) {
            localRate_ = other.localRate_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureLocalRateIsMutable();
            localRate_.addAll(other.localRate_);
          }
          onChanged();
        }
        if (!other.localAccel_.isEmpty()) {
          if (localAccel_.isEmpty()) {
            localAccel_ = other.localAccel_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureLocalAccelIsMutable();
            localAccel_.addAll(other.localAccel_);
          }
          onChanged();
        }
        if (!other.children_.isEmpty()) {
          if (children_.isEmpty()) {
            children_ = other.children_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureChildrenIsMutable();
            children_.addAll(other.children_);
          }
          onChanged();
        }
        if (!other.referencedFiles_.isEmpty()) {
          if (referencedFiles_.isEmpty()) {
            referencedFiles_ = other.referencedFiles_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureReferencedFilesIsMutable();
            referencedFiles_.addAll(other.referencedFiles_);
          }
          onChanged();
        }
        if (embeddedFilesBuilder_ == null) {
          if (!other.embeddedFiles_.isEmpty()) {
            if (embeddedFiles_.isEmpty()) {
              embeddedFiles_ = other.embeddedFiles_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureEmbeddedFilesIsMutable();
              embeddedFiles_.addAll(other.embeddedFiles_);
            }
            onChanged();
          }
        } else {
          if (!other.embeddedFiles_.isEmpty()) {
            if (embeddedFilesBuilder_.isEmpty()) {
              embeddedFilesBuilder_.dispose();
              embeddedFilesBuilder_ = null;
              embeddedFiles_ = other.embeddedFiles_;
              bitField0_ = (bitField0_ & ~0x00000040);
              embeddedFilesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEmbeddedFilesFieldBuilder() : null;
            } else {
              embeddedFilesBuilder_.addAllMessages(other.embeddedFiles_);
            }
          }
        }
        if (!other.notes_.isEmpty()) {
          if (notes_.isEmpty()) {
            notes_ = other.notes_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureNotesIsMutable();
            notes_.addAll(other.notes_);
          }
          onChanged();
        }
        if (couplingsBuilder_ == null) {
          if (!other.couplings_.isEmpty()) {
            if (couplings_.isEmpty()) {
              couplings_ = other.couplings_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureCouplingsIsMutable();
              couplings_.addAll(other.couplings_);
            }
            onChanged();
          }
        } else {
          if (!other.couplings_.isEmpty()) {
            if (couplingsBuilder_.isEmpty()) {
              couplingsBuilder_.dispose();
              couplingsBuilder_ = null;
              couplings_ = other.couplings_;
              bitField0_ = (bitField0_ & ~0x00000100);
              couplingsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getCouplingsFieldBuilder() : null;
            } else {
              couplingsBuilder_.addAllMessages(other.couplings_);
            }
          }
        }
        if (modelsBuilder_ == null) {
          if (!other.models_.isEmpty()) {
            if (models_.isEmpty()) {
              models_ = other.models_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureModelsIsMutable();
              models_.addAll(other.models_);
            }
            onChanged();
          }
        } else {
          if (!other.models_.isEmpty()) {
            if (modelsBuilder_.isEmpty()) {
              modelsBuilder_.dispose();
              modelsBuilder_ = null;
              models_ = other.models_;
              bitField0_ = (bitField0_ & ~0x00000200);
              modelsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getModelsFieldBuilder() : null;
            } else {
              modelsBuilder_.addAllMessages(other.models_);
            }
          }
        }
        if (other.hasPhysicalConstants()) {
          mergePhysicalConstants(other.getPhysicalConstants());
        }
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000400);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getMetaFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              case 18: {
                Messages.Concept.Script m =
                    input.readMessage(
                        Messages.Concept.Script.parser(),
                        extensionRegistry);
                if (scriptBuilder_ == null) {
                  ensureScriptIsMutable();
                  script_.add(m);
                } else {
                  scriptBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 25: {
                double v = input.readDouble();
                ensureLocalTransformIsMutable();
                localTransform_.addDouble(v);
                break;
              } // case 25
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureLocalTransformIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  localTransform_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 33: {
                double v = input.readDouble();
                ensureLocalRateIsMutable();
                localRate_.addDouble(v);
                break;
              } // case 33
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureLocalRateIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  localRate_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 41: {
                double v = input.readDouble();
                ensureLocalAccelIsMutable();
                localAccel_.addDouble(v);
                break;
              } // case 41
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureLocalAccelIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  localAccel_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 42
              case 50: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureChildrenIsMutable();
                children_.add(s);
                break;
              } // case 50
              case 58: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureReferencedFilesIsMutable();
                referencedFiles_.add(s);
                break;
              } // case 58
              case 66: {
                Messages.Vector.File m =
                    input.readMessage(
                        Messages.Vector.File.parser(),
                        extensionRegistry);
                if (embeddedFilesBuilder_ == null) {
                  ensureEmbeddedFilesIsMutable();
                  embeddedFiles_.add(m);
                } else {
                  embeddedFilesBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 74: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureNotesIsMutable();
                notes_.add(s);
                break;
              } // case 74
              case 82: {
                Messages.Concept.Coupling m =
                    input.readMessage(
                        Messages.Concept.Coupling.parser(),
                        extensionRegistry);
                if (couplingsBuilder_ == null) {
                  ensureCouplingsIsMutable();
                  couplings_.add(m);
                } else {
                  couplingsBuilder_.addMessage(m);
                }
                break;
              } // case 82
              case 90: {
                Messages.Concept.Model m =
                    input.readMessage(
                        Messages.Concept.Model.parser(),
                        extensionRegistry);
                if (modelsBuilder_ == null) {
                  ensureModelsIsMutable();
                  models_.add(m);
                } else {
                  modelsBuilder_.addMessage(m);
                }
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getPhysicalConstantsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 98
              case 106: {
                Messages.Concept.Command m =
                    input.readMessage(
                        Messages.Concept.Command.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.addMessage(m);
                }
                break;
              } // case 106
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private Messages.MetaOuterClass.Meta meta_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.MetaOuterClass.Meta, Messages.MetaOuterClass.Meta.Builder, Messages.MetaOuterClass.MetaOrBuilder> metaBuilder_;
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       * @return Whether the meta field is set.
       */
      public boolean hasMeta() {
        return metaBuilder_ != null || meta_ != null;
      }
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       * @return The meta.
       */
      public Messages.MetaOuterClass.Meta getMeta() {
        if (metaBuilder_ == null) {
          return meta_ == null ? Messages.MetaOuterClass.Meta.getDefaultInstance() : meta_;
        } else {
          return metaBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       */
      public Builder setMeta(Messages.MetaOuterClass.Meta value) {
        if (metaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          meta_ = value;
          onChanged();
        } else {
          metaBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       */
      public Builder setMeta(
          Messages.MetaOuterClass.Meta.Builder builderForValue) {
        if (metaBuilder_ == null) {
          meta_ = builderForValue.build();
          onChanged();
        } else {
          metaBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       */
      public Builder mergeMeta(Messages.MetaOuterClass.Meta value) {
        if (metaBuilder_ == null) {
          if (meta_ != null) {
            meta_ =
              Messages.MetaOuterClass.Meta.newBuilder(meta_).mergeFrom(value).buildPartial();
          } else {
            meta_ = value;
          }
          onChanged();
        } else {
          metaBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       */
      public Builder clearMeta() {
        if (metaBuilder_ == null) {
          meta_ = null;
          onChanged();
        } else {
          meta_ = null;
          metaBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       */
      public Messages.MetaOuterClass.Meta.Builder getMetaBuilder() {
        
        onChanged();
        return getMetaFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       */
      public Messages.MetaOuterClass.MetaOrBuilder getMetaOrBuilder() {
        if (metaBuilder_ != null) {
          return metaBuilder_.getMessageOrBuilder();
        } else {
          return meta_ == null ?
              Messages.MetaOuterClass.Meta.getDefaultInstance() : meta_;
        }
      }
      /**
       * <pre>
       * name and other basic info, some of which is non-persistent 
       * </pre>
       *
       * <code>.Messages.Meta meta = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.MetaOuterClass.Meta, Messages.MetaOuterClass.Meta.Builder, Messages.MetaOuterClass.MetaOrBuilder> 
          getMetaFieldBuilder() {
        if (metaBuilder_ == null) {
          metaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.MetaOuterClass.Meta, Messages.MetaOuterClass.Meta.Builder, Messages.MetaOuterClass.MetaOrBuilder>(
                  getMeta(),
                  getParentForChildren(),
                  isClean());
          meta_ = null;
        }
        return metaBuilder_;
      }

      private java.util.List<Messages.Concept.Script> script_ =
        java.util.Collections.emptyList();
      private void ensureScriptIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          script_ = new java.util.ArrayList<Messages.Concept.Script>(script_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder> scriptBuilder_;

      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public java.util.List<Messages.Concept.Script> getScriptList() {
        if (scriptBuilder_ == null) {
          return java.util.Collections.unmodifiableList(script_);
        } else {
          return scriptBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public int getScriptCount() {
        if (scriptBuilder_ == null) {
          return script_.size();
        } else {
          return scriptBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Messages.Concept.Script getScript(int index) {
        if (scriptBuilder_ == null) {
          return script_.get(index);
        } else {
          return scriptBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder setScript(
          int index, Messages.Concept.Script value) {
        if (scriptBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScriptIsMutable();
          script_.set(index, value);
          onChanged();
        } else {
          scriptBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder setScript(
          int index, Messages.Concept.Script.Builder builderForValue) {
        if (scriptBuilder_ == null) {
          ensureScriptIsMutable();
          script_.set(index, builderForValue.build());
          onChanged();
        } else {
          scriptBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder addScript(Messages.Concept.Script value) {
        if (scriptBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScriptIsMutable();
          script_.add(value);
          onChanged();
        } else {
          scriptBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder addScript(
          int index, Messages.Concept.Script value) {
        if (scriptBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScriptIsMutable();
          script_.add(index, value);
          onChanged();
        } else {
          scriptBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder addScript(
          Messages.Concept.Script.Builder builderForValue) {
        if (scriptBuilder_ == null) {
          ensureScriptIsMutable();
          script_.add(builderForValue.build());
          onChanged();
        } else {
          scriptBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder addScript(
          int index, Messages.Concept.Script.Builder builderForValue) {
        if (scriptBuilder_ == null) {
          ensureScriptIsMutable();
          script_.add(index, builderForValue.build());
          onChanged();
        } else {
          scriptBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder addAllScript(
          java.lang.Iterable<? extends Messages.Concept.Script> values) {
        if (scriptBuilder_ == null) {
          ensureScriptIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, script_);
          onChanged();
        } else {
          scriptBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder clearScript() {
        if (scriptBuilder_ == null) {
          script_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          scriptBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Builder removeScript(int index) {
        if (scriptBuilder_ == null) {
          ensureScriptIsMutable();
          script_.remove(index);
          onChanged();
        } else {
          scriptBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Messages.Concept.Script.Builder getScriptBuilder(
          int index) {
        return getScriptFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Messages.Concept.ScriptOrBuilder getScriptOrBuilder(
          int index) {
        if (scriptBuilder_ == null) {
          return script_.get(index);  } else {
          return scriptBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public java.util.List<? extends Messages.Concept.ScriptOrBuilder> 
           getScriptOrBuilderList() {
        if (scriptBuilder_ != null) {
          return scriptBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(script_);
        }
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Messages.Concept.Script.Builder addScriptBuilder() {
        return getScriptFieldBuilder().addBuilder(
            Messages.Concept.Script.getDefaultInstance());
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public Messages.Concept.Script.Builder addScriptBuilder(
          int index) {
        return getScriptFieldBuilder().addBuilder(
            index, Messages.Concept.Script.getDefaultInstance());
      }
      /**
       * <pre>
       * serialized solver defined by a sequence of instructions
       * </pre>
       *
       * <code>repeated .Messages.Script script = 2;</code>
       */
      public java.util.List<Messages.Concept.Script.Builder> 
           getScriptBuilderList() {
        return getScriptFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder> 
          getScriptFieldBuilder() {
        if (scriptBuilder_ == null) {
          scriptBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Concept.Script, Messages.Concept.Script.Builder, Messages.Concept.ScriptOrBuilder>(
                  script_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          script_ = null;
        }
        return scriptBuilder_;
      }

      private com.google.protobuf.Internal.DoubleList localTransform_ = emptyDoubleList();
      private void ensureLocalTransformIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          localTransform_ = mutableCopy(localTransform_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_transform = 3;</code>
       * @return A list containing the localTransform.
       */
      public java.util.List<java.lang.Double>
          getLocalTransformList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(localTransform_) : localTransform_;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_transform = 3;</code>
       * @return The count of localTransform.
       */
      public int getLocalTransformCount() {
        return localTransform_.size();
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_transform = 3;</code>
       * @param index The index of the element to return.
       * @return The localTransform at the given index.
       */
      public double getLocalTransform(int index) {
        return localTransform_.getDouble(index);
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_transform = 3;</code>
       * @param index The index to set the value at.
       * @param value The localTransform to set.
       * @return This builder for chaining.
       */
      public Builder setLocalTransform(
          int index, double value) {
        ensureLocalTransformIsMutable();
        localTransform_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_transform = 3;</code>
       * @param value The localTransform to add.
       * @return This builder for chaining.
       */
      public Builder addLocalTransform(double value) {
        ensureLocalTransformIsMutable();
        localTransform_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_transform = 3;</code>
       * @param values The localTransform to add.
       * @return This builder for chaining.
       */
      public Builder addAllLocalTransform(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureLocalTransformIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, localTransform_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_transform = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLocalTransform() {
        localTransform_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList localRate_ = emptyDoubleList();
      private void ensureLocalRateIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          localRate_ = mutableCopy(localRate_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_rate = 4;</code>
       * @return A list containing the localRate.
       */
      public java.util.List<java.lang.Double>
          getLocalRateList() {
        return ((bitField0_ & 0x00000004) != 0) ?
                 java.util.Collections.unmodifiableList(localRate_) : localRate_;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_rate = 4;</code>
       * @return The count of localRate.
       */
      public int getLocalRateCount() {
        return localRate_.size();
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_rate = 4;</code>
       * @param index The index of the element to return.
       * @return The localRate at the given index.
       */
      public double getLocalRate(int index) {
        return localRate_.getDouble(index);
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_rate = 4;</code>
       * @param index The index to set the value at.
       * @param value The localRate to set.
       * @return This builder for chaining.
       */
      public Builder setLocalRate(
          int index, double value) {
        ensureLocalRateIsMutable();
        localRate_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_rate = 4;</code>
       * @param value The localRate to add.
       * @return This builder for chaining.
       */
      public Builder addLocalRate(double value) {
        ensureLocalRateIsMutable();
        localRate_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_rate = 4;</code>
       * @param values The localRate to add.
       * @return This builder for chaining.
       */
      public Builder addAllLocalRate(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureLocalRateIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, localRate_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_rate = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearLocalRate() {
        localRate_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList localAccel_ = emptyDoubleList();
      private void ensureLocalAccelIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          localAccel_ = mutableCopy(localAccel_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_accel = 5;</code>
       * @return A list containing the localAccel.
       */
      public java.util.List<java.lang.Double>
          getLocalAccelList() {
        return ((bitField0_ & 0x00000008) != 0) ?
                 java.util.Collections.unmodifiableList(localAccel_) : localAccel_;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_accel = 5;</code>
       * @return The count of localAccel.
       */
      public int getLocalAccelCount() {
        return localAccel_.size();
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_accel = 5;</code>
       * @param index The index of the element to return.
       * @return The localAccel at the given index.
       */
      public double getLocalAccel(int index) {
        return localAccel_.getDouble(index);
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_accel = 5;</code>
       * @param index The index to set the value at.
       * @param value The localAccel to set.
       * @return This builder for chaining.
       */
      public Builder setLocalAccel(
          int index, double value) {
        ensureLocalAccelIsMutable();
        localAccel_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_accel = 5;</code>
       * @param value The localAccel to add.
       * @return This builder for chaining.
       */
      public Builder addLocalAccel(double value) {
        ensureLocalAccelIsMutable();
        localAccel_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_accel = 5;</code>
       * @param values The localAccel to add.
       * @return This builder for chaining.
       */
      public Builder addAllLocalAccel(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureLocalAccelIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, localAccel_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * double16 (glm::dmat4) local transformation matrix
       * </pre>
       *
       * <code>repeated double local_accel = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearLocalAccel() {
        localAccel_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList children_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureChildrenIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          children_ = new com.google.protobuf.LazyStringArrayList(children_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @return A list containing the children.
       */
      public com.google.protobuf.ProtocolStringList
          getChildrenList() {
        return children_.getUnmodifiableView();
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @return The count of children.
       */
      public int getChildrenCount() {
        return children_.size();
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @param index The index of the element to return.
       * @return The children at the given index.
       */
      public java.lang.String getChildren(int index) {
        return children_.get(index);
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the children at the given index.
       */
      public com.google.protobuf.ByteString
          getChildrenBytes(int index) {
        return children_.getByteString(index);
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @param index The index to set the value at.
       * @param value The children to set.
       * @return This builder for chaining.
       */
      public Builder setChildren(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureChildrenIsMutable();
        children_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @param value The children to add.
       * @return This builder for chaining.
       */
      public Builder addChildren(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureChildrenIsMutable();
        children_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @param values The children to add.
       * @return This builder for chaining.
       */
      public Builder addAllChildren(
          java.lang.Iterable<java.lang.String> values) {
        ensureChildrenIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, children_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearChildren() {
        children_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sub-system names (exact matches)
       * </pre>
       *
       * <code>repeated string children = 6;</code>
       * @param value The bytes of the children to add.
       * @return This builder for chaining.
       */
      public Builder addChildrenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureChildrenIsMutable();
        children_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList referencedFiles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureReferencedFilesIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          referencedFiles_ = new com.google.protobuf.LazyStringArrayList(referencedFiles_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @return A list containing the referencedFiles.
       */
      public com.google.protobuf.ProtocolStringList
          getReferencedFilesList() {
        return referencedFiles_.getUnmodifiableView();
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @return The count of referencedFiles.
       */
      public int getReferencedFilesCount() {
        return referencedFiles_.size();
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @param index The index of the element to return.
       * @return The referencedFiles at the given index.
       */
      public java.lang.String getReferencedFiles(int index) {
        return referencedFiles_.get(index);
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the referencedFiles at the given index.
       */
      public com.google.protobuf.ByteString
          getReferencedFilesBytes(int index) {
        return referencedFiles_.getByteString(index);
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @param index The index to set the value at.
       * @param value The referencedFiles to set.
       * @return This builder for chaining.
       */
      public Builder setReferencedFiles(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureReferencedFilesIsMutable();
        referencedFiles_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @param value The referencedFiles to add.
       * @return This builder for chaining.
       */
      public Builder addReferencedFiles(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureReferencedFilesIsMutable();
        referencedFiles_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @param values The referencedFiles to add.
       * @return This builder for chaining.
       */
      public Builder addAllReferencedFiles(
          java.lang.Iterable<java.lang.String> values) {
        ensureReferencedFilesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, referencedFiles_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearReferencedFiles() {
        referencedFiles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * external file references, such as *.xcg geometry (Messages::Topology)
       * </pre>
       *
       * <code>repeated string referenced_files = 7;</code>
       * @param value The bytes of the referencedFiles to add.
       * @return This builder for chaining.
       */
      public Builder addReferencedFilesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureReferencedFilesIsMutable();
        referencedFiles_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<Messages.Vector.File> embeddedFiles_ =
        java.util.Collections.emptyList();
      private void ensureEmbeddedFilesIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          embeddedFiles_ = new java.util.ArrayList<Messages.Vector.File>(embeddedFiles_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.File, Messages.Vector.File.Builder, Messages.Vector.FileOrBuilder> embeddedFilesBuilder_;

      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public java.util.List<Messages.Vector.File> getEmbeddedFilesList() {
        if (embeddedFilesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(embeddedFiles_);
        } else {
          return embeddedFilesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public int getEmbeddedFilesCount() {
        if (embeddedFilesBuilder_ == null) {
          return embeddedFiles_.size();
        } else {
          return embeddedFilesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Messages.Vector.File getEmbeddedFiles(int index) {
        if (embeddedFilesBuilder_ == null) {
          return embeddedFiles_.get(index);
        } else {
          return embeddedFilesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder setEmbeddedFiles(
          int index, Messages.Vector.File value) {
        if (embeddedFilesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEmbeddedFilesIsMutable();
          embeddedFiles_.set(index, value);
          onChanged();
        } else {
          embeddedFilesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder setEmbeddedFiles(
          int index, Messages.Vector.File.Builder builderForValue) {
        if (embeddedFilesBuilder_ == null) {
          ensureEmbeddedFilesIsMutable();
          embeddedFiles_.set(index, builderForValue.build());
          onChanged();
        } else {
          embeddedFilesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder addEmbeddedFiles(Messages.Vector.File value) {
        if (embeddedFilesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEmbeddedFilesIsMutable();
          embeddedFiles_.add(value);
          onChanged();
        } else {
          embeddedFilesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder addEmbeddedFiles(
          int index, Messages.Vector.File value) {
        if (embeddedFilesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEmbeddedFilesIsMutable();
          embeddedFiles_.add(index, value);
          onChanged();
        } else {
          embeddedFilesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder addEmbeddedFiles(
          Messages.Vector.File.Builder builderForValue) {
        if (embeddedFilesBuilder_ == null) {
          ensureEmbeddedFilesIsMutable();
          embeddedFiles_.add(builderForValue.build());
          onChanged();
        } else {
          embeddedFilesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder addEmbeddedFiles(
          int index, Messages.Vector.File.Builder builderForValue) {
        if (embeddedFilesBuilder_ == null) {
          ensureEmbeddedFilesIsMutable();
          embeddedFiles_.add(index, builderForValue.build());
          onChanged();
        } else {
          embeddedFilesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder addAllEmbeddedFiles(
          java.lang.Iterable<? extends Messages.Vector.File> values) {
        if (embeddedFilesBuilder_ == null) {
          ensureEmbeddedFilesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, embeddedFiles_);
          onChanged();
        } else {
          embeddedFilesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder clearEmbeddedFiles() {
        if (embeddedFilesBuilder_ == null) {
          embeddedFiles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          embeddedFilesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Builder removeEmbeddedFiles(int index) {
        if (embeddedFilesBuilder_ == null) {
          ensureEmbeddedFilesIsMutable();
          embeddedFiles_.remove(index);
          onChanged();
        } else {
          embeddedFilesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Messages.Vector.File.Builder getEmbeddedFilesBuilder(
          int index) {
        return getEmbeddedFilesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Messages.Vector.FileOrBuilder getEmbeddedFilesOrBuilder(
          int index) {
        if (embeddedFilesBuilder_ == null) {
          return embeddedFiles_.get(index);  } else {
          return embeddedFilesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public java.util.List<? extends Messages.Vector.FileOrBuilder> 
           getEmbeddedFilesOrBuilderList() {
        if (embeddedFilesBuilder_ != null) {
          return embeddedFilesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(embeddedFiles_);
        }
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Messages.Vector.File.Builder addEmbeddedFilesBuilder() {
        return getEmbeddedFilesFieldBuilder().addBuilder(
            Messages.Vector.File.getDefaultInstance());
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public Messages.Vector.File.Builder addEmbeddedFilesBuilder(
          int index) {
        return getEmbeddedFilesFieldBuilder().addBuilder(
            index, Messages.Vector.File.getDefaultInstance());
      }
      /**
       * <pre>
       * files such as symbol and supporting documentation
       * </pre>
       *
       * <code>repeated .Messages.File embedded_files = 8;</code>
       */
      public java.util.List<Messages.Vector.File.Builder> 
           getEmbeddedFilesBuilderList() {
        return getEmbeddedFilesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.File, Messages.Vector.File.Builder, Messages.Vector.FileOrBuilder> 
          getEmbeddedFilesFieldBuilder() {
        if (embeddedFilesBuilder_ == null) {
          embeddedFilesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Vector.File, Messages.Vector.File.Builder, Messages.Vector.FileOrBuilder>(
                  embeddedFiles_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          embeddedFiles_ = null;
        }
        return embeddedFilesBuilder_;
      }

      private com.google.protobuf.LazyStringList notes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureNotesIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          notes_ = new com.google.protobuf.LazyStringArrayList(notes_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @return A list containing the notes.
       */
      public com.google.protobuf.ProtocolStringList
          getNotesList() {
        return notes_.getUnmodifiableView();
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @return The count of notes.
       */
      public int getNotesCount() {
        return notes_.size();
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @param index The index of the element to return.
       * @return The notes at the given index.
       */
      public java.lang.String getNotes(int index) {
        return notes_.get(index);
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the notes at the given index.
       */
      public com.google.protobuf.ByteString
          getNotesBytes(int index) {
        return notes_.getByteString(index);
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @param index The index to set the value at.
       * @param value The notes to set.
       * @return This builder for chaining.
       */
      public Builder setNotes(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNotesIsMutable();
        notes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @param value The notes to add.
       * @return This builder for chaining.
       */
      public Builder addNotes(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNotesIsMutable();
        notes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @param values The notes to add.
       * @return This builder for chaining.
       */
      public Builder addAllNotes(
          java.lang.Iterable<java.lang.String> values) {
        ensureNotesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, notes_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearNotes() {
        notes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string notes = 9;</code>
       * @param value The bytes of the notes to add.
       * @return This builder for chaining.
       */
      public Builder addNotesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureNotesIsMutable();
        notes_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<Messages.Concept.Coupling> couplings_ =
        java.util.Collections.emptyList();
      private void ensureCouplingsIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          couplings_ = new java.util.ArrayList<Messages.Concept.Coupling>(couplings_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Coupling, Messages.Concept.Coupling.Builder, Messages.Concept.CouplingOrBuilder> couplingsBuilder_;

      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public java.util.List<Messages.Concept.Coupling> getCouplingsList() {
        if (couplingsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(couplings_);
        } else {
          return couplingsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public int getCouplingsCount() {
        if (couplingsBuilder_ == null) {
          return couplings_.size();
        } else {
          return couplingsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Messages.Concept.Coupling getCouplings(int index) {
        if (couplingsBuilder_ == null) {
          return couplings_.get(index);
        } else {
          return couplingsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder setCouplings(
          int index, Messages.Concept.Coupling value) {
        if (couplingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCouplingsIsMutable();
          couplings_.set(index, value);
          onChanged();
        } else {
          couplingsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder setCouplings(
          int index, Messages.Concept.Coupling.Builder builderForValue) {
        if (couplingsBuilder_ == null) {
          ensureCouplingsIsMutable();
          couplings_.set(index, builderForValue.build());
          onChanged();
        } else {
          couplingsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder addCouplings(Messages.Concept.Coupling value) {
        if (couplingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCouplingsIsMutable();
          couplings_.add(value);
          onChanged();
        } else {
          couplingsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder addCouplings(
          int index, Messages.Concept.Coupling value) {
        if (couplingsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCouplingsIsMutable();
          couplings_.add(index, value);
          onChanged();
        } else {
          couplingsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder addCouplings(
          Messages.Concept.Coupling.Builder builderForValue) {
        if (couplingsBuilder_ == null) {
          ensureCouplingsIsMutable();
          couplings_.add(builderForValue.build());
          onChanged();
        } else {
          couplingsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder addCouplings(
          int index, Messages.Concept.Coupling.Builder builderForValue) {
        if (couplingsBuilder_ == null) {
          ensureCouplingsIsMutable();
          couplings_.add(index, builderForValue.build());
          onChanged();
        } else {
          couplingsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder addAllCouplings(
          java.lang.Iterable<? extends Messages.Concept.Coupling> values) {
        if (couplingsBuilder_ == null) {
          ensureCouplingsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, couplings_);
          onChanged();
        } else {
          couplingsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder clearCouplings() {
        if (couplingsBuilder_ == null) {
          couplings_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          couplingsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Builder removeCouplings(int index) {
        if (couplingsBuilder_ == null) {
          ensureCouplingsIsMutable();
          couplings_.remove(index);
          onChanged();
        } else {
          couplingsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Messages.Concept.Coupling.Builder getCouplingsBuilder(
          int index) {
        return getCouplingsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Messages.Concept.CouplingOrBuilder getCouplingsOrBuilder(
          int index) {
        if (couplingsBuilder_ == null) {
          return couplings_.get(index);  } else {
          return couplingsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public java.util.List<? extends Messages.Concept.CouplingOrBuilder> 
           getCouplingsOrBuilderList() {
        if (couplingsBuilder_ != null) {
          return couplingsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(couplings_);
        }
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Messages.Concept.Coupling.Builder addCouplingsBuilder() {
        return getCouplingsFieldBuilder().addBuilder(
            Messages.Concept.Coupling.getDefaultInstance());
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public Messages.Concept.Coupling.Builder addCouplingsBuilder(
          int index) {
        return getCouplingsFieldBuilder().addBuilder(
            index, Messages.Concept.Coupling.getDefaultInstance());
      }
      /**
       * <pre>
       * links and contacts between regions
       * </pre>
       *
       * <code>repeated .Messages.Coupling couplings = 10;</code>
       */
      public java.util.List<Messages.Concept.Coupling.Builder> 
           getCouplingsBuilderList() {
        return getCouplingsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Coupling, Messages.Concept.Coupling.Builder, Messages.Concept.CouplingOrBuilder> 
          getCouplingsFieldBuilder() {
        if (couplingsBuilder_ == null) {
          couplingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Concept.Coupling, Messages.Concept.Coupling.Builder, Messages.Concept.CouplingOrBuilder>(
                  couplings_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          couplings_ = null;
        }
        return couplingsBuilder_;
      }

      private java.util.List<Messages.Concept.Model> models_ =
        java.util.Collections.emptyList();
      private void ensureModelsIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          models_ = new java.util.ArrayList<Messages.Concept.Model>(models_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Model, Messages.Concept.Model.Builder, Messages.Concept.ModelOrBuilder> modelsBuilder_;

      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public java.util.List<Messages.Concept.Model> getModelsList() {
        if (modelsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(models_);
        } else {
          return modelsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public int getModelsCount() {
        if (modelsBuilder_ == null) {
          return models_.size();
        } else {
          return modelsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Messages.Concept.Model getModels(int index) {
        if (modelsBuilder_ == null) {
          return models_.get(index);
        } else {
          return modelsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder setModels(
          int index, Messages.Concept.Model value) {
        if (modelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelsIsMutable();
          models_.set(index, value);
          onChanged();
        } else {
          modelsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder setModels(
          int index, Messages.Concept.Model.Builder builderForValue) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          models_.set(index, builderForValue.build());
          onChanged();
        } else {
          modelsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder addModels(Messages.Concept.Model value) {
        if (modelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelsIsMutable();
          models_.add(value);
          onChanged();
        } else {
          modelsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder addModels(
          int index, Messages.Concept.Model value) {
        if (modelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelsIsMutable();
          models_.add(index, value);
          onChanged();
        } else {
          modelsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder addModels(
          Messages.Concept.Model.Builder builderForValue) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          models_.add(builderForValue.build());
          onChanged();
        } else {
          modelsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder addModels(
          int index, Messages.Concept.Model.Builder builderForValue) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          models_.add(index, builderForValue.build());
          onChanged();
        } else {
          modelsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder addAllModels(
          java.lang.Iterable<? extends Messages.Concept.Model> values) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, models_);
          onChanged();
        } else {
          modelsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder clearModels() {
        if (modelsBuilder_ == null) {
          models_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          modelsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Builder removeModels(int index) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          models_.remove(index);
          onChanged();
        } else {
          modelsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Messages.Concept.Model.Builder getModelsBuilder(
          int index) {
        return getModelsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Messages.Concept.ModelOrBuilder getModelsOrBuilder(
          int index) {
        if (modelsBuilder_ == null) {
          return models_.get(index);  } else {
          return modelsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public java.util.List<? extends Messages.Concept.ModelOrBuilder> 
           getModelsOrBuilderList() {
        if (modelsBuilder_ != null) {
          return modelsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(models_);
        }
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Messages.Concept.Model.Builder addModelsBuilder() {
        return getModelsFieldBuilder().addBuilder(
            Messages.Concept.Model.getDefaultInstance());
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public Messages.Concept.Model.Builder addModelsBuilder(
          int index) {
        return getModelsFieldBuilder().addBuilder(
            index, Messages.Concept.Model.getDefaultInstance());
      }
      /**
       * <pre>
       * physical / mathematical models (groups of algorithms)
       * </pre>
       *
       * <code>repeated .Messages.Model models = 11;</code>
       */
      public java.util.List<Messages.Concept.Model.Builder> 
           getModelsBuilderList() {
        return getModelsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Model, Messages.Concept.Model.Builder, Messages.Concept.ModelOrBuilder> 
          getModelsFieldBuilder() {
        if (modelsBuilder_ == null) {
          modelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Concept.Model, Messages.Concept.Model.Builder, Messages.Concept.ModelOrBuilder>(
                  models_,
                  ((bitField0_ & 0x00000200) != 0),
                  getParentForChildren(),
                  isClean());
          models_ = null;
        }
        return modelsBuilder_;
      }

      private Messages.Vector.Record64 physicalConstants_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder> physicalConstantsBuilder_;
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       * @return Whether the physicalConstants field is set.
       */
      public boolean hasPhysicalConstants() {
        return physicalConstantsBuilder_ != null || physicalConstants_ != null;
      }
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       * @return The physicalConstants.
       */
      public Messages.Vector.Record64 getPhysicalConstants() {
        if (physicalConstantsBuilder_ == null) {
          return physicalConstants_ == null ? Messages.Vector.Record64.getDefaultInstance() : physicalConstants_;
        } else {
          return physicalConstantsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       */
      public Builder setPhysicalConstants(Messages.Vector.Record64 value) {
        if (physicalConstantsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          physicalConstants_ = value;
          onChanged();
        } else {
          physicalConstantsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       */
      public Builder setPhysicalConstants(
          Messages.Vector.Record64.Builder builderForValue) {
        if (physicalConstantsBuilder_ == null) {
          physicalConstants_ = builderForValue.build();
          onChanged();
        } else {
          physicalConstantsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       */
      public Builder mergePhysicalConstants(Messages.Vector.Record64 value) {
        if (physicalConstantsBuilder_ == null) {
          if (physicalConstants_ != null) {
            physicalConstants_ =
              Messages.Vector.Record64.newBuilder(physicalConstants_).mergeFrom(value).buildPartial();
          } else {
            physicalConstants_ = value;
          }
          onChanged();
        } else {
          physicalConstantsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       */
      public Builder clearPhysicalConstants() {
        if (physicalConstantsBuilder_ == null) {
          physicalConstants_ = null;
          onChanged();
        } else {
          physicalConstants_ = null;
          physicalConstantsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       */
      public Messages.Vector.Record64.Builder getPhysicalConstantsBuilder() {
        
        onChanged();
        return getPhysicalConstantsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       */
      public Messages.Vector.Record64OrBuilder getPhysicalConstantsOrBuilder() {
        if (physicalConstantsBuilder_ != null) {
          return physicalConstantsBuilder_.getMessageOrBuilder();
        } else {
          return physicalConstants_ == null ?
              Messages.Vector.Record64.getDefaultInstance() : physicalConstants_;
        }
      }
      /**
       * <pre>
       * physics.data and system requirements
       * </pre>
       *
       * <code>.Messages.Record64 physical_constants = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder> 
          getPhysicalConstantsFieldBuilder() {
        if (physicalConstantsBuilder_ == null) {
          physicalConstantsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.Record64, Messages.Vector.Record64.Builder, Messages.Vector.Record64OrBuilder>(
                  getPhysicalConstants(),
                  getParentForChildren(),
                  isClean());
          physicalConstants_ = null;
        }
        return physicalConstantsBuilder_;
      }

      private java.util.List<Messages.Concept.Command> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000400) != 0)) {
          conditions_ = new java.util.ArrayList<Messages.Concept.Command>(conditions_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public java.util.List<Messages.Concept.Command> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Messages.Concept.Command getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder setConditions(
          int index, Messages.Concept.Command value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.set(index, value);
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder setConditions(
          int index, Messages.Concept.Command.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder addConditions(Messages.Concept.Command value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder addConditions(
          int index, Messages.Concept.Command value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(index, value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder addConditions(
          Messages.Concept.Command.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder addConditions(
          int index, Messages.Concept.Command.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends Messages.Concept.Command> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Messages.Concept.Command.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Messages.Concept.CommandOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public java.util.List<? extends Messages.Concept.CommandOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Messages.Concept.Command.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            Messages.Concept.Command.getDefaultInstance());
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public Messages.Concept.Command.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, Messages.Concept.Command.getDefaultInstance());
      }
      /**
       * <pre>
       * special algorithm commands applied as constraints and conditions
       * </pre>
       *
       * <code>repeated .Messages.Command conditions = 13;</code>
       */
      public java.util.List<Messages.Concept.Command.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Concept.Command, Messages.Concept.Command.Builder, Messages.Concept.CommandOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000400) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.System)
    }

    // @@protoc_insertion_point(class_scope:Messages.System)
    private static final Messages.Concept.System DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Concept.System();
    }

    public static Messages.Concept.System getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<System>
        PARSER = new com.google.protobuf.AbstractParser<System>() {
      @java.lang.Override
      public System parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public Messages.Concept.System getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Variables_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Variables_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Function_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Function_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Command_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Command_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Script_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Script_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Model_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Model_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Coupling_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Coupling_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_System_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_System_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\rconcept.proto\022\010Messages\032\014vector.proto\032" +
      "\rspatial.proto\032\nmeta.proto\"\244\002\n\tVariables" +
      "\022\021\n\tint_names\030\002 \003(\t\022\022\n\nint_values\030\003 \003(\005\022" +
      "\030\n\020int_descriptions\030\004 \003(\t\022\022\n\nbool_names\030" +
      "\006 \003(\t\022\023\n\013bool_values\030\007 \003(\010\022\031\n\021bool_descr" +
      "iptions\030\010 \003(\t\022\024\n\014double_names\030\n \003(\t\022\025\n\rd" +
      "ouble_values\030\013 \003(\001\022\033\n\023double_description" +
      "s\030\014 \003(\t\022\024\n\014string_names\030\016 \003(\t\022\025\n\rstring_" +
      "values\030\017 \003(\t\022\033\n\023string_descriptions\030\020 \003(" +
      "\t\"\237\003\n\010Function\022\014\n\004name\030\001 \001(\t\022\026\n\016argument" +
      "_types\030\002 \003(\t\022\035\n\025argument_descriptions\030\003 " +
      "\003(\t\022\016\n\006inputs\030\004 \003(\t\022\017\n\007outputs\030\005 \003(\t\022\021\n\t" +
      "constants\030\006 \003(\t\022\025\n\rto_be_defined\030\007 \003(\t\022 " +
      "\n\004data\030\010 \003(\0132\022.Messages.Vector64\022\023\n\013cpu_" +
      "capable\030\n \001(\010\022\023\n\013gpu_capable\030\013 \001(\010\022\037\n\027in" +
      "clude_as_preprocessor\030\014 \001(\010\022\033\n\023omit_from" +
      "_main_loop\030\r \001(\010\022 \n\030include_as_postproce" +
      "ssor\030\016 \001(\010\022\032\n\022mutually_exclusive\030\017 \001(\010\022\021" +
      "\n\tonly_once\030\020 \001(\010\022\022\n\npush_front\030\021 \001(\010\022\024\n" +
      "\014dont_flatten\030\022 \001(\010\"\333\002\n\007Command\022$\n\010funct" +
      "ion\030\001 \001(\0132\022.Messages.Function\022\024\n\014args_ar" +
      "e_set\030\002 \001(\010\022\020\n\010is_ready\030\003 \001(\010\022\022\n\nexec_co" +
      "unt\030\004 \001(\004\022\021\n\tsimd_size\030\005 \001(\004\022\017\n\007version\030" +
      "\006 \001(\004\022\n\n\002id\030\007 \001(\003\022\020\n\010n_kernel\030\010 \001(\004\022\020\n\010p" +
      "rogress\030\t \001(\002\022\013\n\003msg\030\n \001(\t\022 \n\004data\030\014 \001(\013" +
      "2\022.Messages.Record64\022!\n\006before\030\r \003(\0132\021.M" +
      "essages.Command\022 \n\005after\030\016 \003(\0132\021.Message" +
      "s.Command\022\023\n\013region_type\030\017 \001(\r\022\021\n\tregion" +
      "_id\030\020 \001(\005\"\226\002\n\006Script\022\014\n\004name\030\001 \001(\t\022\013\n\003ms" +
      "g\030\002 \001(\t\022\023\n\013source_code\030\003 \001(\t\022\013\n\003uid\030\004 \001(" +
      "\003\022\016\n\006device\030\005 \001(\r\022\016\n\006status\030\006 \001(\r\022\r\n\005ord" +
      "er\030\007 \001(\r\022\020\n\010progress\030\010 \001(\002\022&\n\tvariables\030" +
      "\n \001(\0132\023.Messages.Variables\022#\n\010Sequence\030\014" +
      " \003(\0132\021.Messages.Command\022 \n\006before\030\016 \001(\0132" +
      "\020.Messages.Script\022\037\n\005after\030\017 \001(\0132\020.Messa" +
      "ges.Script\"\315\002\n\005Model\022\014\n\004name\030\001 \001(\t\022\014\n\004do" +
      "fs\030\003 \003(\t\022\022\n\nalgorithms\030\004 \003(\t\022\031\n\021availabl" +
      "e_outputs\030\005 \003(\t\022\030\n\020extra_properties\030\006 \003(" +
      "\t\022\035\n\025compatible_conditions\030\007 \003(\t\022#\n\nsub_" +
      "models\030\t \003(\0132\017.Messages.Model\022(\n\014default" +
      "_data\030\n \001(\0132\022.Messages.Record64\022\035\n\005rules" +
      "\030\013 \003(\0132\016.Messages.Rule\022#\n\013mutex_stack\030\014 " +
      "\003(\0132\016.Messages.Rule\022-\n\rmarkov_matrix\030\017 \001" +
      "(\0132\026.Messages.SparseMatrix\"\306\002\n\010Coupling\022" +
      "\025\n\rsource_system\030\001 \001(\t\022\025\n\rtarget_system\030" +
      "\002 \001(\t\022\022\n\nsource_uid\030\003 \001(\003\022\022\n\ntarget_uid\030" +
      "\004 \001(\003\022%\n\rsource_region\030\005 \001(\0132\016.Messages." +
      "Zone\022%\n\rtarget_region\030\006 \001(\0132\016.Messages.Z" +
      "one\022\025\n\rsampling_mode\030\t \001(\r\022\014\n\004name\030\n \001(\t" +
      "\022\014\n\004dofs\030\013 \003(\t\0220\n\016representation\030\014 \001(\0132\030" +
      ".Messages.Representation\022\017\n\007enabled\030\r \001(" +
      "\010\022\017\n\007forward\030\016 \001(\010\022\017\n\007reverse\030\017 \001(\010\"\214\003\n\006" +
      "System\022\034\n\004meta\030\001 \001(\0132\016.Messages.Meta\022 \n\006" +
      "script\030\002 \003(\0132\020.Messages.Script\022\027\n\017local_" +
      "transform\030\003 \003(\001\022\022\n\nlocal_rate\030\004 \003(\001\022\023\n\013l" +
      "ocal_accel\030\005 \003(\001\022\020\n\010children\030\006 \003(\t\022\030\n\020re" +
      "ferenced_files\030\007 \003(\t\022&\n\016embedded_files\030\010" +
      " \003(\0132\016.Messages.File\022\r\n\005notes\030\t \003(\t\022%\n\tc" +
      "ouplings\030\n \003(\0132\022.Messages.Coupling\022\037\n\006mo" +
      "dels\030\013 \003(\0132\017.Messages.Model\022.\n\022physical_" +
      "constants\030\014 \001(\0132\022.Messages.Record64\022%\n\nc" +
      "onditions\030\r \003(\0132\021.Messages.Commandb\006prot" +
      "o3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          Messages.Vector.getDescriptor(),
          Messages.Spatial.getDescriptor(),
          Messages.MetaOuterClass.getDescriptor(),
        });
    internal_static_Messages_Variables_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_Messages_Variables_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Variables_descriptor,
        new java.lang.String[] { "IntNames", "IntValues", "IntDescriptions", "BoolNames", "BoolValues", "BoolDescriptions", "DoubleNames", "DoubleValues", "DoubleDescriptions", "StringNames", "StringValues", "StringDescriptions", });
    internal_static_Messages_Function_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_Messages_Function_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Function_descriptor,
        new java.lang.String[] { "Name", "ArgumentTypes", "ArgumentDescriptions", "Inputs", "Outputs", "Constants", "ToBeDefined", "Data", "CpuCapable", "GpuCapable", "IncludeAsPreprocessor", "OmitFromMainLoop", "IncludeAsPostprocessor", "MutuallyExclusive", "OnlyOnce", "PushFront", "DontFlatten", });
    internal_static_Messages_Command_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_Messages_Command_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Command_descriptor,
        new java.lang.String[] { "Function", "ArgsAreSet", "IsReady", "ExecCount", "SimdSize", "Version", "Id", "NKernel", "Progress", "Msg", "Data", "Before", "After", "RegionType", "RegionId", });
    internal_static_Messages_Script_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_Messages_Script_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Script_descriptor,
        new java.lang.String[] { "Name", "Msg", "SourceCode", "Uid", "Device", "Status", "Order", "Progress", "Variables", "Sequence", "Before", "After", });
    internal_static_Messages_Model_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_Messages_Model_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Model_descriptor,
        new java.lang.String[] { "Name", "Dofs", "Algorithms", "AvailableOutputs", "ExtraProperties", "CompatibleConditions", "SubModels", "DefaultData", "Rules", "MutexStack", "MarkovMatrix", });
    internal_static_Messages_Coupling_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_Messages_Coupling_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Coupling_descriptor,
        new java.lang.String[] { "SourceSystem", "TargetSystem", "SourceUid", "TargetUid", "SourceRegion", "TargetRegion", "SamplingMode", "Name", "Dofs", "Representation", "Enabled", "Forward", "Reverse", });
    internal_static_Messages_System_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_Messages_System_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_System_descriptor,
        new java.lang.String[] { "Meta", "Script", "LocalTransform", "LocalRate", "LocalAccel", "Children", "ReferencedFiles", "EmbeddedFiles", "Notes", "Couplings", "Models", "PhysicalConstants", "Conditions", });
    Messages.Vector.getDescriptor();
    Messages.Spatial.getDescriptor();
    Messages.MetaOuterClass.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
