// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: tensorflow/core/protobuf/meta_graph.proto

package org.tensorflow.proto.framework;

/**
 * <pre>
 * NOTE: This protocol buffer is evolving, and will go through revisions in the
 * coming months.
 * Protocol buffer containing the following which are necessary to restart
 * training, run inference. It can be used to serialize/de-serialize memory
 * objects necessary for running computation in a graph when crossing the
 * process boundary. It can be used for long term storage of graphs,
 * cross-language execution of graphs, etc.
 *   MetaInfoDef
 *   GraphDef
 *   SaverDef
 *   CollectionDef
 *   TensorInfo
 *   SignatureDef
 * </pre>
 *
 * Protobuf type {@code tensorflow.MetaGraphDef}
 */
public  final class MetaGraphDef extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:tensorflow.MetaGraphDef)
    MetaGraphDefOrBuilder {
private static final long serialVersionUID = 0L;
  // Use MetaGraphDef.newBuilder() to construct.
  private MetaGraphDef(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private MetaGraphDef() {
    assetFileDef_ = java.util.Collections.emptyList();
  }

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

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet
  getUnknownFields() {
    return this.unknownFields;
  }
  private MetaGraphDef(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new java.lang.NullPointerException();
    }
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          case 10: {
            org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.Builder subBuilder = null;
            if (metaInfoDef_ != null) {
              subBuilder = metaInfoDef_.toBuilder();
            }
            metaInfoDef_ = input.readMessage(org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(metaInfoDef_);
              metaInfoDef_ = subBuilder.buildPartial();
            }

            break;
          }
          case 18: {
            org.tensorflow.proto.framework.GraphDef.Builder subBuilder = null;
            if (graphDef_ != null) {
              subBuilder = graphDef_.toBuilder();
            }
            graphDef_ = input.readMessage(org.tensorflow.proto.framework.GraphDef.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(graphDef_);
              graphDef_ = subBuilder.buildPartial();
            }

            break;
          }
          case 26: {
            org.tensorflow.proto.util.SaverDef.Builder subBuilder = null;
            if (saverDef_ != null) {
              subBuilder = saverDef_.toBuilder();
            }
            saverDef_ = input.readMessage(org.tensorflow.proto.util.SaverDef.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(saverDef_);
              saverDef_ = subBuilder.buildPartial();
            }

            break;
          }
          case 34: {
            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
              collectionDef_ = com.google.protobuf.MapField.newMapField(
                  CollectionDefDefaultEntryHolder.defaultEntry);
              mutable_bitField0_ |= 0x00000001;
            }
            com.google.protobuf.MapEntry<java.lang.String, org.tensorflow.proto.framework.CollectionDef>
            collectionDef__ = input.readMessage(
                CollectionDefDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
            collectionDef_.getMutableMap().put(
                collectionDef__.getKey(), collectionDef__.getValue());
            break;
          }
          case 42: {
            if (!((mutable_bitField0_ & 0x00000002) != 0)) {
              signatureDef_ = com.google.protobuf.MapField.newMapField(
                  SignatureDefDefaultEntryHolder.defaultEntry);
              mutable_bitField0_ |= 0x00000002;
            }
            com.google.protobuf.MapEntry<java.lang.String, org.tensorflow.proto.framework.SignatureDef>
            signatureDef__ = input.readMessage(
                SignatureDefDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
            signatureDef_.getMutableMap().put(
                signatureDef__.getKey(), signatureDef__.getValue());
            break;
          }
          case 50: {
            if (!((mutable_bitField0_ & 0x00000004) != 0)) {
              assetFileDef_ = new java.util.ArrayList<org.tensorflow.proto.framework.AssetFileDef>();
              mutable_bitField0_ |= 0x00000004;
            }
            assetFileDef_.add(
                input.readMessage(org.tensorflow.proto.framework.AssetFileDef.parser(), extensionRegistry));
            break;
          }
          case 58: {
            org.tensorflow.proto.framework.SavedObjectGraph.Builder subBuilder = null;
            if (objectGraphDef_ != null) {
              subBuilder = objectGraphDef_.toBuilder();
            }
            objectGraphDef_ = input.readMessage(org.tensorflow.proto.framework.SavedObjectGraph.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(objectGraphDef_);
              objectGraphDef_ = subBuilder.buildPartial();
            }

            break;
          }
          default: {
            if (!parseUnknownField(
                input, unknownFields, extensionRegistry, tag)) {
              done = true;
            }
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00000004) != 0)) {
        assetFileDef_ = java.util.Collections.unmodifiableList(assetFileDef_);
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_descriptor;
  }

  @SuppressWarnings({"rawtypes"})
  @java.lang.Override
  protected com.google.protobuf.MapField internalGetMapField(
      int number) {
    switch (number) {
      case 4:
        return internalGetCollectionDef();
      case 5:
        return internalGetSignatureDef();
      default:
        throw new RuntimeException(
            "Invalid map field number: " + number);
    }
  }
  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            org.tensorflow.proto.framework.MetaGraphDef.class, org.tensorflow.proto.framework.MetaGraphDef.Builder.class);
  }

  public interface MetaInfoDefOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tensorflow.MetaGraphDef.MetaInfoDef)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * User specified Version string. Can be the name of the model and revision,
     * steps this model has been trained to, etc.
     * </pre>
     *
     * <code>string meta_graph_version = 1;</code>
     */
    java.lang.String getMetaGraphVersion();
    /**
     * <pre>
     * User specified Version string. Can be the name of the model and revision,
     * steps this model has been trained to, etc.
     * </pre>
     *
     * <code>string meta_graph_version = 1;</code>
     */
    com.google.protobuf.ByteString
        getMetaGraphVersionBytes();

    /**
     * <pre>
     * A copy of the OpDefs used by the producer of this graph_def.
     * Descriptions and Ops not used in graph_def are stripped out.
     * </pre>
     *
     * <code>.tensorflow.OpList stripped_op_list = 2;</code>
     */
    boolean hasStrippedOpList();
    /**
     * <pre>
     * A copy of the OpDefs used by the producer of this graph_def.
     * Descriptions and Ops not used in graph_def are stripped out.
     * </pre>
     *
     * <code>.tensorflow.OpList stripped_op_list = 2;</code>
     */
    org.tensorflow.proto.framework.OpList getStrippedOpList();
    /**
     * <pre>
     * A copy of the OpDefs used by the producer of this graph_def.
     * Descriptions and Ops not used in graph_def are stripped out.
     * </pre>
     *
     * <code>.tensorflow.OpList stripped_op_list = 2;</code>
     */
    org.tensorflow.proto.framework.OpListOrBuilder getStrippedOpListOrBuilder();

    /**
     * <pre>
     * A serialized protobuf. Can be the time this meta graph is created, or
     * modified, or name of the model.
     * </pre>
     *
     * <code>.google.protobuf.Any any_info = 3;</code>
     */
    boolean hasAnyInfo();
    /**
     * <pre>
     * A serialized protobuf. Can be the time this meta graph is created, or
     * modified, or name of the model.
     * </pre>
     *
     * <code>.google.protobuf.Any any_info = 3;</code>
     */
    com.google.protobuf.Any getAnyInfo();
    /**
     * <pre>
     * A serialized protobuf. Can be the time this meta graph is created, or
     * modified, or name of the model.
     * </pre>
     *
     * <code>.google.protobuf.Any any_info = 3;</code>
     */
    com.google.protobuf.AnyOrBuilder getAnyInfoOrBuilder();

    /**
     * <pre>
     * User supplied tag(s) on the meta_graph and included graph_def.
     * MetaGraphDefs should be tagged with their capabilities or use-cases.
     * Examples: "train", "serve", "gpu", "tpu", etc.
     * These tags enable loaders to access the MetaGraph(s) appropriate for a
     * specific use-case or runtime environment.
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    java.util.List<java.lang.String>
        getTagsList();
    /**
     * <pre>
     * User supplied tag(s) on the meta_graph and included graph_def.
     * MetaGraphDefs should be tagged with their capabilities or use-cases.
     * Examples: "train", "serve", "gpu", "tpu", etc.
     * These tags enable loaders to access the MetaGraph(s) appropriate for a
     * specific use-case or runtime environment.
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    int getTagsCount();
    /**
     * <pre>
     * User supplied tag(s) on the meta_graph and included graph_def.
     * MetaGraphDefs should be tagged with their capabilities or use-cases.
     * Examples: "train", "serve", "gpu", "tpu", etc.
     * These tags enable loaders to access the MetaGraph(s) appropriate for a
     * specific use-case or runtime environment.
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    java.lang.String getTags(int index);
    /**
     * <pre>
     * User supplied tag(s) on the meta_graph and included graph_def.
     * MetaGraphDefs should be tagged with their capabilities or use-cases.
     * Examples: "train", "serve", "gpu", "tpu", etc.
     * These tags enable loaders to access the MetaGraph(s) appropriate for a
     * specific use-case or runtime environment.
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    com.google.protobuf.ByteString
        getTagsBytes(int index);

    /**
     * <pre>
     * The __version__ string of the tensorflow build used to write this graph.
     * This will be populated by the framework, which will overwrite any user
     * supplied value.
     * </pre>
     *
     * <code>string tensorflow_version = 5;</code>
     */
    java.lang.String getTensorflowVersion();
    /**
     * <pre>
     * The __version__ string of the tensorflow build used to write this graph.
     * This will be populated by the framework, which will overwrite any user
     * supplied value.
     * </pre>
     *
     * <code>string tensorflow_version = 5;</code>
     */
    com.google.protobuf.ByteString
        getTensorflowVersionBytes();

    /**
     * <pre>
     * The __git_version__ string of the tensorflow build used to write this
     * graph. This will be populated by the framework, which will overwrite any
     * user supplied value.
     * </pre>
     *
     * <code>string tensorflow_git_version = 6;</code>
     */
    java.lang.String getTensorflowGitVersion();
    /**
     * <pre>
     * The __git_version__ string of the tensorflow build used to write this
     * graph. This will be populated by the framework, which will overwrite any
     * user supplied value.
     * </pre>
     *
     * <code>string tensorflow_git_version = 6;</code>
     */
    com.google.protobuf.ByteString
        getTensorflowGitVersionBytes();

    /**
     * <pre>
     * A flag to denote whether default-valued attrs have been stripped from
     * the nodes in this graph_def.
     * </pre>
     *
     * <code>bool stripped_default_attrs = 7;</code>
     */
    boolean getStrippedDefaultAttrs();

    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */
    int getFunctionAliasesCount();
    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */
    boolean containsFunctionAliases(
        java.lang.String key);
    /**
     * Use {@link #getFunctionAliasesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getFunctionAliases();
    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getFunctionAliasesMap();
    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */

    java.lang.String getFunctionAliasesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */

    java.lang.String getFunctionAliasesOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * Meta information regarding the graph to be exported.  To be used by users
   * of this protocol buffer to encode information regarding their meta graph.
   * </pre>
   *
   * Protobuf type {@code tensorflow.MetaGraphDef.MetaInfoDef}
   */
  public  static final class MetaInfoDef extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tensorflow.MetaGraphDef.MetaInfoDef)
      MetaInfoDefOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MetaInfoDef.newBuilder() to construct.
    private MetaInfoDef(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MetaInfoDef() {
      metaGraphVersion_ = "";
      tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      tensorflowVersion_ = "";
      tensorflowGitVersion_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MetaInfoDef(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              metaGraphVersion_ = s;
              break;
            }
            case 18: {
              org.tensorflow.proto.framework.OpList.Builder subBuilder = null;
              if (strippedOpList_ != null) {
                subBuilder = strippedOpList_.toBuilder();
              }
              strippedOpList_ = input.readMessage(org.tensorflow.proto.framework.OpList.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(strippedOpList_);
                strippedOpList_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              com.google.protobuf.Any.Builder subBuilder = null;
              if (anyInfo_ != null) {
                subBuilder = anyInfo_.toBuilder();
              }
              anyInfo_ = input.readMessage(com.google.protobuf.Any.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(anyInfo_);
                anyInfo_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                tags_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              tags_.add(s);
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              tensorflowVersion_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              tensorflowGitVersion_ = s;
              break;
            }
            case 56: {

              strippedDefaultAttrs_ = input.readBool();
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                functionAliases_ = com.google.protobuf.MapField.newMapField(
                    FunctionAliasesDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000002;
              }
              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
              functionAliases__ = input.readMessage(
                  FunctionAliasesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              functionAliases_.getMutableMap().put(
                  functionAliases__.getKey(), functionAliases__.getValue());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          tags_ = tags_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_MetaInfoDef_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 8:
          return internalGetFunctionAliases();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_MetaInfoDef_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.class, org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.Builder.class);
    }

    public static final int META_GRAPH_VERSION_FIELD_NUMBER = 1;
    private volatile java.lang.Object metaGraphVersion_;
    /**
     * <pre>
     * User specified Version string. Can be the name of the model and revision,
     * steps this model has been trained to, etc.
     * </pre>
     *
     * <code>string meta_graph_version = 1;</code>
     */
    public java.lang.String getMetaGraphVersion() {
      java.lang.Object ref = metaGraphVersion_;
      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();
        metaGraphVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * User specified Version string. Can be the name of the model and revision,
     * steps this model has been trained to, etc.
     * </pre>
     *
     * <code>string meta_graph_version = 1;</code>
     */
    public com.google.protobuf.ByteString
        getMetaGraphVersionBytes() {
      java.lang.Object ref = metaGraphVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        metaGraphVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STRIPPED_OP_LIST_FIELD_NUMBER = 2;
    private org.tensorflow.proto.framework.OpList strippedOpList_;
    /**
     * <pre>
     * A copy of the OpDefs used by the producer of this graph_def.
     * Descriptions and Ops not used in graph_def are stripped out.
     * </pre>
     *
     * <code>.tensorflow.OpList stripped_op_list = 2;</code>
     */
    public boolean hasStrippedOpList() {
      return strippedOpList_ != null;
    }
    /**
     * <pre>
     * A copy of the OpDefs used by the producer of this graph_def.
     * Descriptions and Ops not used in graph_def are stripped out.
     * </pre>
     *
     * <code>.tensorflow.OpList stripped_op_list = 2;</code>
     */
    public org.tensorflow.proto.framework.OpList getStrippedOpList() {
      return strippedOpList_ == null ? org.tensorflow.proto.framework.OpList.getDefaultInstance() : strippedOpList_;
    }
    /**
     * <pre>
     * A copy of the OpDefs used by the producer of this graph_def.
     * Descriptions and Ops not used in graph_def are stripped out.
     * </pre>
     *
     * <code>.tensorflow.OpList stripped_op_list = 2;</code>
     */
    public org.tensorflow.proto.framework.OpListOrBuilder getStrippedOpListOrBuilder() {
      return getStrippedOpList();
    }

    public static final int ANY_INFO_FIELD_NUMBER = 3;
    private com.google.protobuf.Any anyInfo_;
    /**
     * <pre>
     * A serialized protobuf. Can be the time this meta graph is created, or
     * modified, or name of the model.
     * </pre>
     *
     * <code>.google.protobuf.Any any_info = 3;</code>
     */
    public boolean hasAnyInfo() {
      return anyInfo_ != null;
    }
    /**
     * <pre>
     * A serialized protobuf. Can be the time this meta graph is created, or
     * modified, or name of the model.
     * </pre>
     *
     * <code>.google.protobuf.Any any_info = 3;</code>
     */
    public com.google.protobuf.Any getAnyInfo() {
      return anyInfo_ == null ? com.google.protobuf.Any.getDefaultInstance() : anyInfo_;
    }
    /**
     * <pre>
     * A serialized protobuf. Can be the time this meta graph is created, or
     * modified, or name of the model.
     * </pre>
     *
     * <code>.google.protobuf.Any any_info = 3;</code>
     */
    public com.google.protobuf.AnyOrBuilder getAnyInfoOrBuilder() {
      return getAnyInfo();
    }

    public static final int TAGS_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList tags_;
    /**
     * <pre>
     * User supplied tag(s) on the meta_graph and included graph_def.
     * MetaGraphDefs should be tagged with their capabilities or use-cases.
     * Examples: "train", "serve", "gpu", "tpu", etc.
     * These tags enable loaders to access the MetaGraph(s) appropriate for a
     * specific use-case or runtime environment.
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getTagsList() {
      return tags_;
    }
    /**
     * <pre>
     * User supplied tag(s) on the meta_graph and included graph_def.
     * MetaGraphDefs should be tagged with their capabilities or use-cases.
     * Examples: "train", "serve", "gpu", "tpu", etc.
     * These tags enable loaders to access the MetaGraph(s) appropriate for a
     * specific use-case or runtime environment.
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    public int getTagsCount() {
      return tags_.size();
    }
    /**
     * <pre>
     * User supplied tag(s) on the meta_graph and included graph_def.
     * MetaGraphDefs should be tagged with their capabilities or use-cases.
     * Examples: "train", "serve", "gpu", "tpu", etc.
     * These tags enable loaders to access the MetaGraph(s) appropriate for a
     * specific use-case or runtime environment.
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    public java.lang.String getTags(int index) {
      return tags_.get(index);
    }
    /**
     * <pre>
     * User supplied tag(s) on the meta_graph and included graph_def.
     * MetaGraphDefs should be tagged with their capabilities or use-cases.
     * Examples: "train", "serve", "gpu", "tpu", etc.
     * These tags enable loaders to access the MetaGraph(s) appropriate for a
     * specific use-case or runtime environment.
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    public com.google.protobuf.ByteString
        getTagsBytes(int index) {
      return tags_.getByteString(index);
    }

    public static final int TENSORFLOW_VERSION_FIELD_NUMBER = 5;
    private volatile java.lang.Object tensorflowVersion_;
    /**
     * <pre>
     * The __version__ string of the tensorflow build used to write this graph.
     * This will be populated by the framework, which will overwrite any user
     * supplied value.
     * </pre>
     *
     * <code>string tensorflow_version = 5;</code>
     */
    public java.lang.String getTensorflowVersion() {
      java.lang.Object ref = tensorflowVersion_;
      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();
        tensorflowVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The __version__ string of the tensorflow build used to write this graph.
     * This will be populated by the framework, which will overwrite any user
     * supplied value.
     * </pre>
     *
     * <code>string tensorflow_version = 5;</code>
     */
    public com.google.protobuf.ByteString
        getTensorflowVersionBytes() {
      java.lang.Object ref = tensorflowVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tensorflowVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TENSORFLOW_GIT_VERSION_FIELD_NUMBER = 6;
    private volatile java.lang.Object tensorflowGitVersion_;
    /**
     * <pre>
     * The __git_version__ string of the tensorflow build used to write this
     * graph. This will be populated by the framework, which will overwrite any
     * user supplied value.
     * </pre>
     *
     * <code>string tensorflow_git_version = 6;</code>
     */
    public java.lang.String getTensorflowGitVersion() {
      java.lang.Object ref = tensorflowGitVersion_;
      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();
        tensorflowGitVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The __git_version__ string of the tensorflow build used to write this
     * graph. This will be populated by the framework, which will overwrite any
     * user supplied value.
     * </pre>
     *
     * <code>string tensorflow_git_version = 6;</code>
     */
    public com.google.protobuf.ByteString
        getTensorflowGitVersionBytes() {
      java.lang.Object ref = tensorflowGitVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tensorflowGitVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STRIPPED_DEFAULT_ATTRS_FIELD_NUMBER = 7;
    private boolean strippedDefaultAttrs_;
    /**
     * <pre>
     * A flag to denote whether default-valued attrs have been stripped from
     * the nodes in this graph_def.
     * </pre>
     *
     * <code>bool stripped_default_attrs = 7;</code>
     */
    public boolean getStrippedDefaultAttrs() {
      return strippedDefaultAttrs_;
    }

    public static final int FUNCTION_ALIASES_FIELD_NUMBER = 8;
    private static final class FunctionAliasesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_MetaInfoDef_FunctionAliasesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> functionAliases_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetFunctionAliases() {
      if (functionAliases_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            FunctionAliasesDefaultEntryHolder.defaultEntry);
      }
      return functionAliases_;
    }

    public int getFunctionAliasesCount() {
      return internalGetFunctionAliases().getMap().size();
    }
    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */

    public boolean containsFunctionAliases(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetFunctionAliases().getMap().containsKey(key);
    }
    /**
     * Use {@link #getFunctionAliasesMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getFunctionAliases() {
      return getFunctionAliasesMap();
    }
    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getFunctionAliasesMap() {
      return internalGetFunctionAliases().getMap();
    }
    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */

    public java.lang.String getFunctionAliasesOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetFunctionAliases().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * FunctionDef name to aliases mapping.
     * </pre>
     *
     * <code>map&lt;string, string&gt; function_aliases = 8;</code>
     */

    public java.lang.String getFunctionAliasesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetFunctionAliases().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    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 (!getMetaGraphVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, metaGraphVersion_);
      }
      if (strippedOpList_ != null) {
        output.writeMessage(2, getStrippedOpList());
      }
      if (anyInfo_ != null) {
        output.writeMessage(3, getAnyInfo());
      }
      for (int i = 0; i < tags_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, tags_.getRaw(i));
      }
      if (!getTensorflowVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, tensorflowVersion_);
      }
      if (!getTensorflowGitVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, tensorflowGitVersion_);
      }
      if (strippedDefaultAttrs_ != false) {
        output.writeBool(7, strippedDefaultAttrs_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetFunctionAliases(),
          FunctionAliasesDefaultEntryHolder.defaultEntry,
          8);
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getMetaGraphVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, metaGraphVersion_);
      }
      if (strippedOpList_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getStrippedOpList());
      }
      if (anyInfo_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getAnyInfo());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tags_.size(); i++) {
          dataSize += computeStringSizeNoTag(tags_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagsList().size();
      }
      if (!getTensorflowVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, tensorflowVersion_);
      }
      if (!getTensorflowGitVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, tensorflowGitVersion_);
      }
      if (strippedDefaultAttrs_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, strippedDefaultAttrs_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetFunctionAliases().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        functionAliases__ = FunctionAliasesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, functionAliases__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef)) {
        return super.equals(obj);
      }
      org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef other = (org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef) obj;

      if (!getMetaGraphVersion()
          .equals(other.getMetaGraphVersion())) return false;
      if (hasStrippedOpList() != other.hasStrippedOpList()) return false;
      if (hasStrippedOpList()) {
        if (!getStrippedOpList()
            .equals(other.getStrippedOpList())) return false;
      }
      if (hasAnyInfo() != other.hasAnyInfo()) return false;
      if (hasAnyInfo()) {
        if (!getAnyInfo()
            .equals(other.getAnyInfo())) return false;
      }
      if (!getTagsList()
          .equals(other.getTagsList())) return false;
      if (!getTensorflowVersion()
          .equals(other.getTensorflowVersion())) return false;
      if (!getTensorflowGitVersion()
          .equals(other.getTensorflowGitVersion())) return false;
      if (getStrippedDefaultAttrs()
          != other.getStrippedDefaultAttrs()) return false;
      if (!internalGetFunctionAliases().equals(
          other.internalGetFunctionAliases())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + META_GRAPH_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getMetaGraphVersion().hashCode();
      if (hasStrippedOpList()) {
        hash = (37 * hash) + STRIPPED_OP_LIST_FIELD_NUMBER;
        hash = (53 * hash) + getStrippedOpList().hashCode();
      }
      if (hasAnyInfo()) {
        hash = (37 * hash) + ANY_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getAnyInfo().hashCode();
      }
      if (getTagsCount() > 0) {
        hash = (37 * hash) + TAGS_FIELD_NUMBER;
        hash = (53 * hash) + getTagsList().hashCode();
      }
      hash = (37 * hash) + TENSORFLOW_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getTensorflowVersion().hashCode();
      hash = (37 * hash) + TENSORFLOW_GIT_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getTensorflowGitVersion().hashCode();
      hash = (37 * hash) + STRIPPED_DEFAULT_ATTRS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getStrippedDefaultAttrs());
      if (!internalGetFunctionAliases().getMap().isEmpty()) {
        hash = (37 * hash) + FUNCTION_ALIASES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetFunctionAliases().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef 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(org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef 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;
    }
    /**
     * <pre>
     * Meta information regarding the graph to be exported.  To be used by users
     * of this protocol buffer to encode information regarding their meta graph.
     * </pre>
     *
     * Protobuf type {@code tensorflow.MetaGraphDef.MetaInfoDef}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tensorflow.MetaGraphDef.MetaInfoDef)
        org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDefOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_MetaInfoDef_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 8:
            return internalGetFunctionAliases();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 8:
            return internalGetMutableFunctionAliases();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_MetaInfoDef_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.class, org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.Builder.class);
      }

      // Construct using org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        metaGraphVersion_ = "";

        if (strippedOpListBuilder_ == null) {
          strippedOpList_ = null;
        } else {
          strippedOpList_ = null;
          strippedOpListBuilder_ = null;
        }
        if (anyInfoBuilder_ == null) {
          anyInfo_ = null;
        } else {
          anyInfo_ = null;
          anyInfoBuilder_ = null;
        }
        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        tensorflowVersion_ = "";

        tensorflowGitVersion_ = "";

        strippedDefaultAttrs_ = false;

        internalGetMutableFunctionAliases().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_MetaInfoDef_descriptor;
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef getDefaultInstanceForType() {
        return org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.getDefaultInstance();
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef build() {
        org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef buildPartial() {
        org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef result = new org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef(this);
        int from_bitField0_ = bitField0_;
        result.metaGraphVersion_ = metaGraphVersion_;
        if (strippedOpListBuilder_ == null) {
          result.strippedOpList_ = strippedOpList_;
        } else {
          result.strippedOpList_ = strippedOpListBuilder_.build();
        }
        if (anyInfoBuilder_ == null) {
          result.anyInfo_ = anyInfo_;
        } else {
          result.anyInfo_ = anyInfoBuilder_.build();
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          tags_ = tags_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.tags_ = tags_;
        result.tensorflowVersion_ = tensorflowVersion_;
        result.tensorflowGitVersion_ = tensorflowGitVersion_;
        result.strippedDefaultAttrs_ = strippedDefaultAttrs_;
        result.functionAliases_ = internalGetFunctionAliases();
        result.functionAliases_.makeImmutable();
        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 org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef) {
          return mergeFrom((org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef other) {
        if (other == org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.getDefaultInstance()) return this;
        if (!other.getMetaGraphVersion().isEmpty()) {
          metaGraphVersion_ = other.metaGraphVersion_;
          onChanged();
        }
        if (other.hasStrippedOpList()) {
          mergeStrippedOpList(other.getStrippedOpList());
        }
        if (other.hasAnyInfo()) {
          mergeAnyInfo(other.getAnyInfo());
        }
        if (!other.tags_.isEmpty()) {
          if (tags_.isEmpty()) {
            tags_ = other.tags_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTagsIsMutable();
            tags_.addAll(other.tags_);
          }
          onChanged();
        }
        if (!other.getTensorflowVersion().isEmpty()) {
          tensorflowVersion_ = other.tensorflowVersion_;
          onChanged();
        }
        if (!other.getTensorflowGitVersion().isEmpty()) {
          tensorflowGitVersion_ = other.tensorflowGitVersion_;
          onChanged();
        }
        if (other.getStrippedDefaultAttrs() != false) {
          setStrippedDefaultAttrs(other.getStrippedDefaultAttrs());
        }
        internalGetMutableFunctionAliases().mergeFrom(
            other.internalGetFunctionAliases());
        this.mergeUnknownFields(other.unknownFields);
        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 {
        org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object metaGraphVersion_ = "";
      /**
       * <pre>
       * User specified Version string. Can be the name of the model and revision,
       * steps this model has been trained to, etc.
       * </pre>
       *
       * <code>string meta_graph_version = 1;</code>
       */
      public java.lang.String getMetaGraphVersion() {
        java.lang.Object ref = metaGraphVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          metaGraphVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * User specified Version string. Can be the name of the model and revision,
       * steps this model has been trained to, etc.
       * </pre>
       *
       * <code>string meta_graph_version = 1;</code>
       */
      public com.google.protobuf.ByteString
          getMetaGraphVersionBytes() {
        java.lang.Object ref = metaGraphVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          metaGraphVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * User specified Version string. Can be the name of the model and revision,
       * steps this model has been trained to, etc.
       * </pre>
       *
       * <code>string meta_graph_version = 1;</code>
       */
      public Builder setMetaGraphVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        metaGraphVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * User specified Version string. Can be the name of the model and revision,
       * steps this model has been trained to, etc.
       * </pre>
       *
       * <code>string meta_graph_version = 1;</code>
       */
      public Builder clearMetaGraphVersion() {
        
        metaGraphVersion_ = getDefaultInstance().getMetaGraphVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * User specified Version string. Can be the name of the model and revision,
       * steps this model has been trained to, etc.
       * </pre>
       *
       * <code>string meta_graph_version = 1;</code>
       */
      public Builder setMetaGraphVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        metaGraphVersion_ = value;
        onChanged();
        return this;
      }

      private org.tensorflow.proto.framework.OpList strippedOpList_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.OpList, org.tensorflow.proto.framework.OpList.Builder, org.tensorflow.proto.framework.OpListOrBuilder> strippedOpListBuilder_;
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      public boolean hasStrippedOpList() {
        return strippedOpListBuilder_ != null || strippedOpList_ != null;
      }
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      public org.tensorflow.proto.framework.OpList getStrippedOpList() {
        if (strippedOpListBuilder_ == null) {
          return strippedOpList_ == null ? org.tensorflow.proto.framework.OpList.getDefaultInstance() : strippedOpList_;
        } else {
          return strippedOpListBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      public Builder setStrippedOpList(org.tensorflow.proto.framework.OpList value) {
        if (strippedOpListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          strippedOpList_ = value;
          onChanged();
        } else {
          strippedOpListBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      public Builder setStrippedOpList(
          org.tensorflow.proto.framework.OpList.Builder builderForValue) {
        if (strippedOpListBuilder_ == null) {
          strippedOpList_ = builderForValue.build();
          onChanged();
        } else {
          strippedOpListBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      public Builder mergeStrippedOpList(org.tensorflow.proto.framework.OpList value) {
        if (strippedOpListBuilder_ == null) {
          if (strippedOpList_ != null) {
            strippedOpList_ =
              org.tensorflow.proto.framework.OpList.newBuilder(strippedOpList_).mergeFrom(value).buildPartial();
          } else {
            strippedOpList_ = value;
          }
          onChanged();
        } else {
          strippedOpListBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      public Builder clearStrippedOpList() {
        if (strippedOpListBuilder_ == null) {
          strippedOpList_ = null;
          onChanged();
        } else {
          strippedOpList_ = null;
          strippedOpListBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      public org.tensorflow.proto.framework.OpList.Builder getStrippedOpListBuilder() {
        
        onChanged();
        return getStrippedOpListFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      public org.tensorflow.proto.framework.OpListOrBuilder getStrippedOpListOrBuilder() {
        if (strippedOpListBuilder_ != null) {
          return strippedOpListBuilder_.getMessageOrBuilder();
        } else {
          return strippedOpList_ == null ?
              org.tensorflow.proto.framework.OpList.getDefaultInstance() : strippedOpList_;
        }
      }
      /**
       * <pre>
       * A copy of the OpDefs used by the producer of this graph_def.
       * Descriptions and Ops not used in graph_def are stripped out.
       * </pre>
       *
       * <code>.tensorflow.OpList stripped_op_list = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.OpList, org.tensorflow.proto.framework.OpList.Builder, org.tensorflow.proto.framework.OpListOrBuilder> 
          getStrippedOpListFieldBuilder() {
        if (strippedOpListBuilder_ == null) {
          strippedOpListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tensorflow.proto.framework.OpList, org.tensorflow.proto.framework.OpList.Builder, org.tensorflow.proto.framework.OpListOrBuilder>(
                  getStrippedOpList(),
                  getParentForChildren(),
                  isClean());
          strippedOpList_ = null;
        }
        return strippedOpListBuilder_;
      }

      private com.google.protobuf.Any anyInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> anyInfoBuilder_;
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      public boolean hasAnyInfo() {
        return anyInfoBuilder_ != null || anyInfo_ != null;
      }
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      public com.google.protobuf.Any getAnyInfo() {
        if (anyInfoBuilder_ == null) {
          return anyInfo_ == null ? com.google.protobuf.Any.getDefaultInstance() : anyInfo_;
        } else {
          return anyInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      public Builder setAnyInfo(com.google.protobuf.Any value) {
        if (anyInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          anyInfo_ = value;
          onChanged();
        } else {
          anyInfoBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      public Builder setAnyInfo(
          com.google.protobuf.Any.Builder builderForValue) {
        if (anyInfoBuilder_ == null) {
          anyInfo_ = builderForValue.build();
          onChanged();
        } else {
          anyInfoBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      public Builder mergeAnyInfo(com.google.protobuf.Any value) {
        if (anyInfoBuilder_ == null) {
          if (anyInfo_ != null) {
            anyInfo_ =
              com.google.protobuf.Any.newBuilder(anyInfo_).mergeFrom(value).buildPartial();
          } else {
            anyInfo_ = value;
          }
          onChanged();
        } else {
          anyInfoBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      public Builder clearAnyInfo() {
        if (anyInfoBuilder_ == null) {
          anyInfo_ = null;
          onChanged();
        } else {
          anyInfo_ = null;
          anyInfoBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      public com.google.protobuf.Any.Builder getAnyInfoBuilder() {
        
        onChanged();
        return getAnyInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      public com.google.protobuf.AnyOrBuilder getAnyInfoOrBuilder() {
        if (anyInfoBuilder_ != null) {
          return anyInfoBuilder_.getMessageOrBuilder();
        } else {
          return anyInfo_ == null ?
              com.google.protobuf.Any.getDefaultInstance() : anyInfo_;
        }
      }
      /**
       * <pre>
       * A serialized protobuf. Can be the time this meta graph is created, or
       * modified, or name of the model.
       * </pre>
       *
       * <code>.google.protobuf.Any any_info = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> 
          getAnyInfoFieldBuilder() {
        if (anyInfoBuilder_ == null) {
          anyInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder>(
                  getAnyInfo(),
                  getParentForChildren(),
                  isClean());
          anyInfo_ = null;
        }
        return anyInfoBuilder_;
      }

      private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTagsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          tags_ = new com.google.protobuf.LazyStringArrayList(tags_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getTagsList() {
        return tags_.getUnmodifiableView();
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public int getTagsCount() {
        return tags_.size();
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public java.lang.String getTags(int index) {
        return tags_.get(index);
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public com.google.protobuf.ByteString
          getTagsBytes(int index) {
        return tags_.getByteString(index);
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public Builder setTags(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagsIsMutable();
        tags_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public Builder addTags(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagsIsMutable();
        tags_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public Builder addAllTags(
          java.lang.Iterable<java.lang.String> values) {
        ensureTagsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tags_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public Builder clearTags() {
        tags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * User supplied tag(s) on the meta_graph and included graph_def.
       * MetaGraphDefs should be tagged with their capabilities or use-cases.
       * Examples: "train", "serve", "gpu", "tpu", etc.
       * These tags enable loaders to access the MetaGraph(s) appropriate for a
       * specific use-case or runtime environment.
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       */
      public Builder addTagsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTagsIsMutable();
        tags_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object tensorflowVersion_ = "";
      /**
       * <pre>
       * The __version__ string of the tensorflow build used to write this graph.
       * This will be populated by the framework, which will overwrite any user
       * supplied value.
       * </pre>
       *
       * <code>string tensorflow_version = 5;</code>
       */
      public java.lang.String getTensorflowVersion() {
        java.lang.Object ref = tensorflowVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          tensorflowVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The __version__ string of the tensorflow build used to write this graph.
       * This will be populated by the framework, which will overwrite any user
       * supplied value.
       * </pre>
       *
       * <code>string tensorflow_version = 5;</code>
       */
      public com.google.protobuf.ByteString
          getTensorflowVersionBytes() {
        java.lang.Object ref = tensorflowVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tensorflowVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The __version__ string of the tensorflow build used to write this graph.
       * This will be populated by the framework, which will overwrite any user
       * supplied value.
       * </pre>
       *
       * <code>string tensorflow_version = 5;</code>
       */
      public Builder setTensorflowVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        tensorflowVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The __version__ string of the tensorflow build used to write this graph.
       * This will be populated by the framework, which will overwrite any user
       * supplied value.
       * </pre>
       *
       * <code>string tensorflow_version = 5;</code>
       */
      public Builder clearTensorflowVersion() {
        
        tensorflowVersion_ = getDefaultInstance().getTensorflowVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The __version__ string of the tensorflow build used to write this graph.
       * This will be populated by the framework, which will overwrite any user
       * supplied value.
       * </pre>
       *
       * <code>string tensorflow_version = 5;</code>
       */
      public Builder setTensorflowVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        tensorflowVersion_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object tensorflowGitVersion_ = "";
      /**
       * <pre>
       * The __git_version__ string of the tensorflow build used to write this
       * graph. This will be populated by the framework, which will overwrite any
       * user supplied value.
       * </pre>
       *
       * <code>string tensorflow_git_version = 6;</code>
       */
      public java.lang.String getTensorflowGitVersion() {
        java.lang.Object ref = tensorflowGitVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          tensorflowGitVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The __git_version__ string of the tensorflow build used to write this
       * graph. This will be populated by the framework, which will overwrite any
       * user supplied value.
       * </pre>
       *
       * <code>string tensorflow_git_version = 6;</code>
       */
      public com.google.protobuf.ByteString
          getTensorflowGitVersionBytes() {
        java.lang.Object ref = tensorflowGitVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tensorflowGitVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The __git_version__ string of the tensorflow build used to write this
       * graph. This will be populated by the framework, which will overwrite any
       * user supplied value.
       * </pre>
       *
       * <code>string tensorflow_git_version = 6;</code>
       */
      public Builder setTensorflowGitVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        tensorflowGitVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The __git_version__ string of the tensorflow build used to write this
       * graph. This will be populated by the framework, which will overwrite any
       * user supplied value.
       * </pre>
       *
       * <code>string tensorflow_git_version = 6;</code>
       */
      public Builder clearTensorflowGitVersion() {
        
        tensorflowGitVersion_ = getDefaultInstance().getTensorflowGitVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The __git_version__ string of the tensorflow build used to write this
       * graph. This will be populated by the framework, which will overwrite any
       * user supplied value.
       * </pre>
       *
       * <code>string tensorflow_git_version = 6;</code>
       */
      public Builder setTensorflowGitVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        tensorflowGitVersion_ = value;
        onChanged();
        return this;
      }

      private boolean strippedDefaultAttrs_ ;
      /**
       * <pre>
       * A flag to denote whether default-valued attrs have been stripped from
       * the nodes in this graph_def.
       * </pre>
       *
       * <code>bool stripped_default_attrs = 7;</code>
       */
      public boolean getStrippedDefaultAttrs() {
        return strippedDefaultAttrs_;
      }
      /**
       * <pre>
       * A flag to denote whether default-valued attrs have been stripped from
       * the nodes in this graph_def.
       * </pre>
       *
       * <code>bool stripped_default_attrs = 7;</code>
       */
      public Builder setStrippedDefaultAttrs(boolean value) {
        
        strippedDefaultAttrs_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A flag to denote whether default-valued attrs have been stripped from
       * the nodes in this graph_def.
       * </pre>
       *
       * <code>bool stripped_default_attrs = 7;</code>
       */
      public Builder clearStrippedDefaultAttrs() {
        
        strippedDefaultAttrs_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> functionAliases_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetFunctionAliases() {
        if (functionAliases_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              FunctionAliasesDefaultEntryHolder.defaultEntry);
        }
        return functionAliases_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableFunctionAliases() {
        onChanged();;
        if (functionAliases_ == null) {
          functionAliases_ = com.google.protobuf.MapField.newMapField(
              FunctionAliasesDefaultEntryHolder.defaultEntry);
        }
        if (!functionAliases_.isMutable()) {
          functionAliases_ = functionAliases_.copy();
        }
        return functionAliases_;
      }

      public int getFunctionAliasesCount() {
        return internalGetFunctionAliases().getMap().size();
      }
      /**
       * <pre>
       * FunctionDef name to aliases mapping.
       * </pre>
       *
       * <code>map&lt;string, string&gt; function_aliases = 8;</code>
       */

      public boolean containsFunctionAliases(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetFunctionAliases().getMap().containsKey(key);
      }
      /**
       * Use {@link #getFunctionAliasesMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getFunctionAliases() {
        return getFunctionAliasesMap();
      }
      /**
       * <pre>
       * FunctionDef name to aliases mapping.
       * </pre>
       *
       * <code>map&lt;string, string&gt; function_aliases = 8;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getFunctionAliasesMap() {
        return internalGetFunctionAliases().getMap();
      }
      /**
       * <pre>
       * FunctionDef name to aliases mapping.
       * </pre>
       *
       * <code>map&lt;string, string&gt; function_aliases = 8;</code>
       */

      public java.lang.String getFunctionAliasesOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetFunctionAliases().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * FunctionDef name to aliases mapping.
       * </pre>
       *
       * <code>map&lt;string, string&gt; function_aliases = 8;</code>
       */

      public java.lang.String getFunctionAliasesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetFunctionAliases().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearFunctionAliases() {
        internalGetMutableFunctionAliases().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * FunctionDef name to aliases mapping.
       * </pre>
       *
       * <code>map&lt;string, string&gt; function_aliases = 8;</code>
       */

      public Builder removeFunctionAliases(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableFunctionAliases().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableFunctionAliases() {
        return internalGetMutableFunctionAliases().getMutableMap();
      }
      /**
       * <pre>
       * FunctionDef name to aliases mapping.
       * </pre>
       *
       * <code>map&lt;string, string&gt; function_aliases = 8;</code>
       */
      public Builder putFunctionAliases(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableFunctionAliases().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * FunctionDef name to aliases mapping.
       * </pre>
       *
       * <code>map&lt;string, string&gt; function_aliases = 8;</code>
       */

      public Builder putAllFunctionAliases(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableFunctionAliases().getMutableMap()
            .putAll(values);
        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:tensorflow.MetaGraphDef.MetaInfoDef)
    }

    // @@protoc_insertion_point(class_scope:tensorflow.MetaGraphDef.MetaInfoDef)
    private static final org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef();
    }

    public static org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public static final int META_INFO_DEF_FIELD_NUMBER = 1;
  private org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef metaInfoDef_;
  /**
   * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
   */
  public boolean hasMetaInfoDef() {
    return metaInfoDef_ != null;
  }
  /**
   * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
   */
  public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef getMetaInfoDef() {
    return metaInfoDef_ == null ? org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.getDefaultInstance() : metaInfoDef_;
  }
  /**
   * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
   */
  public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDefOrBuilder getMetaInfoDefOrBuilder() {
    return getMetaInfoDef();
  }

  public static final int GRAPH_DEF_FIELD_NUMBER = 2;
  private org.tensorflow.proto.framework.GraphDef graphDef_;
  /**
   * <pre>
   * GraphDef.
   * </pre>
   *
   * <code>.tensorflow.GraphDef graph_def = 2;</code>
   */
  public boolean hasGraphDef() {
    return graphDef_ != null;
  }
  /**
   * <pre>
   * GraphDef.
   * </pre>
   *
   * <code>.tensorflow.GraphDef graph_def = 2;</code>
   */
  public org.tensorflow.proto.framework.GraphDef getGraphDef() {
    return graphDef_ == null ? org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : graphDef_;
  }
  /**
   * <pre>
   * GraphDef.
   * </pre>
   *
   * <code>.tensorflow.GraphDef graph_def = 2;</code>
   */
  public org.tensorflow.proto.framework.GraphDefOrBuilder getGraphDefOrBuilder() {
    return getGraphDef();
  }

  public static final int SAVER_DEF_FIELD_NUMBER = 3;
  private org.tensorflow.proto.util.SaverDef saverDef_;
  /**
   * <pre>
   * SaverDef.
   * </pre>
   *
   * <code>.tensorflow.SaverDef saver_def = 3;</code>
   */
  public boolean hasSaverDef() {
    return saverDef_ != null;
  }
  /**
   * <pre>
   * SaverDef.
   * </pre>
   *
   * <code>.tensorflow.SaverDef saver_def = 3;</code>
   */
  public org.tensorflow.proto.util.SaverDef getSaverDef() {
    return saverDef_ == null ? org.tensorflow.proto.util.SaverDef.getDefaultInstance() : saverDef_;
  }
  /**
   * <pre>
   * SaverDef.
   * </pre>
   *
   * <code>.tensorflow.SaverDef saver_def = 3;</code>
   */
  public org.tensorflow.proto.util.SaverDefOrBuilder getSaverDefOrBuilder() {
    return getSaverDef();
  }

  public static final int COLLECTION_DEF_FIELD_NUMBER = 4;
  private static final class CollectionDefDefaultEntryHolder {
    static final com.google.protobuf.MapEntry<
        java.lang.String, org.tensorflow.proto.framework.CollectionDef> defaultEntry =
            com.google.protobuf.MapEntry
            .<java.lang.String, org.tensorflow.proto.framework.CollectionDef>newDefaultInstance(
                org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_CollectionDefEntry_descriptor, 
                com.google.protobuf.WireFormat.FieldType.STRING,
                "",
                com.google.protobuf.WireFormat.FieldType.MESSAGE,
                org.tensorflow.proto.framework.CollectionDef.getDefaultInstance());
  }
  private com.google.protobuf.MapField<
      java.lang.String, org.tensorflow.proto.framework.CollectionDef> collectionDef_;
  private com.google.protobuf.MapField<java.lang.String, org.tensorflow.proto.framework.CollectionDef>
  internalGetCollectionDef() {
    if (collectionDef_ == null) {
      return com.google.protobuf.MapField.emptyMapField(
          CollectionDefDefaultEntryHolder.defaultEntry);
    }
    return collectionDef_;
  }

  public int getCollectionDefCount() {
    return internalGetCollectionDef().getMap().size();
  }
  /**
   * <pre>
   * collection_def: Map from collection name to collections.
   * See CollectionDef section for details.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
   */

  public boolean containsCollectionDef(
      java.lang.String key) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    return internalGetCollectionDef().getMap().containsKey(key);
  }
  /**
   * Use {@link #getCollectionDefMap()} instead.
   */
  @java.lang.Deprecated
  public java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> getCollectionDef() {
    return getCollectionDefMap();
  }
  /**
   * <pre>
   * collection_def: Map from collection name to collections.
   * See CollectionDef section for details.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
   */

  public java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> getCollectionDefMap() {
    return internalGetCollectionDef().getMap();
  }
  /**
   * <pre>
   * collection_def: Map from collection name to collections.
   * See CollectionDef section for details.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
   */

  public org.tensorflow.proto.framework.CollectionDef getCollectionDefOrDefault(
      java.lang.String key,
      org.tensorflow.proto.framework.CollectionDef defaultValue) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> map =
        internalGetCollectionDef().getMap();
    return map.containsKey(key) ? map.get(key) : defaultValue;
  }
  /**
   * <pre>
   * collection_def: Map from collection name to collections.
   * See CollectionDef section for details.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
   */

  public org.tensorflow.proto.framework.CollectionDef getCollectionDefOrThrow(
      java.lang.String key) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> map =
        internalGetCollectionDef().getMap();
    if (!map.containsKey(key)) {
      throw new java.lang.IllegalArgumentException();
    }
    return map.get(key);
  }

  public static final int SIGNATURE_DEF_FIELD_NUMBER = 5;
  private static final class SignatureDefDefaultEntryHolder {
    static final com.google.protobuf.MapEntry<
        java.lang.String, org.tensorflow.proto.framework.SignatureDef> defaultEntry =
            com.google.protobuf.MapEntry
            .<java.lang.String, org.tensorflow.proto.framework.SignatureDef>newDefaultInstance(
                org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_SignatureDefEntry_descriptor, 
                com.google.protobuf.WireFormat.FieldType.STRING,
                "",
                com.google.protobuf.WireFormat.FieldType.MESSAGE,
                org.tensorflow.proto.framework.SignatureDef.getDefaultInstance());
  }
  private com.google.protobuf.MapField<
      java.lang.String, org.tensorflow.proto.framework.SignatureDef> signatureDef_;
  private com.google.protobuf.MapField<java.lang.String, org.tensorflow.proto.framework.SignatureDef>
  internalGetSignatureDef() {
    if (signatureDef_ == null) {
      return com.google.protobuf.MapField.emptyMapField(
          SignatureDefDefaultEntryHolder.defaultEntry);
    }
    return signatureDef_;
  }

  public int getSignatureDefCount() {
    return internalGetSignatureDef().getMap().size();
  }
  /**
   * <pre>
   * signature_def: Map from user supplied key for a signature to a single
   * SignatureDef.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
   */

  public boolean containsSignatureDef(
      java.lang.String key) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    return internalGetSignatureDef().getMap().containsKey(key);
  }
  /**
   * Use {@link #getSignatureDefMap()} instead.
   */
  @java.lang.Deprecated
  public java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> getSignatureDef() {
    return getSignatureDefMap();
  }
  /**
   * <pre>
   * signature_def: Map from user supplied key for a signature to a single
   * SignatureDef.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
   */

  public java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> getSignatureDefMap() {
    return internalGetSignatureDef().getMap();
  }
  /**
   * <pre>
   * signature_def: Map from user supplied key for a signature to a single
   * SignatureDef.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
   */

  public org.tensorflow.proto.framework.SignatureDef getSignatureDefOrDefault(
      java.lang.String key,
      org.tensorflow.proto.framework.SignatureDef defaultValue) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> map =
        internalGetSignatureDef().getMap();
    return map.containsKey(key) ? map.get(key) : defaultValue;
  }
  /**
   * <pre>
   * signature_def: Map from user supplied key for a signature to a single
   * SignatureDef.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
   */

  public org.tensorflow.proto.framework.SignatureDef getSignatureDefOrThrow(
      java.lang.String key) {
    if (key == null) { throw new java.lang.NullPointerException(); }
    java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> map =
        internalGetSignatureDef().getMap();
    if (!map.containsKey(key)) {
      throw new java.lang.IllegalArgumentException();
    }
    return map.get(key);
  }

  public static final int ASSET_FILE_DEF_FIELD_NUMBER = 6;
  private java.util.List<org.tensorflow.proto.framework.AssetFileDef> assetFileDef_;
  /**
   * <pre>
   * Asset file def to be used with the defined graph.
   * </pre>
   *
   * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
   */
  public java.util.List<org.tensorflow.proto.framework.AssetFileDef> getAssetFileDefList() {
    return assetFileDef_;
  }
  /**
   * <pre>
   * Asset file def to be used with the defined graph.
   * </pre>
   *
   * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
   */
  public java.util.List<? extends org.tensorflow.proto.framework.AssetFileDefOrBuilder> 
      getAssetFileDefOrBuilderList() {
    return assetFileDef_;
  }
  /**
   * <pre>
   * Asset file def to be used with the defined graph.
   * </pre>
   *
   * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
   */
  public int getAssetFileDefCount() {
    return assetFileDef_.size();
  }
  /**
   * <pre>
   * Asset file def to be used with the defined graph.
   * </pre>
   *
   * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
   */
  public org.tensorflow.proto.framework.AssetFileDef getAssetFileDef(int index) {
    return assetFileDef_.get(index);
  }
  /**
   * <pre>
   * Asset file def to be used with the defined graph.
   * </pre>
   *
   * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
   */
  public org.tensorflow.proto.framework.AssetFileDefOrBuilder getAssetFileDefOrBuilder(
      int index) {
    return assetFileDef_.get(index);
  }

  public static final int OBJECT_GRAPH_DEF_FIELD_NUMBER = 7;
  private org.tensorflow.proto.framework.SavedObjectGraph objectGraphDef_;
  /**
   * <pre>
   * Extra information about the structure of functions and stateful objects.
   * </pre>
   *
   * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
   */
  public boolean hasObjectGraphDef() {
    return objectGraphDef_ != null;
  }
  /**
   * <pre>
   * Extra information about the structure of functions and stateful objects.
   * </pre>
   *
   * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
   */
  public org.tensorflow.proto.framework.SavedObjectGraph getObjectGraphDef() {
    return objectGraphDef_ == null ? org.tensorflow.proto.framework.SavedObjectGraph.getDefaultInstance() : objectGraphDef_;
  }
  /**
   * <pre>
   * Extra information about the structure of functions and stateful objects.
   * </pre>
   *
   * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
   */
  public org.tensorflow.proto.framework.SavedObjectGraphOrBuilder getObjectGraphDefOrBuilder() {
    return getObjectGraphDef();
  }

  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 (metaInfoDef_ != null) {
      output.writeMessage(1, getMetaInfoDef());
    }
    if (graphDef_ != null) {
      output.writeMessage(2, getGraphDef());
    }
    if (saverDef_ != null) {
      output.writeMessage(3, getSaverDef());
    }
    com.google.protobuf.GeneratedMessageV3
      .serializeStringMapTo(
        output,
        internalGetCollectionDef(),
        CollectionDefDefaultEntryHolder.defaultEntry,
        4);
    com.google.protobuf.GeneratedMessageV3
      .serializeStringMapTo(
        output,
        internalGetSignatureDef(),
        SignatureDefDefaultEntryHolder.defaultEntry,
        5);
    for (int i = 0; i < assetFileDef_.size(); i++) {
      output.writeMessage(6, assetFileDef_.get(i));
    }
    if (objectGraphDef_ != null) {
      output.writeMessage(7, getObjectGraphDef());
    }
    unknownFields.writeTo(output);
  }

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

    size = 0;
    if (metaInfoDef_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1, getMetaInfoDef());
    }
    if (graphDef_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(2, getGraphDef());
    }
    if (saverDef_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(3, getSaverDef());
    }
    for (java.util.Map.Entry<java.lang.String, org.tensorflow.proto.framework.CollectionDef> entry
         : internalGetCollectionDef().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.String, org.tensorflow.proto.framework.CollectionDef>
      collectionDef__ = CollectionDefDefaultEntryHolder.defaultEntry.newBuilderForType()
          .setKey(entry.getKey())
          .setValue(entry.getValue())
          .build();
      size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, collectionDef__);
    }
    for (java.util.Map.Entry<java.lang.String, org.tensorflow.proto.framework.SignatureDef> entry
         : internalGetSignatureDef().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.String, org.tensorflow.proto.framework.SignatureDef>
      signatureDef__ = SignatureDefDefaultEntryHolder.defaultEntry.newBuilderForType()
          .setKey(entry.getKey())
          .setValue(entry.getValue())
          .build();
      size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, signatureDef__);
    }
    for (int i = 0; i < assetFileDef_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(6, assetFileDef_.get(i));
    }
    if (objectGraphDef_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(7, getObjectGraphDef());
    }
    size += unknownFields.getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof org.tensorflow.proto.framework.MetaGraphDef)) {
      return super.equals(obj);
    }
    org.tensorflow.proto.framework.MetaGraphDef other = (org.tensorflow.proto.framework.MetaGraphDef) obj;

    if (hasMetaInfoDef() != other.hasMetaInfoDef()) return false;
    if (hasMetaInfoDef()) {
      if (!getMetaInfoDef()
          .equals(other.getMetaInfoDef())) return false;
    }
    if (hasGraphDef() != other.hasGraphDef()) return false;
    if (hasGraphDef()) {
      if (!getGraphDef()
          .equals(other.getGraphDef())) return false;
    }
    if (hasSaverDef() != other.hasSaverDef()) return false;
    if (hasSaverDef()) {
      if (!getSaverDef()
          .equals(other.getSaverDef())) return false;
    }
    if (!internalGetCollectionDef().equals(
        other.internalGetCollectionDef())) return false;
    if (!internalGetSignatureDef().equals(
        other.internalGetSignatureDef())) return false;
    if (!getAssetFileDefList()
        .equals(other.getAssetFileDefList())) return false;
    if (hasObjectGraphDef() != other.hasObjectGraphDef()) return false;
    if (hasObjectGraphDef()) {
      if (!getObjectGraphDef()
          .equals(other.getObjectGraphDef())) return false;
    }
    if (!unknownFields.equals(other.unknownFields)) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (hasMetaInfoDef()) {
      hash = (37 * hash) + META_INFO_DEF_FIELD_NUMBER;
      hash = (53 * hash) + getMetaInfoDef().hashCode();
    }
    if (hasGraphDef()) {
      hash = (37 * hash) + GRAPH_DEF_FIELD_NUMBER;
      hash = (53 * hash) + getGraphDef().hashCode();
    }
    if (hasSaverDef()) {
      hash = (37 * hash) + SAVER_DEF_FIELD_NUMBER;
      hash = (53 * hash) + getSaverDef().hashCode();
    }
    if (!internalGetCollectionDef().getMap().isEmpty()) {
      hash = (37 * hash) + COLLECTION_DEF_FIELD_NUMBER;
      hash = (53 * hash) + internalGetCollectionDef().hashCode();
    }
    if (!internalGetSignatureDef().getMap().isEmpty()) {
      hash = (37 * hash) + SIGNATURE_DEF_FIELD_NUMBER;
      hash = (53 * hash) + internalGetSignatureDef().hashCode();
    }
    if (getAssetFileDefCount() > 0) {
      hash = (37 * hash) + ASSET_FILE_DEF_FIELD_NUMBER;
      hash = (53 * hash) + getAssetFileDefList().hashCode();
    }
    if (hasObjectGraphDef()) {
      hash = (37 * hash) + OBJECT_GRAPH_DEF_FIELD_NUMBER;
      hash = (53 * hash) + getObjectGraphDef().hashCode();
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.MetaGraphDef 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(org.tensorflow.proto.framework.MetaGraphDef 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;
  }
  /**
   * <pre>
   * NOTE: This protocol buffer is evolving, and will go through revisions in the
   * coming months.
   * Protocol buffer containing the following which are necessary to restart
   * training, run inference. It can be used to serialize/de-serialize memory
   * objects necessary for running computation in a graph when crossing the
   * process boundary. It can be used for long term storage of graphs,
   * cross-language execution of graphs, etc.
   *   MetaInfoDef
   *   GraphDef
   *   SaverDef
   *   CollectionDef
   *   TensorInfo
   *   SignatureDef
   * </pre>
   *
   * Protobuf type {@code tensorflow.MetaGraphDef}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:tensorflow.MetaGraphDef)
      org.tensorflow.proto.framework.MetaGraphDefOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 4:
          return internalGetCollectionDef();
        case 5:
          return internalGetSignatureDef();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMutableMapField(
        int number) {
      switch (number) {
        case 4:
          return internalGetMutableCollectionDef();
        case 5:
          return internalGetMutableSignatureDef();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.MetaGraphDef.class, org.tensorflow.proto.framework.MetaGraphDef.Builder.class);
    }

    // Construct using org.tensorflow.proto.framework.MetaGraphDef.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getAssetFileDefFieldBuilder();
      }
    }
    @java.lang.Override
    public Builder clear() {
      super.clear();
      if (metaInfoDefBuilder_ == null) {
        metaInfoDef_ = null;
      } else {
        metaInfoDef_ = null;
        metaInfoDefBuilder_ = null;
      }
      if (graphDefBuilder_ == null) {
        graphDef_ = null;
      } else {
        graphDef_ = null;
        graphDefBuilder_ = null;
      }
      if (saverDefBuilder_ == null) {
        saverDef_ = null;
      } else {
        saverDef_ = null;
        saverDefBuilder_ = null;
      }
      internalGetMutableCollectionDef().clear();
      internalGetMutableSignatureDef().clear();
      if (assetFileDefBuilder_ == null) {
        assetFileDef_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
      } else {
        assetFileDefBuilder_.clear();
      }
      if (objectGraphDefBuilder_ == null) {
        objectGraphDef_ = null;
      } else {
        objectGraphDef_ = null;
        objectGraphDefBuilder_ = null;
      }
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return org.tensorflow.proto.framework.MetaGraphProtos.internal_static_tensorflow_MetaGraphDef_descriptor;
    }

    @java.lang.Override
    public org.tensorflow.proto.framework.MetaGraphDef getDefaultInstanceForType() {
      return org.tensorflow.proto.framework.MetaGraphDef.getDefaultInstance();
    }

    @java.lang.Override
    public org.tensorflow.proto.framework.MetaGraphDef build() {
      org.tensorflow.proto.framework.MetaGraphDef result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public org.tensorflow.proto.framework.MetaGraphDef buildPartial() {
      org.tensorflow.proto.framework.MetaGraphDef result = new org.tensorflow.proto.framework.MetaGraphDef(this);
      int from_bitField0_ = bitField0_;
      if (metaInfoDefBuilder_ == null) {
        result.metaInfoDef_ = metaInfoDef_;
      } else {
        result.metaInfoDef_ = metaInfoDefBuilder_.build();
      }
      if (graphDefBuilder_ == null) {
        result.graphDef_ = graphDef_;
      } else {
        result.graphDef_ = graphDefBuilder_.build();
      }
      if (saverDefBuilder_ == null) {
        result.saverDef_ = saverDef_;
      } else {
        result.saverDef_ = saverDefBuilder_.build();
      }
      result.collectionDef_ = internalGetCollectionDef();
      result.collectionDef_.makeImmutable();
      result.signatureDef_ = internalGetSignatureDef();
      result.signatureDef_.makeImmutable();
      if (assetFileDefBuilder_ == null) {
        if (((bitField0_ & 0x00000004) != 0)) {
          assetFileDef_ = java.util.Collections.unmodifiableList(assetFileDef_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.assetFileDef_ = assetFileDef_;
      } else {
        result.assetFileDef_ = assetFileDefBuilder_.build();
      }
      if (objectGraphDefBuilder_ == null) {
        result.objectGraphDef_ = objectGraphDef_;
      } else {
        result.objectGraphDef_ = objectGraphDefBuilder_.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 org.tensorflow.proto.framework.MetaGraphDef) {
        return mergeFrom((org.tensorflow.proto.framework.MetaGraphDef)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(org.tensorflow.proto.framework.MetaGraphDef other) {
      if (other == org.tensorflow.proto.framework.MetaGraphDef.getDefaultInstance()) return this;
      if (other.hasMetaInfoDef()) {
        mergeMetaInfoDef(other.getMetaInfoDef());
      }
      if (other.hasGraphDef()) {
        mergeGraphDef(other.getGraphDef());
      }
      if (other.hasSaverDef()) {
        mergeSaverDef(other.getSaverDef());
      }
      internalGetMutableCollectionDef().mergeFrom(
          other.internalGetCollectionDef());
      internalGetMutableSignatureDef().mergeFrom(
          other.internalGetSignatureDef());
      if (assetFileDefBuilder_ == null) {
        if (!other.assetFileDef_.isEmpty()) {
          if (assetFileDef_.isEmpty()) {
            assetFileDef_ = other.assetFileDef_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureAssetFileDefIsMutable();
            assetFileDef_.addAll(other.assetFileDef_);
          }
          onChanged();
        }
      } else {
        if (!other.assetFileDef_.isEmpty()) {
          if (assetFileDefBuilder_.isEmpty()) {
            assetFileDefBuilder_.dispose();
            assetFileDefBuilder_ = null;
            assetFileDef_ = other.assetFileDef_;
            bitField0_ = (bitField0_ & ~0x00000004);
            assetFileDefBuilder_ = 
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getAssetFileDefFieldBuilder() : null;
          } else {
            assetFileDefBuilder_.addAllMessages(other.assetFileDef_);
          }
        }
      }
      if (other.hasObjectGraphDef()) {
        mergeObjectGraphDef(other.getObjectGraphDef());
      }
      this.mergeUnknownFields(other.unknownFields);
      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 {
      org.tensorflow.proto.framework.MetaGraphDef parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (org.tensorflow.proto.framework.MetaGraphDef) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int bitField0_;

    private org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef metaInfoDef_;
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef, org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.Builder, org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDefOrBuilder> metaInfoDefBuilder_;
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    public boolean hasMetaInfoDef() {
      return metaInfoDefBuilder_ != null || metaInfoDef_ != null;
    }
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef getMetaInfoDef() {
      if (metaInfoDefBuilder_ == null) {
        return metaInfoDef_ == null ? org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.getDefaultInstance() : metaInfoDef_;
      } else {
        return metaInfoDefBuilder_.getMessage();
      }
    }
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    public Builder setMetaInfoDef(org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef value) {
      if (metaInfoDefBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        metaInfoDef_ = value;
        onChanged();
      } else {
        metaInfoDefBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    public Builder setMetaInfoDef(
        org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.Builder builderForValue) {
      if (metaInfoDefBuilder_ == null) {
        metaInfoDef_ = builderForValue.build();
        onChanged();
      } else {
        metaInfoDefBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    public Builder mergeMetaInfoDef(org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef value) {
      if (metaInfoDefBuilder_ == null) {
        if (metaInfoDef_ != null) {
          metaInfoDef_ =
            org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.newBuilder(metaInfoDef_).mergeFrom(value).buildPartial();
        } else {
          metaInfoDef_ = value;
        }
        onChanged();
      } else {
        metaInfoDefBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    public Builder clearMetaInfoDef() {
      if (metaInfoDefBuilder_ == null) {
        metaInfoDef_ = null;
        onChanged();
      } else {
        metaInfoDef_ = null;
        metaInfoDefBuilder_ = null;
      }

      return this;
    }
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.Builder getMetaInfoDefBuilder() {
      
      onChanged();
      return getMetaInfoDefFieldBuilder().getBuilder();
    }
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    public org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDefOrBuilder getMetaInfoDefOrBuilder() {
      if (metaInfoDefBuilder_ != null) {
        return metaInfoDefBuilder_.getMessageOrBuilder();
      } else {
        return metaInfoDef_ == null ?
            org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.getDefaultInstance() : metaInfoDef_;
      }
    }
    /**
     * <code>.tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef, org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.Builder, org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDefOrBuilder> 
        getMetaInfoDefFieldBuilder() {
      if (metaInfoDefBuilder_ == null) {
        metaInfoDefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef, org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDef.Builder, org.tensorflow.proto.framework.MetaGraphDef.MetaInfoDefOrBuilder>(
                getMetaInfoDef(),
                getParentForChildren(),
                isClean());
        metaInfoDef_ = null;
      }
      return metaInfoDefBuilder_;
    }

    private org.tensorflow.proto.framework.GraphDef graphDef_;
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> graphDefBuilder_;
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    public boolean hasGraphDef() {
      return graphDefBuilder_ != null || graphDef_ != null;
    }
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    public org.tensorflow.proto.framework.GraphDef getGraphDef() {
      if (graphDefBuilder_ == null) {
        return graphDef_ == null ? org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : graphDef_;
      } else {
        return graphDefBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    public Builder setGraphDef(org.tensorflow.proto.framework.GraphDef value) {
      if (graphDefBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        graphDef_ = value;
        onChanged();
      } else {
        graphDefBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    public Builder setGraphDef(
        org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
      if (graphDefBuilder_ == null) {
        graphDef_ = builderForValue.build();
        onChanged();
      } else {
        graphDefBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    public Builder mergeGraphDef(org.tensorflow.proto.framework.GraphDef value) {
      if (graphDefBuilder_ == null) {
        if (graphDef_ != null) {
          graphDef_ =
            org.tensorflow.proto.framework.GraphDef.newBuilder(graphDef_).mergeFrom(value).buildPartial();
        } else {
          graphDef_ = value;
        }
        onChanged();
      } else {
        graphDefBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    public Builder clearGraphDef() {
      if (graphDefBuilder_ == null) {
        graphDef_ = null;
        onChanged();
      } else {
        graphDef_ = null;
        graphDefBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    public org.tensorflow.proto.framework.GraphDef.Builder getGraphDefBuilder() {
      
      onChanged();
      return getGraphDefFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    public org.tensorflow.proto.framework.GraphDefOrBuilder getGraphDefOrBuilder() {
      if (graphDefBuilder_ != null) {
        return graphDefBuilder_.getMessageOrBuilder();
      } else {
        return graphDef_ == null ?
            org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : graphDef_;
      }
    }
    /**
     * <pre>
     * GraphDef.
     * </pre>
     *
     * <code>.tensorflow.GraphDef graph_def = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> 
        getGraphDefFieldBuilder() {
      if (graphDefBuilder_ == null) {
        graphDefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder>(
                getGraphDef(),
                getParentForChildren(),
                isClean());
        graphDef_ = null;
      }
      return graphDefBuilder_;
    }

    private org.tensorflow.proto.util.SaverDef saverDef_;
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.util.SaverDef, org.tensorflow.proto.util.SaverDef.Builder, org.tensorflow.proto.util.SaverDefOrBuilder> saverDefBuilder_;
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    public boolean hasSaverDef() {
      return saverDefBuilder_ != null || saverDef_ != null;
    }
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    public org.tensorflow.proto.util.SaverDef getSaverDef() {
      if (saverDefBuilder_ == null) {
        return saverDef_ == null ? org.tensorflow.proto.util.SaverDef.getDefaultInstance() : saverDef_;
      } else {
        return saverDefBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    public Builder setSaverDef(org.tensorflow.proto.util.SaverDef value) {
      if (saverDefBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        saverDef_ = value;
        onChanged();
      } else {
        saverDefBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    public Builder setSaverDef(
        org.tensorflow.proto.util.SaverDef.Builder builderForValue) {
      if (saverDefBuilder_ == null) {
        saverDef_ = builderForValue.build();
        onChanged();
      } else {
        saverDefBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    public Builder mergeSaverDef(org.tensorflow.proto.util.SaverDef value) {
      if (saverDefBuilder_ == null) {
        if (saverDef_ != null) {
          saverDef_ =
            org.tensorflow.proto.util.SaverDef.newBuilder(saverDef_).mergeFrom(value).buildPartial();
        } else {
          saverDef_ = value;
        }
        onChanged();
      } else {
        saverDefBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    public Builder clearSaverDef() {
      if (saverDefBuilder_ == null) {
        saverDef_ = null;
        onChanged();
      } else {
        saverDef_ = null;
        saverDefBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    public org.tensorflow.proto.util.SaverDef.Builder getSaverDefBuilder() {
      
      onChanged();
      return getSaverDefFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    public org.tensorflow.proto.util.SaverDefOrBuilder getSaverDefOrBuilder() {
      if (saverDefBuilder_ != null) {
        return saverDefBuilder_.getMessageOrBuilder();
      } else {
        return saverDef_ == null ?
            org.tensorflow.proto.util.SaverDef.getDefaultInstance() : saverDef_;
      }
    }
    /**
     * <pre>
     * SaverDef.
     * </pre>
     *
     * <code>.tensorflow.SaverDef saver_def = 3;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.util.SaverDef, org.tensorflow.proto.util.SaverDef.Builder, org.tensorflow.proto.util.SaverDefOrBuilder> 
        getSaverDefFieldBuilder() {
      if (saverDefBuilder_ == null) {
        saverDefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            org.tensorflow.proto.util.SaverDef, org.tensorflow.proto.util.SaverDef.Builder, org.tensorflow.proto.util.SaverDefOrBuilder>(
                getSaverDef(),
                getParentForChildren(),
                isClean());
        saverDef_ = null;
      }
      return saverDefBuilder_;
    }

    private com.google.protobuf.MapField<
        java.lang.String, org.tensorflow.proto.framework.CollectionDef> collectionDef_;
    private com.google.protobuf.MapField<java.lang.String, org.tensorflow.proto.framework.CollectionDef>
    internalGetCollectionDef() {
      if (collectionDef_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            CollectionDefDefaultEntryHolder.defaultEntry);
      }
      return collectionDef_;
    }
    private com.google.protobuf.MapField<java.lang.String, org.tensorflow.proto.framework.CollectionDef>
    internalGetMutableCollectionDef() {
      onChanged();;
      if (collectionDef_ == null) {
        collectionDef_ = com.google.protobuf.MapField.newMapField(
            CollectionDefDefaultEntryHolder.defaultEntry);
      }
      if (!collectionDef_.isMutable()) {
        collectionDef_ = collectionDef_.copy();
      }
      return collectionDef_;
    }

    public int getCollectionDefCount() {
      return internalGetCollectionDef().getMap().size();
    }
    /**
     * <pre>
     * collection_def: Map from collection name to collections.
     * See CollectionDef section for details.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
     */

    public boolean containsCollectionDef(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetCollectionDef().getMap().containsKey(key);
    }
    /**
     * Use {@link #getCollectionDefMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> getCollectionDef() {
      return getCollectionDefMap();
    }
    /**
     * <pre>
     * collection_def: Map from collection name to collections.
     * See CollectionDef section for details.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
     */

    public java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> getCollectionDefMap() {
      return internalGetCollectionDef().getMap();
    }
    /**
     * <pre>
     * collection_def: Map from collection name to collections.
     * See CollectionDef section for details.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
     */

    public org.tensorflow.proto.framework.CollectionDef getCollectionDefOrDefault(
        java.lang.String key,
        org.tensorflow.proto.framework.CollectionDef defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> map =
          internalGetCollectionDef().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * collection_def: Map from collection name to collections.
     * See CollectionDef section for details.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
     */

    public org.tensorflow.proto.framework.CollectionDef getCollectionDefOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> map =
          internalGetCollectionDef().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public Builder clearCollectionDef() {
      internalGetMutableCollectionDef().getMutableMap()
          .clear();
      return this;
    }
    /**
     * <pre>
     * collection_def: Map from collection name to collections.
     * See CollectionDef section for details.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
     */

    public Builder removeCollectionDef(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      internalGetMutableCollectionDef().getMutableMap()
          .remove(key);
      return this;
    }
    /**
     * Use alternate mutation accessors instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef>
    getMutableCollectionDef() {
      return internalGetMutableCollectionDef().getMutableMap();
    }
    /**
     * <pre>
     * collection_def: Map from collection name to collections.
     * See CollectionDef section for details.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
     */
    public Builder putCollectionDef(
        java.lang.String key,
        org.tensorflow.proto.framework.CollectionDef value) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      if (value == null) { throw new java.lang.NullPointerException(); }
      internalGetMutableCollectionDef().getMutableMap()
          .put(key, value);
      return this;
    }
    /**
     * <pre>
     * collection_def: Map from collection name to collections.
     * See CollectionDef section for details.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.CollectionDef&gt; collection_def = 4;</code>
     */

    public Builder putAllCollectionDef(
        java.util.Map<java.lang.String, org.tensorflow.proto.framework.CollectionDef> values) {
      internalGetMutableCollectionDef().getMutableMap()
          .putAll(values);
      return this;
    }

    private com.google.protobuf.MapField<
        java.lang.String, org.tensorflow.proto.framework.SignatureDef> signatureDef_;
    private com.google.protobuf.MapField<java.lang.String, org.tensorflow.proto.framework.SignatureDef>
    internalGetSignatureDef() {
      if (signatureDef_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SignatureDefDefaultEntryHolder.defaultEntry);
      }
      return signatureDef_;
    }
    private com.google.protobuf.MapField<java.lang.String, org.tensorflow.proto.framework.SignatureDef>
    internalGetMutableSignatureDef() {
      onChanged();;
      if (signatureDef_ == null) {
        signatureDef_ = com.google.protobuf.MapField.newMapField(
            SignatureDefDefaultEntryHolder.defaultEntry);
      }
      if (!signatureDef_.isMutable()) {
        signatureDef_ = signatureDef_.copy();
      }
      return signatureDef_;
    }

    public int getSignatureDefCount() {
      return internalGetSignatureDef().getMap().size();
    }
    /**
     * <pre>
     * signature_def: Map from user supplied key for a signature to a single
     * SignatureDef.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
     */

    public boolean containsSignatureDef(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetSignatureDef().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSignatureDefMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> getSignatureDef() {
      return getSignatureDefMap();
    }
    /**
     * <pre>
     * signature_def: Map from user supplied key for a signature to a single
     * SignatureDef.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
     */

    public java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> getSignatureDefMap() {
      return internalGetSignatureDef().getMap();
    }
    /**
     * <pre>
     * signature_def: Map from user supplied key for a signature to a single
     * SignatureDef.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
     */

    public org.tensorflow.proto.framework.SignatureDef getSignatureDefOrDefault(
        java.lang.String key,
        org.tensorflow.proto.framework.SignatureDef defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> map =
          internalGetSignatureDef().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * signature_def: Map from user supplied key for a signature to a single
     * SignatureDef.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
     */

    public org.tensorflow.proto.framework.SignatureDef getSignatureDefOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> map =
          internalGetSignatureDef().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public Builder clearSignatureDef() {
      internalGetMutableSignatureDef().getMutableMap()
          .clear();
      return this;
    }
    /**
     * <pre>
     * signature_def: Map from user supplied key for a signature to a single
     * SignatureDef.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
     */

    public Builder removeSignatureDef(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      internalGetMutableSignatureDef().getMutableMap()
          .remove(key);
      return this;
    }
    /**
     * Use alternate mutation accessors instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef>
    getMutableSignatureDef() {
      return internalGetMutableSignatureDef().getMutableMap();
    }
    /**
     * <pre>
     * signature_def: Map from user supplied key for a signature to a single
     * SignatureDef.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
     */
    public Builder putSignatureDef(
        java.lang.String key,
        org.tensorflow.proto.framework.SignatureDef value) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      if (value == null) { throw new java.lang.NullPointerException(); }
      internalGetMutableSignatureDef().getMutableMap()
          .put(key, value);
      return this;
    }
    /**
     * <pre>
     * signature_def: Map from user supplied key for a signature to a single
     * SignatureDef.
     * </pre>
     *
     * <code>map&lt;string, .tensorflow.SignatureDef&gt; signature_def = 5;</code>
     */

    public Builder putAllSignatureDef(
        java.util.Map<java.lang.String, org.tensorflow.proto.framework.SignatureDef> values) {
      internalGetMutableSignatureDef().getMutableMap()
          .putAll(values);
      return this;
    }

    private java.util.List<org.tensorflow.proto.framework.AssetFileDef> assetFileDef_ =
      java.util.Collections.emptyList();
    private void ensureAssetFileDefIsMutable() {
      if (!((bitField0_ & 0x00000004) != 0)) {
        assetFileDef_ = new java.util.ArrayList<org.tensorflow.proto.framework.AssetFileDef>(assetFileDef_);
        bitField0_ |= 0x00000004;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.AssetFileDef, org.tensorflow.proto.framework.AssetFileDef.Builder, org.tensorflow.proto.framework.AssetFileDefOrBuilder> assetFileDefBuilder_;

    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.AssetFileDef> getAssetFileDefList() {
      if (assetFileDefBuilder_ == null) {
        return java.util.Collections.unmodifiableList(assetFileDef_);
      } else {
        return assetFileDefBuilder_.getMessageList();
      }
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public int getAssetFileDefCount() {
      if (assetFileDefBuilder_ == null) {
        return assetFileDef_.size();
      } else {
        return assetFileDefBuilder_.getCount();
      }
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public org.tensorflow.proto.framework.AssetFileDef getAssetFileDef(int index) {
      if (assetFileDefBuilder_ == null) {
        return assetFileDef_.get(index);
      } else {
        return assetFileDefBuilder_.getMessage(index);
      }
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder setAssetFileDef(
        int index, org.tensorflow.proto.framework.AssetFileDef value) {
      if (assetFileDefBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAssetFileDefIsMutable();
        assetFileDef_.set(index, value);
        onChanged();
      } else {
        assetFileDefBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder setAssetFileDef(
        int index, org.tensorflow.proto.framework.AssetFileDef.Builder builderForValue) {
      if (assetFileDefBuilder_ == null) {
        ensureAssetFileDefIsMutable();
        assetFileDef_.set(index, builderForValue.build());
        onChanged();
      } else {
        assetFileDefBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder addAssetFileDef(org.tensorflow.proto.framework.AssetFileDef value) {
      if (assetFileDefBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAssetFileDefIsMutable();
        assetFileDef_.add(value);
        onChanged();
      } else {
        assetFileDefBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder addAssetFileDef(
        int index, org.tensorflow.proto.framework.AssetFileDef value) {
      if (assetFileDefBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureAssetFileDefIsMutable();
        assetFileDef_.add(index, value);
        onChanged();
      } else {
        assetFileDefBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder addAssetFileDef(
        org.tensorflow.proto.framework.AssetFileDef.Builder builderForValue) {
      if (assetFileDefBuilder_ == null) {
        ensureAssetFileDefIsMutable();
        assetFileDef_.add(builderForValue.build());
        onChanged();
      } else {
        assetFileDefBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder addAssetFileDef(
        int index, org.tensorflow.proto.framework.AssetFileDef.Builder builderForValue) {
      if (assetFileDefBuilder_ == null) {
        ensureAssetFileDefIsMutable();
        assetFileDef_.add(index, builderForValue.build());
        onChanged();
      } else {
        assetFileDefBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder addAllAssetFileDef(
        java.lang.Iterable<? extends org.tensorflow.proto.framework.AssetFileDef> values) {
      if (assetFileDefBuilder_ == null) {
        ensureAssetFileDefIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, assetFileDef_);
        onChanged();
      } else {
        assetFileDefBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder clearAssetFileDef() {
      if (assetFileDefBuilder_ == null) {
        assetFileDef_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
      } else {
        assetFileDefBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public Builder removeAssetFileDef(int index) {
      if (assetFileDefBuilder_ == null) {
        ensureAssetFileDefIsMutable();
        assetFileDef_.remove(index);
        onChanged();
      } else {
        assetFileDefBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public org.tensorflow.proto.framework.AssetFileDef.Builder getAssetFileDefBuilder(
        int index) {
      return getAssetFileDefFieldBuilder().getBuilder(index);
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public org.tensorflow.proto.framework.AssetFileDefOrBuilder getAssetFileDefOrBuilder(
        int index) {
      if (assetFileDefBuilder_ == null) {
        return assetFileDef_.get(index);  } else {
        return assetFileDefBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.AssetFileDefOrBuilder> 
         getAssetFileDefOrBuilderList() {
      if (assetFileDefBuilder_ != null) {
        return assetFileDefBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(assetFileDef_);
      }
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public org.tensorflow.proto.framework.AssetFileDef.Builder addAssetFileDefBuilder() {
      return getAssetFileDefFieldBuilder().addBuilder(
          org.tensorflow.proto.framework.AssetFileDef.getDefaultInstance());
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public org.tensorflow.proto.framework.AssetFileDef.Builder addAssetFileDefBuilder(
        int index) {
      return getAssetFileDefFieldBuilder().addBuilder(
          index, org.tensorflow.proto.framework.AssetFileDef.getDefaultInstance());
    }
    /**
     * <pre>
     * Asset file def to be used with the defined graph.
     * </pre>
     *
     * <code>repeated .tensorflow.AssetFileDef asset_file_def = 6;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.AssetFileDef.Builder> 
         getAssetFileDefBuilderList() {
      return getAssetFileDefFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.AssetFileDef, org.tensorflow.proto.framework.AssetFileDef.Builder, org.tensorflow.proto.framework.AssetFileDefOrBuilder> 
        getAssetFileDefFieldBuilder() {
      if (assetFileDefBuilder_ == null) {
        assetFileDefBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            org.tensorflow.proto.framework.AssetFileDef, org.tensorflow.proto.framework.AssetFileDef.Builder, org.tensorflow.proto.framework.AssetFileDefOrBuilder>(
                assetFileDef_,
                ((bitField0_ & 0x00000004) != 0),
                getParentForChildren(),
                isClean());
        assetFileDef_ = null;
      }
      return assetFileDefBuilder_;
    }

    private org.tensorflow.proto.framework.SavedObjectGraph objectGraphDef_;
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.SavedObjectGraph, org.tensorflow.proto.framework.SavedObjectGraph.Builder, org.tensorflow.proto.framework.SavedObjectGraphOrBuilder> objectGraphDefBuilder_;
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    public boolean hasObjectGraphDef() {
      return objectGraphDefBuilder_ != null || objectGraphDef_ != null;
    }
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    public org.tensorflow.proto.framework.SavedObjectGraph getObjectGraphDef() {
      if (objectGraphDefBuilder_ == null) {
        return objectGraphDef_ == null ? org.tensorflow.proto.framework.SavedObjectGraph.getDefaultInstance() : objectGraphDef_;
      } else {
        return objectGraphDefBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    public Builder setObjectGraphDef(org.tensorflow.proto.framework.SavedObjectGraph value) {
      if (objectGraphDefBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        objectGraphDef_ = value;
        onChanged();
      } else {
        objectGraphDefBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    public Builder setObjectGraphDef(
        org.tensorflow.proto.framework.SavedObjectGraph.Builder builderForValue) {
      if (objectGraphDefBuilder_ == null) {
        objectGraphDef_ = builderForValue.build();
        onChanged();
      } else {
        objectGraphDefBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    public Builder mergeObjectGraphDef(org.tensorflow.proto.framework.SavedObjectGraph value) {
      if (objectGraphDefBuilder_ == null) {
        if (objectGraphDef_ != null) {
          objectGraphDef_ =
            org.tensorflow.proto.framework.SavedObjectGraph.newBuilder(objectGraphDef_).mergeFrom(value).buildPartial();
        } else {
          objectGraphDef_ = value;
        }
        onChanged();
      } else {
        objectGraphDefBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    public Builder clearObjectGraphDef() {
      if (objectGraphDefBuilder_ == null) {
        objectGraphDef_ = null;
        onChanged();
      } else {
        objectGraphDef_ = null;
        objectGraphDefBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    public org.tensorflow.proto.framework.SavedObjectGraph.Builder getObjectGraphDefBuilder() {
      
      onChanged();
      return getObjectGraphDefFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    public org.tensorflow.proto.framework.SavedObjectGraphOrBuilder getObjectGraphDefOrBuilder() {
      if (objectGraphDefBuilder_ != null) {
        return objectGraphDefBuilder_.getMessageOrBuilder();
      } else {
        return objectGraphDef_ == null ?
            org.tensorflow.proto.framework.SavedObjectGraph.getDefaultInstance() : objectGraphDef_;
      }
    }
    /**
     * <pre>
     * Extra information about the structure of functions and stateful objects.
     * </pre>
     *
     * <code>.tensorflow.SavedObjectGraph object_graph_def = 7;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.SavedObjectGraph, org.tensorflow.proto.framework.SavedObjectGraph.Builder, org.tensorflow.proto.framework.SavedObjectGraphOrBuilder> 
        getObjectGraphDefFieldBuilder() {
      if (objectGraphDefBuilder_ == null) {
        objectGraphDefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            org.tensorflow.proto.framework.SavedObjectGraph, org.tensorflow.proto.framework.SavedObjectGraph.Builder, org.tensorflow.proto.framework.SavedObjectGraphOrBuilder>(
                getObjectGraphDef(),
                getParentForChildren(),
                isClean());
        objectGraphDef_ = null;
      }
      return objectGraphDefBuilder_;
    }
    @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:tensorflow.MetaGraphDef)
  }

  // @@protoc_insertion_point(class_scope:tensorflow.MetaGraphDef)
  private static final org.tensorflow.proto.framework.MetaGraphDef DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new org.tensorflow.proto.framework.MetaGraphDef();
  }

  public static org.tensorflow.proto.framework.MetaGraphDef getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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

  @java.lang.Override
  public org.tensorflow.proto.framework.MetaGraphDef getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

