content: /*
   * Tencent is pleased to support the open source community by making Angel available.
   *
   * Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.
   *
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
   * compliance with the License. You may obtain a copy of the License at
   *
   * https://opensource.org/licenses/Apache-2.0
   *
   * Unless required by applicable law or agreed to in writing, software distributed under the License
   * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
   * or implied. See the License for the specific language governing permissions and limitations under
   * the License.
   *
   */
  // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: core/saver/meta_graph.proto
  
  package com.tencent.angel.core.saver;
  
  public final class MetaGraphProtos {
    private MetaGraphProtos() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    public interface MetaGraphDefOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.MetaGraphDef)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
       */
      boolean hasMetaInfoDef();
      /**
       * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef getMetaInfoDef();
      /**
       * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDefOrBuilder getMetaInfoDefOrBuilder();
  
      /**
       * <pre>
       * GraphDef.
       * </pre>
       *
       * <code>.angel.GraphDef graph_def = 2;</code>
       */
      boolean hasGraphDef();
      /**
       * <pre>
       * GraphDef.
       * </pre>
       *
       * <code>.angel.GraphDef graph_def = 2;</code>
       */
      com.tencent.angel.core.graph.GraphProtos.GraphDef getGraphDef();
      /**
       * <pre>
       * GraphDef.
       * </pre>
       *
       * <code>.angel.GraphDef graph_def = 2;</code>
       */
      com.tencent.angel.core.graph.GraphProtos.GraphDefOrBuilder getGraphDefOrBuilder();
  
      /**
       * <pre>
       * SaverDef.
       * </pre>
       *
       * <code>.angel.SaverDef saver_def = 3;</code>
       */
      boolean hasSaverDef();
      /**
       * <pre>
       * SaverDef.
       * </pre>
       *
       * <code>.angel.SaverDef saver_def = 3;</code>
       */
      com.tencent.angel.core.saver.SaverProtos.SaverDef getSaverDef();
      /**
       * <pre>
       * SaverDef.
       * </pre>
       *
       * <code>.angel.SaverDef saver_def = 3;</code>
       */
      com.tencent.angel.core.saver.SaverProtos.SaverDefOrBuilder getSaverDefOrBuilder();
  
      /**
       * <pre>
       * collection_def: Map from collection name to collections.
       * See CollectionDef section for details.
       * </pre>
       *
       * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
       */
      int getCollectionDefCount();
      /**
       * <pre>
       * collection_def: Map from collection name to collections.
       * See CollectionDef section for details.
       * </pre>
       *
       * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
       */
      boolean containsCollectionDef(
          java.lang.String key);
      /**
       * Use {@link #getCollectionDefMap()} instead.
       */
      @java.lang.Deprecated
      java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef>
      getCollectionDef();
      /**
       * <pre>
       * collection_def: Map from collection name to collections.
       * See CollectionDef section for details.
       * </pre>
       *
       * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
       */
      java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef>
      getCollectionDefMap();
      /**
       * <pre>
       * collection_def: Map from collection name to collections.
       * See CollectionDef section for details.
       * </pre>
       *
       * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
       */
  
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getCollectionDefOrDefault(
          java.lang.String key,
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef defaultValue);
      /**
       * <pre>
       * collection_def: Map from collection name to collections.
       * See CollectionDef section for details.
       * </pre>
       *
       * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
       */
  
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getCollectionDefOrThrow(
          java.lang.String key);
  
      /**
       * <pre>
       * signature_def: Map from user supplied key for a signature to a single SignatureDef.
       * </pre>
       *
       * <code>map&lt;string, .angel.SignatureDef&gt; signature_def = 5;</code>
       */
      int getSignatureDefCount();
      /**
       * <pre>
       * signature_def: Map from user supplied key for a signature to a single SignatureDef.
       * </pre>
       *
       * <code>map&lt;string, .angel.SignatureDef&gt; signature_def = 5;</code>
       */
      boolean containsSignatureDef(
          java.lang.String key);
      /**
       * Use {@link #getSignatureDefMap()} instead.
       */
      @java.lang.Deprecated
      java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef>
      getSignatureDef();
      /**
       * <pre>
       * signature_def: Map from user supplied key for a signature to a single SignatureDef.
       * </pre>
       *
       * <code>map&lt;string, .angel.SignatureDef&gt; signature_def = 5;</code>
       */
      java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef>
      getSignatureDefMap();
      /**
       * <pre>
       * signature_def: Map from user supplied key for a signature to a single SignatureDef.
       * </pre>
       *
       * <code>map&lt;string, .angel.SignatureDef&gt; signature_def = 5;</code>
       */
  
      com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getSignatureDefOrDefault(
          java.lang.String key,
          com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef defaultValue);
      /**
       * <pre>
       * signature_def: Map from user supplied key for a signature to a single SignatureDef.
       * </pre>
       *
       * <code>map&lt;string, .angel.SignatureDef&gt; signature_def = 5;</code>
       */
  
      com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getSignatureDefOrThrow(
          java.lang.String key);
  
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
       */
      java.util.List<com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef> 
          getAssetFileDefList();
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef getAssetFileDef(int index);
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
       */
      int getAssetFileDefCount();
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
       */
      java.util.List<? extends com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDefOrBuilder> 
          getAssetFileDefOrBuilderList();
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDefOrBuilder getAssetFileDefOrBuilder(
          int index);
    }
    /**
     * <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 angel.MetaGraphDef}
     */
    public  static final class MetaGraphDef extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.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
      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;
              default: {
                if (!parseUnknownFieldProto3(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.Builder subBuilder = null;
                if (metaInfoDef_ != null) {
                  subBuilder = metaInfoDef_.toBuilder();
                }
                metaInfoDef_ = input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(metaInfoDef_);
                  metaInfoDef_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 18: {
                com.tencent.angel.core.graph.GraphProtos.GraphDef.Builder subBuilder = null;
                if (graphDef_ != null) {
                  subBuilder = graphDef_.toBuilder();
                }
                graphDef_ = input.readMessage(com.tencent.angel.core.graph.GraphProtos.GraphDef.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(graphDef_);
                  graphDef_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 26: {
                com.tencent.angel.core.saver.SaverProtos.SaverDef.Builder subBuilder = null;
                if (saverDef_ != null) {
                  subBuilder = saverDef_.toBuilder();
                }
                saverDef_ = input.readMessage(com.tencent.angel.core.saver.SaverProtos.SaverDef.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(saverDef_);
                  saverDef_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 34: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  collectionDef_ = com.google.protobuf.MapField.newMapField(
                      CollectionDefDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000008;
                }
                com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef>
                collectionDef__ = input.readMessage(
                    CollectionDefDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                collectionDef_.getMutableMap().put(
                    collectionDef__.getKey(), collectionDef__.getValue());
                break;
              }
              case 42: {
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                  signatureDef_ = com.google.protobuf.MapField.newMapField(
                      SignatureDefDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000010;
                }
                com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef>
                signatureDef__ = input.readMessage(
                    SignatureDefDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                signatureDef_.getMutableMap().put(
                    signatureDef__.getKey(), signatureDef__.getValue());
                break;
              }
              case 50: {
                if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                  assetFileDef_ = new java.util.ArrayList<com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef>();
                  mutable_bitField0_ |= 0x00000020;
                }
                assetFileDef_.add(
                    input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.parser(), extensionRegistry));
                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_ & 0x00000020) == 0x00000020)) {
            assetFileDef_ = java.util.Collections.unmodifiableList(assetFileDef_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_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);
        }
      }
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.class, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.Builder.class);
      }
  
      public interface MetaInfoDefOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.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>.angel.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>.angel.OpList stripped_op_list = 2;</code>
         */
        com.tencent.angel.core.graph.OpDefProtos.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>.angel.OpList stripped_op_list = 2;</code>
         */
        com.tencent.angel.core.graph.OpDefProtos.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>
       * 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 angel.MetaGraphDef.MetaInfoDef}
       */
      public  static final class MetaInfoDef extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.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_ = "";
          strippedDefaultAttrs_ = false;
        }
  
        @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;
                default: {
                  if (!parseUnknownFieldProto3(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  java.lang.String s = input.readStringRequireUtf8();
  
                  metaGraphVersion_ = s;
                  break;
                }
                case 18: {
                  com.tencent.angel.core.graph.OpDefProtos.OpList.Builder subBuilder = null;
                  if (strippedOpList_ != null) {
                    subBuilder = strippedOpList_.toBuilder();
                  }
                  strippedOpList_ = input.readMessage(com.tencent.angel.core.graph.OpDefProtos.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_ & 0x00000008) == 0x00000008)) {
                    tags_ = new com.google.protobuf.LazyStringArrayList();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  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;
                }
              }
            }
          } 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_ & 0x00000008) == 0x00000008)) {
              tags_ = tags_.getUnmodifiableView();
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_MetaInfoDef_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_MetaInfoDef_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.class, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.Builder.class);
        }
  
        private int bitField0_;
        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 com.tencent.angel.core.graph.OpDefProtos.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>.angel.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>.angel.OpList stripped_op_list = 2;</code>
         */
        public com.tencent.angel.core.graph.OpDefProtos.OpList getStrippedOpList() {
          return strippedOpList_ == null ? com.tencent.angel.core.graph.OpDefProtos.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>.angel.OpList stripped_op_list = 2;</code>
         */
        public com.tencent.angel.core.graph.OpDefProtos.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_;
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          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_);
          }
          unknownFields.writeTo(output);
        }
  
        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_);
          }
          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 com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef)) {
            return super.equals(obj);
          }
          com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef other = (com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef) obj;
  
          boolean result = true;
          result = result && getMetaGraphVersion()
              .equals(other.getMetaGraphVersion());
          result = result && (hasStrippedOpList() == other.hasStrippedOpList());
          if (hasStrippedOpList()) {
            result = result && getStrippedOpList()
                .equals(other.getStrippedOpList());
          }
          result = result && (hasAnyInfo() == other.hasAnyInfo());
          if (hasAnyInfo()) {
            result = result && getAnyInfo()
                .equals(other.getAnyInfo());
          }
          result = result && getTagsList()
              .equals(other.getTagsList());
          result = result && getTensorflowVersion()
              .equals(other.getTensorflowVersion());
          result = result && getTensorflowGitVersion()
              .equals(other.getTensorflowGitVersion());
          result = result && (getStrippedDefaultAttrs()
              == other.getStrippedDefaultAttrs());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @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());
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.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 com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.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 com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.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 com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.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);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        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 angel.MetaGraphDef.MetaInfoDef}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.MetaGraphDef.MetaInfoDef)
            com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDefOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_MetaInfoDef_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_MetaInfoDef_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.class, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.Builder.class);
          }
  
          // Construct using com.tencent.angel.core.saver.MetaGraphProtos.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) {
            }
          }
          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_ & ~0x00000008);
            tensorflowVersion_ = "";
  
            tensorflowGitVersion_ = "";
  
            strippedDefaultAttrs_ = false;
  
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_MetaInfoDef_descriptor;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef getDefaultInstanceForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.getDefaultInstance();
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef build() {
            com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef buildPartial() {
            com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef result = new com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            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_ & 0x00000008) == 0x00000008)) {
              tags_ = tags_.getUnmodifiableView();
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.tags_ = tags_;
            result.tensorflowVersion_ = tensorflowVersion_;
            result.tensorflowGitVersion_ = tensorflowGitVersion_;
            result.strippedDefaultAttrs_ = strippedDefaultAttrs_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef) {
              return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef other) {
            if (other == com.tencent.angel.core.saver.MetaGraphProtos.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_ & ~0x00000008);
              } 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());
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.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 com.tencent.angel.core.graph.OpDefProtos.OpList strippedOpList_ = null;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.tencent.angel.core.graph.OpDefProtos.OpList, com.tencent.angel.core.graph.OpDefProtos.OpList.Builder, com.tencent.angel.core.graph.OpDefProtos.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>.angel.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>.angel.OpList stripped_op_list = 2;</code>
           */
          public com.tencent.angel.core.graph.OpDefProtos.OpList getStrippedOpList() {
            if (strippedOpListBuilder_ == null) {
              return strippedOpList_ == null ? com.tencent.angel.core.graph.OpDefProtos.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>.angel.OpList stripped_op_list = 2;</code>
           */
          public Builder setStrippedOpList(com.tencent.angel.core.graph.OpDefProtos.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>.angel.OpList stripped_op_list = 2;</code>
           */
          public Builder setStrippedOpList(
              com.tencent.angel.core.graph.OpDefProtos.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>.angel.OpList stripped_op_list = 2;</code>
           */
          public Builder mergeStrippedOpList(com.tencent.angel.core.graph.OpDefProtos.OpList value) {
            if (strippedOpListBuilder_ == null) {
              if (strippedOpList_ != null) {
                strippedOpList_ =
                  com.tencent.angel.core.graph.OpDefProtos.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>.angel.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>.angel.OpList stripped_op_list = 2;</code>
           */
          public com.tencent.angel.core.graph.OpDefProtos.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>.angel.OpList stripped_op_list = 2;</code>
           */
          public com.tencent.angel.core.graph.OpDefProtos.OpListOrBuilder getStrippedOpListOrBuilder() {
            if (strippedOpListBuilder_ != null) {
              return strippedOpListBuilder_.getMessageOrBuilder();
            } else {
              return strippedOpList_ == null ?
                  com.tencent.angel.core.graph.OpDefProtos.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>.angel.OpList stripped_op_list = 2;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.tencent.angel.core.graph.OpDefProtos.OpList, com.tencent.angel.core.graph.OpDefProtos.OpList.Builder, com.tencent.angel.core.graph.OpDefProtos.OpListOrBuilder> 
              getStrippedOpListFieldBuilder() {
            if (strippedOpListBuilder_ == null) {
              strippedOpListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.tencent.angel.core.graph.OpDefProtos.OpList, com.tencent.angel.core.graph.OpDefProtos.OpList.Builder, com.tencent.angel.core.graph.OpDefProtos.OpListOrBuilder>(
                      getStrippedOpList(),
                      getParentForChildren(),
                      isClean());
              strippedOpList_ = null;
            }
            return strippedOpListBuilder_;
          }
  
          private com.google.protobuf.Any anyInfo_ = null;
          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_ & 0x00000008) == 0x00000008)) {
              tags_ = new com.google.protobuf.LazyStringArrayList(tags_);
              bitField0_ |= 0x00000008;
             }
          }
          /**
           * <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_ & ~0x00000008);
            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;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFieldsProto3(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:angel.MetaGraphDef.MetaInfoDef)
        }
  
        // @@protoc_insertion_point(class_scope:angel.MetaGraphDef.MetaInfoDef)
        private static final com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef();
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<MetaInfoDef>
            PARSER = new com.google.protobuf.AbstractParser<MetaInfoDef>() {
          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;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      private int bitField0_;
      public static final int META_INFO_DEF_FIELD_NUMBER = 1;
      private com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef metaInfoDef_;
      /**
       * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
       */
      public boolean hasMetaInfoDef() {
        return metaInfoDef_ != null;
      }
      /**
       * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef getMetaInfoDef() {
        return metaInfoDef_ == null ? com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.getDefaultInstance() : metaInfoDef_;
      }
      /**
       * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDefOrBuilder getMetaInfoDefOrBuilder() {
        return getMetaInfoDef();
      }
  
      public static final int GRAPH_DEF_FIELD_NUMBER = 2;
      private com.tencent.angel.core.graph.GraphProtos.GraphDef graphDef_;
      /**
       * <pre>
       * GraphDef.
       * </pre>
       *
       * <code>.angel.GraphDef graph_def = 2;</code>
       */
      public boolean hasGraphDef() {
        return graphDef_ != null;
      }
      /**
       * <pre>
       * GraphDef.
       * </pre>
       *
       * <code>.angel.GraphDef graph_def = 2;</code>
       */
      public com.tencent.angel.core.graph.GraphProtos.GraphDef getGraphDef() {
        return graphDef_ == null ? com.tencent.angel.core.graph.GraphProtos.GraphDef.getDefaultInstance() : graphDef_;
      }
      /**
       * <pre>
       * GraphDef.
       * </pre>
       *
       * <code>.angel.GraphDef graph_def = 2;</code>
       */
      public com.tencent.angel.core.graph.GraphProtos.GraphDefOrBuilder getGraphDefOrBuilder() {
        return getGraphDef();
      }
  
      public static final int SAVER_DEF_FIELD_NUMBER = 3;
      private com.tencent.angel.core.saver.SaverProtos.SaverDef saverDef_;
      /**
       * <pre>
       * SaverDef.
       * </pre>
       *
       * <code>.angel.SaverDef saver_def = 3;</code>
       */
      public boolean hasSaverDef() {
        return saverDef_ != null;
      }
      /**
       * <pre>
       * SaverDef.
       * </pre>
       *
       * <code>.angel.SaverDef saver_def = 3;</code>
       */
      public com.tencent.angel.core.saver.SaverProtos.SaverDef getSaverDef() {
        return saverDef_ == null ? com.tencent.angel.core.saver.SaverProtos.SaverDef.getDefaultInstance() : saverDef_;
      }
      /**
       * <pre>
       * SaverDef.
       * </pre>
       *
       * <code>.angel.SaverDef saver_def = 3;</code>
       */
      public com.tencent.angel.core.saver.SaverProtos.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, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> defaultEntry =
                com.google.protobuf.MapEntry
                .<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef>newDefaultInstance(
                    com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_CollectionDefEntry_descriptor, 
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.MESSAGE,
                    com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.getDefaultInstance());
      }
      private com.google.protobuf.MapField<
          java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> collectionDef_;
      private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.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, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> getCollectionDef() {
        return getCollectionDefMap();
      }
      /**
       * <pre>
       * collection_def: Map from collection name to collections.
       * See CollectionDef section for details.
       * </pre>
       *
       * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
       */
  
      public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> getCollectionDefMap() {
        return internalGetCollectionDef().getMap();
      }
      /**
       * <pre>
       * collection_def: Map from collection name to collections.
       * See CollectionDef section for details.
       * </pre>
       *
       * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
       */
  
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getCollectionDefOrDefault(
          java.lang.String key,
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.CollectionDef&gt; collection_def = 4;</code>
       */
  
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getCollectionDefOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef> defaultEntry =
                com.google.protobuf.MapEntry
                .<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef>newDefaultInstance(
                    com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_SignatureDefEntry_descriptor, 
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.MESSAGE,
                    com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef.getDefaultInstance());
      }
      private com.google.protobuf.MapField<
          java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef> signatureDef_;
      private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.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, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef> getSignatureDef() {
        return getSignatureDefMap();
      }
      /**
       * <pre>
       * signature_def: Map from user supplied key for a signature to a single SignatureDef.
       * </pre>
       *
       * <code>map&lt;string, .angel.SignatureDef&gt; signature_def = 5;</code>
       */
  
      public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.SignatureDef&gt; signature_def = 5;</code>
       */
  
      public com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getSignatureDefOrDefault(
          java.lang.String key,
          com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.SignatureDef&gt; signature_def = 5;</code>
       */
  
      public com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getSignatureDefOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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<com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef> assetFileDef_;
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
       */
      public java.util.List<com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef> getAssetFileDefList() {
        return assetFileDef_;
      }
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
       */
      public java.util.List<? extends com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDefOrBuilder> 
          getAssetFileDefOrBuilderList() {
        return assetFileDef_;
      }
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.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 .angel.AssetFileDef asset_file_def = 6;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef getAssetFileDef(int index) {
        return assetFileDef_.get(index);
      }
      /**
       * <pre>
       * Asset file def to be used with the defined graph.
       * </pre>
       *
       * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDefOrBuilder getAssetFileDefOrBuilder(
          int index) {
        return assetFileDef_.get(index);
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        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));
        }
        unknownFields.writeTo(output);
      }
  
      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, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> entry
             : internalGetCollectionDef().getMap().entrySet()) {
          com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef> entry
             : internalGetSignatureDef().getMap().entrySet()) {
          com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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));
        }
        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 com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef)) {
          return super.equals(obj);
        }
        com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef other = (com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef) obj;
  
        boolean result = true;
        result = result && (hasMetaInfoDef() == other.hasMetaInfoDef());
        if (hasMetaInfoDef()) {
          result = result && getMetaInfoDef()
              .equals(other.getMetaInfoDef());
        }
        result = result && (hasGraphDef() == other.hasGraphDef());
        if (hasGraphDef()) {
          result = result && getGraphDef()
              .equals(other.getGraphDef());
        }
        result = result && (hasSaverDef() == other.hasSaverDef());
        if (hasSaverDef()) {
          result = result && getSaverDef()
              .equals(other.getSaverDef());
        }
        result = result && internalGetCollectionDef().equals(
            other.internalGetCollectionDef());
        result = result && internalGetSignatureDef().equals(
            other.internalGetSignatureDef());
        result = result && getAssetFileDefList()
            .equals(other.getAssetFileDefList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @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();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.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 com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.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 com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.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);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      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 angel.MetaGraphDef}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.MetaGraphDef)
          com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDefOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_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);
          }
        }
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.class, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.Builder.class);
        }
  
        // Construct using com.tencent.angel.core.saver.MetaGraphProtos.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();
          }
        }
        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_ & ~0x00000020);
          } else {
            assetFileDefBuilder_.clear();
          }
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_MetaGraphDef_descriptor;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef getDefaultInstanceForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.getDefaultInstance();
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef build() {
          com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef buildPartial() {
          com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef result = new com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          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_ & 0x00000020) == 0x00000020)) {
              assetFileDef_ = java.util.Collections.unmodifiableList(assetFileDef_);
              bitField0_ = (bitField0_ & ~0x00000020);
            }
            result.assetFileDef_ = assetFileDef_;
          } else {
            result.assetFileDef_ = assetFileDefBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef) {
            return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef other) {
          if (other == com.tencent.angel.core.saver.MetaGraphProtos.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_ & ~0x00000020);
              } else {
                ensureAssetFileDefIsMutable();
                assetFileDef_.addAll(other.assetFileDef_);
              }
              onChanged();
            }
          } else {
            if (!other.assetFileDef_.isEmpty()) {
              if (assetFileDefBuilder_.isEmpty()) {
                assetFileDefBuilder_.dispose();
                assetFileDefBuilder_ = null;
                assetFileDef_ = other.assetFileDef_;
                bitField0_ = (bitField0_ & ~0x00000020);
                assetFileDefBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getAssetFileDefFieldBuilder() : null;
              } else {
                assetFileDefBuilder_.addAllMessages(other.assetFileDef_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef metaInfoDef_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.Builder, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDefOrBuilder> metaInfoDefBuilder_;
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        public boolean hasMetaInfoDef() {
          return metaInfoDefBuilder_ != null || metaInfoDef_ != null;
        }
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef getMetaInfoDef() {
          if (metaInfoDefBuilder_ == null) {
            return metaInfoDef_ == null ? com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.getDefaultInstance() : metaInfoDef_;
          } else {
            return metaInfoDefBuilder_.getMessage();
          }
        }
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        public Builder setMetaInfoDef(com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef value) {
          if (metaInfoDefBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            metaInfoDef_ = value;
            onChanged();
          } else {
            metaInfoDefBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        public Builder setMetaInfoDef(
            com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.Builder builderForValue) {
          if (metaInfoDefBuilder_ == null) {
            metaInfoDef_ = builderForValue.build();
            onChanged();
          } else {
            metaInfoDefBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        public Builder mergeMetaInfoDef(com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef value) {
          if (metaInfoDefBuilder_ == null) {
            if (metaInfoDef_ != null) {
              metaInfoDef_ =
                com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.newBuilder(metaInfoDef_).mergeFrom(value).buildPartial();
            } else {
              metaInfoDef_ = value;
            }
            onChanged();
          } else {
            metaInfoDefBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        public Builder clearMetaInfoDef() {
          if (metaInfoDefBuilder_ == null) {
            metaInfoDef_ = null;
            onChanged();
          } else {
            metaInfoDef_ = null;
            metaInfoDefBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.Builder getMetaInfoDefBuilder() {
          
          onChanged();
          return getMetaInfoDefFieldBuilder().getBuilder();
        }
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDefOrBuilder getMetaInfoDefOrBuilder() {
          if (metaInfoDefBuilder_ != null) {
            return metaInfoDefBuilder_.getMessageOrBuilder();
          } else {
            return metaInfoDef_ == null ?
                com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.getDefaultInstance() : metaInfoDef_;
          }
        }
        /**
         * <code>.angel.MetaGraphDef.MetaInfoDef meta_info_def = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.Builder, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDefOrBuilder> 
            getMetaInfoDefFieldBuilder() {
          if (metaInfoDefBuilder_ == null) {
            metaInfoDefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDef.Builder, com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef.MetaInfoDefOrBuilder>(
                    getMetaInfoDef(),
                    getParentForChildren(),
                    isClean());
            metaInfoDef_ = null;
          }
          return metaInfoDefBuilder_;
        }
  
        private com.tencent.angel.core.graph.GraphProtos.GraphDef graphDef_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.graph.GraphProtos.GraphDef, com.tencent.angel.core.graph.GraphProtos.GraphDef.Builder, com.tencent.angel.core.graph.GraphProtos.GraphDefOrBuilder> graphDefBuilder_;
        /**
         * <pre>
         * GraphDef.
         * </pre>
         *
         * <code>.angel.GraphDef graph_def = 2;</code>
         */
        public boolean hasGraphDef() {
          return graphDefBuilder_ != null || graphDef_ != null;
        }
        /**
         * <pre>
         * GraphDef.
         * </pre>
         *
         * <code>.angel.GraphDef graph_def = 2;</code>
         */
        public com.tencent.angel.core.graph.GraphProtos.GraphDef getGraphDef() {
          if (graphDefBuilder_ == null) {
            return graphDef_ == null ? com.tencent.angel.core.graph.GraphProtos.GraphDef.getDefaultInstance() : graphDef_;
          } else {
            return graphDefBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * GraphDef.
         * </pre>
         *
         * <code>.angel.GraphDef graph_def = 2;</code>
         */
        public Builder setGraphDef(com.tencent.angel.core.graph.GraphProtos.GraphDef value) {
          if (graphDefBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            graphDef_ = value;
            onChanged();
          } else {
            graphDefBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * GraphDef.
         * </pre>
         *
         * <code>.angel.GraphDef graph_def = 2;</code>
         */
        public Builder setGraphDef(
            com.tencent.angel.core.graph.GraphProtos.GraphDef.Builder builderForValue) {
          if (graphDefBuilder_ == null) {
            graphDef_ = builderForValue.build();
            onChanged();
          } else {
            graphDefBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <pre>
         * GraphDef.
         * </pre>
         *
         * <code>.angel.GraphDef graph_def = 2;</code>
         */
        public Builder mergeGraphDef(com.tencent.angel.core.graph.GraphProtos.GraphDef value) {
          if (graphDefBuilder_ == null) {
            if (graphDef_ != null) {
              graphDef_ =
                com.tencent.angel.core.graph.GraphProtos.GraphDef.newBuilder(graphDef_).mergeFrom(value).buildPartial();
            } else {
              graphDef_ = value;
            }
            onChanged();
          } else {
            graphDefBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * GraphDef.
         * </pre>
         *
         * <code>.angel.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>.angel.GraphDef graph_def = 2;</code>
         */
        public com.tencent.angel.core.graph.GraphProtos.GraphDef.Builder getGraphDefBuilder() {
          
          onChanged();
          return getGraphDefFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * GraphDef.
         * </pre>
         *
         * <code>.angel.GraphDef graph_def = 2;</code>
         */
        public com.tencent.angel.core.graph.GraphProtos.GraphDefOrBuilder getGraphDefOrBuilder() {
          if (graphDefBuilder_ != null) {
            return graphDefBuilder_.getMessageOrBuilder();
          } else {
            return graphDef_ == null ?
                com.tencent.angel.core.graph.GraphProtos.GraphDef.getDefaultInstance() : graphDef_;
          }
        }
        /**
         * <pre>
         * GraphDef.
         * </pre>
         *
         * <code>.angel.GraphDef graph_def = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.graph.GraphProtos.GraphDef, com.tencent.angel.core.graph.GraphProtos.GraphDef.Builder, com.tencent.angel.core.graph.GraphProtos.GraphDefOrBuilder> 
            getGraphDefFieldBuilder() {
          if (graphDefBuilder_ == null) {
            graphDefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.graph.GraphProtos.GraphDef, com.tencent.angel.core.graph.GraphProtos.GraphDef.Builder, com.tencent.angel.core.graph.GraphProtos.GraphDefOrBuilder>(
                    getGraphDef(),
                    getParentForChildren(),
                    isClean());
            graphDef_ = null;
          }
          return graphDefBuilder_;
        }
  
        private com.tencent.angel.core.saver.SaverProtos.SaverDef saverDef_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.SaverProtos.SaverDef, com.tencent.angel.core.saver.SaverProtos.SaverDef.Builder, com.tencent.angel.core.saver.SaverProtos.SaverDefOrBuilder> saverDefBuilder_;
        /**
         * <pre>
         * SaverDef.
         * </pre>
         *
         * <code>.angel.SaverDef saver_def = 3;</code>
         */
        public boolean hasSaverDef() {
          return saverDefBuilder_ != null || saverDef_ != null;
        }
        /**
         * <pre>
         * SaverDef.
         * </pre>
         *
         * <code>.angel.SaverDef saver_def = 3;</code>
         */
        public com.tencent.angel.core.saver.SaverProtos.SaverDef getSaverDef() {
          if (saverDefBuilder_ == null) {
            return saverDef_ == null ? com.tencent.angel.core.saver.SaverProtos.SaverDef.getDefaultInstance() : saverDef_;
          } else {
            return saverDefBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * SaverDef.
         * </pre>
         *
         * <code>.angel.SaverDef saver_def = 3;</code>
         */
        public Builder setSaverDef(com.tencent.angel.core.saver.SaverProtos.SaverDef value) {
          if (saverDefBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            saverDef_ = value;
            onChanged();
          } else {
            saverDefBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * SaverDef.
         * </pre>
         *
         * <code>.angel.SaverDef saver_def = 3;</code>
         */
        public Builder setSaverDef(
            com.tencent.angel.core.saver.SaverProtos.SaverDef.Builder builderForValue) {
          if (saverDefBuilder_ == null) {
            saverDef_ = builderForValue.build();
            onChanged();
          } else {
            saverDefBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <pre>
         * SaverDef.
         * </pre>
         *
         * <code>.angel.SaverDef saver_def = 3;</code>
         */
        public Builder mergeSaverDef(com.tencent.angel.core.saver.SaverProtos.SaverDef value) {
          if (saverDefBuilder_ == null) {
            if (saverDef_ != null) {
              saverDef_ =
                com.tencent.angel.core.saver.SaverProtos.SaverDef.newBuilder(saverDef_).mergeFrom(value).buildPartial();
            } else {
              saverDef_ = value;
            }
            onChanged();
          } else {
            saverDefBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * SaverDef.
         * </pre>
         *
         * <code>.angel.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>.angel.SaverDef saver_def = 3;</code>
         */
        public com.tencent.angel.core.saver.SaverProtos.SaverDef.Builder getSaverDefBuilder() {
          
          onChanged();
          return getSaverDefFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * SaverDef.
         * </pre>
         *
         * <code>.angel.SaverDef saver_def = 3;</code>
         */
        public com.tencent.angel.core.saver.SaverProtos.SaverDefOrBuilder getSaverDefOrBuilder() {
          if (saverDefBuilder_ != null) {
            return saverDefBuilder_.getMessageOrBuilder();
          } else {
            return saverDef_ == null ?
                com.tencent.angel.core.saver.SaverProtos.SaverDef.getDefaultInstance() : saverDef_;
          }
        }
        /**
         * <pre>
         * SaverDef.
         * </pre>
         *
         * <code>.angel.SaverDef saver_def = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.SaverProtos.SaverDef, com.tencent.angel.core.saver.SaverProtos.SaverDef.Builder, com.tencent.angel.core.saver.SaverProtos.SaverDefOrBuilder> 
            getSaverDefFieldBuilder() {
          if (saverDefBuilder_ == null) {
            saverDefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.SaverProtos.SaverDef, com.tencent.angel.core.saver.SaverProtos.SaverDef.Builder, com.tencent.angel.core.saver.SaverProtos.SaverDefOrBuilder>(
                    getSaverDef(),
                    getParentForChildren(),
                    isClean());
            saverDef_ = null;
          }
          return saverDefBuilder_;
        }
  
        private com.google.protobuf.MapField<
            java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> collectionDef_;
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef>
        internalGetCollectionDef() {
          if (collectionDef_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                CollectionDefDefaultEntryHolder.defaultEntry);
          }
          return collectionDef_;
        }
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.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, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> getCollectionDef() {
          return getCollectionDefMap();
        }
        /**
         * <pre>
         * collection_def: Map from collection name to collections.
         * See CollectionDef section for details.
         * </pre>
         *
         * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
         */
  
        public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> getCollectionDefMap() {
          return internalGetCollectionDef().getMap();
        }
        /**
         * <pre>
         * collection_def: Map from collection name to collections.
         * See CollectionDef section for details.
         * </pre>
         *
         * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
         */
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getCollectionDefOrDefault(
            java.lang.String key,
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef defaultValue) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.CollectionDef&gt; collection_def = 4;</code>
         */
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getCollectionDefOrThrow(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.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, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef>
        getMutableCollectionDef() {
          return internalGetMutableCollectionDef().getMutableMap();
        }
        /**
         * <pre>
         * collection_def: Map from collection name to collections.
         * See CollectionDef section for details.
         * </pre>
         *
         * <code>map&lt;string, .angel.CollectionDef&gt; collection_def = 4;</code>
         */
        public Builder putCollectionDef(
            java.lang.String key,
            com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.CollectionDef&gt; collection_def = 4;</code>
         */
  
        public Builder putAllCollectionDef(
            java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef> values) {
          internalGetMutableCollectionDef().getMutableMap()
              .putAll(values);
          return this;
        }
  
        private com.google.protobuf.MapField<
            java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef> signatureDef_;
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef>
        internalGetSignatureDef() {
          if (signatureDef_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                SignatureDefDefaultEntryHolder.defaultEntry);
          }
          return signatureDef_;
        }
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.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, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef> getSignatureDef() {
          return getSignatureDefMap();
        }
        /**
         * <pre>
         * signature_def: Map from user supplied key for a signature to a single SignatureDef.
         * </pre>
         *
         * <code>map&lt;string, .angel.SignatureDef&gt; signature_def = 5;</code>
         */
  
        public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.SignatureDef&gt; signature_def = 5;</code>
         */
  
        public com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getSignatureDefOrDefault(
            java.lang.String key,
            com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef defaultValue) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.SignatureDef&gt; signature_def = 5;</code>
         */
  
        public com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getSignatureDefOrThrow(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.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, com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.SignatureDef&gt; signature_def = 5;</code>
         */
        public Builder putSignatureDef(
            java.lang.String key,
            com.tencent.angel.core.saver.MetaGraphProtos.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, .angel.SignatureDef&gt; signature_def = 5;</code>
         */
  
        public Builder putAllSignatureDef(
            java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef> values) {
          internalGetMutableSignatureDef().getMutableMap()
              .putAll(values);
          return this;
        }
  
        private java.util.List<com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef> assetFileDef_ =
          java.util.Collections.emptyList();
        private void ensureAssetFileDefIsMutable() {
          if (!((bitField0_ & 0x00000020) == 0x00000020)) {
            assetFileDef_ = new java.util.ArrayList<com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef>(assetFileDef_);
            bitField0_ |= 0x00000020;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDefOrBuilder> assetFileDefBuilder_;
  
        /**
         * <pre>
         * Asset file def to be used with the defined graph.
         * </pre>
         *
         * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public java.util.List<com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public Builder setAssetFileDef(
            int index, com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public Builder setAssetFileDef(
            int index, com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public Builder addAssetFileDef(com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public Builder addAssetFileDef(
            int index, com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public Builder addAssetFileDef(
            com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public Builder addAssetFileDef(
            int index, com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public Builder addAllAssetFileDef(
            java.lang.Iterable<? extends com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public Builder clearAssetFileDef() {
          if (assetFileDefBuilder_ == null) {
            assetFileDef_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            onChanged();
          } else {
            assetFileDefBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Asset file def to be used with the defined graph.
         * </pre>
         *
         * <code>repeated .angel.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder getAssetFileDefBuilder(
            int index) {
          return getAssetFileDefFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Asset file def to be used with the defined graph.
         * </pre>
         *
         * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public java.util.List<? extends com.tencent.angel.core.saver.MetaGraphProtos.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 .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder addAssetFileDefBuilder() {
          return getAssetFileDefFieldBuilder().addBuilder(
              com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.getDefaultInstance());
        }
        /**
         * <pre>
         * Asset file def to be used with the defined graph.
         * </pre>
         *
         * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder addAssetFileDefBuilder(
            int index) {
          return getAssetFileDefFieldBuilder().addBuilder(
              index, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.getDefaultInstance());
        }
        /**
         * <pre>
         * Asset file def to be used with the defined graph.
         * </pre>
         *
         * <code>repeated .angel.AssetFileDef asset_file_def = 6;</code>
         */
        public java.util.List<com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder> 
             getAssetFileDefBuilderList() {
          return getAssetFileDefFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDefOrBuilder> 
            getAssetFileDefFieldBuilder() {
          if (assetFileDefBuilder_ == null) {
            assetFileDefBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDefOrBuilder>(
                    assetFileDef_,
                    ((bitField0_ & 0x00000020) == 0x00000020),
                    getParentForChildren(),
                    isClean());
            assetFileDef_ = null;
          }
          return assetFileDefBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFieldsProto3(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:angel.MetaGraphDef)
      }
  
      // @@protoc_insertion_point(class_scope:angel.MetaGraphDef)
      private static final com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef();
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<MetaGraphDef>
          PARSER = new com.google.protobuf.AbstractParser<MetaGraphDef>() {
        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;
      }
  
      public com.tencent.angel.core.saver.MetaGraphProtos.MetaGraphDef getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CollectionDefOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.CollectionDef)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
       */
      boolean hasNodeList();
      /**
       * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList getNodeList();
      /**
       * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeListOrBuilder getNodeListOrBuilder();
  
      /**
       * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
       */
      boolean hasBytesList();
      /**
       * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList getBytesList();
      /**
       * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesListOrBuilder getBytesListOrBuilder();
  
      /**
       * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
       */
      boolean hasInt64List();
      /**
       * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List getInt64List();
      /**
       * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64ListOrBuilder getInt64ListOrBuilder();
  
      /**
       * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
       */
      boolean hasFloatList();
      /**
       * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList getFloatList();
      /**
       * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatListOrBuilder getFloatListOrBuilder();
  
      /**
       * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
       */
      boolean hasAnyList();
      /**
       * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList getAnyList();
      /**
       * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyListOrBuilder getAnyListOrBuilder();
  
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.KindCase getKindCase();
    }
    /**
     * <pre>
     * CollectionDef should cover most collections.
     * To add a user-defined collection, do one of the following:
     * 1. For simple data types, such as string, int, float:
     *      tf.add_to_collection("your_collection_name", your_simple_value)
     *    strings will be stored as bytes_list.
     * 2. For Protobuf types, there are three ways to add them:
     *    1) tf.add_to_collection("your_collection_name",
     *         your_proto.SerializeToString())
     *       collection_def {
     *         key: "user_defined_bytes_collection"
     *         value {
     *           bytes_list {
     *             value: "queue_name: &#92;"test_queue&#92;"&#92;n"
     *           }
     *         }
     *       }
     *  or
     *    2) tf.add_to_collection("your_collection_name", str(your_proto))
     *       collection_def {
     *         key: "user_defined_string_collection"
     *         value {
     *          bytes_list {
     *             value: "&#92;n&#92;ntest_queue"
     *           }
     *         }
     *       }
     *  or
     *    3) any_buf = any_pb2.Any()
     *       tf.add_to_collection("your_collection_name",
     *         any_buf.Pack(your_proto))
     *       collection_def {
     *         key: "user_defined_any_collection"
     *         value {
     *           any_list {
     *             value {
     *               type_url: "type.googleapis.com/tensorflow.QueueRunnerDef"
     *               value: "&#92;n&#92;ntest_queue"
     *             }
     *           }
     *         }
     *       }
     * 3. For Python objects, implement to_proto() and from_proto(), and register
     *    them in the following manner:
     *    ops.register_proto_function("your_collection_name",
     *                                proto_type,
     *                                to_proto=YourPythonObject.to_proto,
     *                                from_proto=YourPythonObject.from_proto)
     *    These functions will be invoked to serialize and de-serialize the
     *    collection. For example,
     *    ops.register_proto_function(ops.GraphKeys.GLOBAL_VARIABLES,
     *                                proto_type=variable_pb2.VariableDef,
     *                                to_proto=Variable.to_proto,
     *                                from_proto=Variable.from_proto)
     * </pre>
     *
     * Protobuf type {@code angel.CollectionDef}
     */
    public  static final class CollectionDef extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.CollectionDef)
        CollectionDefOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use CollectionDef.newBuilder() to construct.
      private CollectionDef(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private CollectionDef() {
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private CollectionDef(
          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;
              default: {
                if (!parseUnknownFieldProto3(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.Builder subBuilder = null;
                if (kindCase_ == 1) {
                  subBuilder = ((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_).toBuilder();
                }
                kind_ =
                    input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_);
                  kind_ = subBuilder.buildPartial();
                }
                kindCase_ = 1;
                break;
              }
              case 18: {
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.Builder subBuilder = null;
                if (kindCase_ == 2) {
                  subBuilder = ((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_).toBuilder();
                }
                kind_ =
                    input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_);
                  kind_ = subBuilder.buildPartial();
                }
                kindCase_ = 2;
                break;
              }
              case 26: {
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.Builder subBuilder = null;
                if (kindCase_ == 3) {
                  subBuilder = ((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_).toBuilder();
                }
                kind_ =
                    input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_);
                  kind_ = subBuilder.buildPartial();
                }
                kindCase_ = 3;
                break;
              }
              case 34: {
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.Builder subBuilder = null;
                if (kindCase_ == 4) {
                  subBuilder = ((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_).toBuilder();
                }
                kind_ =
                    input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_);
                  kind_ = subBuilder.buildPartial();
                }
                kindCase_ = 4;
                break;
              }
              case 42: {
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.Builder subBuilder = null;
                if (kindCase_ == 5) {
                  subBuilder = ((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_).toBuilder();
                }
                kind_ =
                    input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_);
                  kind_ = subBuilder.buildPartial();
                }
                kindCase_ = 5;
                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 {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Builder.class);
      }
  
      public interface NodeListOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.CollectionDef.NodeList)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>repeated string value = 1;</code>
         */
        java.util.List<java.lang.String>
            getValueList();
        /**
         * <code>repeated string value = 1;</code>
         */
        int getValueCount();
        /**
         * <code>repeated string value = 1;</code>
         */
        java.lang.String getValue(int index);
        /**
         * <code>repeated string value = 1;</code>
         */
        com.google.protobuf.ByteString
            getValueBytes(int index);
      }
      /**
       * <pre>
       * NodeList is used for collecting nodes in graph. For example
       * collection_def {
       *   key: "summaries"
       *   value {
       *     node_list {
       *       value: "input_producer/ScalarSummary:0"
       *       value: "shuffle_batch/ScalarSummary:0"
       *       value: "ImageSummary:0"
       *     }
       *   }
       * </pre>
       *
       * Protobuf type {@code angel.CollectionDef.NodeList}
       */
      public  static final class NodeList extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.CollectionDef.NodeList)
          NodeListOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use NodeList.newBuilder() to construct.
        private NodeList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private NodeList() {
          value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private NodeList(
            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;
                default: {
                  if (!parseUnknownFieldProto3(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  java.lang.String s = input.readStringRequireUtf8();
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    value_ = new com.google.protobuf.LazyStringArrayList();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  value_.add(s);
                  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) == 0x00000001)) {
              value_ = value_.getUnmodifiableView();
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_NodeList_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_NodeList_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.Builder.class);
        }
  
        public static final int VALUE_FIELD_NUMBER = 1;
        private com.google.protobuf.LazyStringList value_;
        /**
         * <code>repeated string value = 1;</code>
         */
        public com.google.protobuf.ProtocolStringList
            getValueList() {
          return value_;
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public int getValueCount() {
          return value_.size();
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public java.lang.String getValue(int index) {
          return value_.get(index);
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public com.google.protobuf.ByteString
            getValueBytes(int index) {
          return value_.getByteString(index);
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          for (int i = 0; i < value_.size(); i++) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, value_.getRaw(i));
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          {
            int dataSize = 0;
            for (int i = 0; i < value_.size(); i++) {
              dataSize += computeStringSizeNoTag(value_.getRaw(i));
            }
            size += dataSize;
            size += 1 * getValueList().size();
          }
          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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList)) {
            return super.equals(obj);
          }
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList other = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) obj;
  
          boolean result = true;
          result = result && getValueList()
              .equals(other.getValueList());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (getValueCount() > 0) {
            hash = (37 * hash) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getValueList().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        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>
         * NodeList is used for collecting nodes in graph. For example
         * collection_def {
         *   key: "summaries"
         *   value {
         *     node_list {
         *       value: "input_producer/ScalarSummary:0"
         *       value: "shuffle_batch/ScalarSummary:0"
         *       value: "ImageSummary:0"
         *     }
         *   }
         * </pre>
         *
         * Protobuf type {@code angel.CollectionDef.NodeList}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.CollectionDef.NodeList)
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeListOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_NodeList_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_NodeList_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.Builder.class);
          }
  
          // Construct using com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000001);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_NodeList_descriptor;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList getDefaultInstanceForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance();
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList build() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList buildPartial() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList result = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList(this);
            int from_bitField0_ = bitField0_;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = value_.getUnmodifiableView();
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.value_ = value_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) {
              return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList other) {
            if (other == com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance()) return this;
            if (!other.value_.isEmpty()) {
              if (value_.isEmpty()) {
                value_ = other.value_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureValueIsMutable();
                value_.addAll(other.value_);
              }
              onChanged();
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private com.google.protobuf.LazyStringList value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          private void ensureValueIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = new com.google.protobuf.LazyStringArrayList(value_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public com.google.protobuf.ProtocolStringList
              getValueList() {
            return value_.getUnmodifiableView();
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public int getValueCount() {
            return value_.size();
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public java.lang.String getValue(int index) {
            return value_.get(index);
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public com.google.protobuf.ByteString
              getValueBytes(int index) {
            return value_.getByteString(index);
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public Builder setValue(
              int index, java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    ensureValueIsMutable();
            value_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public Builder addValue(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    ensureValueIsMutable();
            value_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public Builder addAllValue(
              java.lang.Iterable<java.lang.String> values) {
            ensureValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, value_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public Builder clearValue() {
            value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           * <code>repeated string value = 1;</code>
           */
          public Builder addValueBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
            ensureValueIsMutable();
            value_.add(value);
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFieldsProto3(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:angel.CollectionDef.NodeList)
        }
  
        // @@protoc_insertion_point(class_scope:angel.CollectionDef.NodeList)
        private static final com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList();
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<NodeList>
            PARSER = new com.google.protobuf.AbstractParser<NodeList>() {
          public NodeList parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new NodeList(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<NodeList> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<NodeList> getParserForType() {
          return PARSER;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      public interface BytesListOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.CollectionDef.BytesList)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>repeated bytes value = 1;</code>
         */
        java.util.List<com.google.protobuf.ByteString> getValueList();
        /**
         * <code>repeated bytes value = 1;</code>
         */
        int getValueCount();
        /**
         * <code>repeated bytes value = 1;</code>
         */
        com.google.protobuf.ByteString getValue(int index);
      }
      /**
       * <pre>
       * BytesList is used for collecting strings and serialized protobufs. For
       * example:
       * collection_def {
       *   key: "trainable_variables"
       *   value {
       *     bytes_list {
       *       value: "&#92;n&#92;017conv1/weights:0&#92;022&#92;024conv1/weights/Assign
       *              &#92;032&#92;024conv1/weights/read:0"
       *       value: "&#92;n&#92;016conv1/biases:0&#92;022&#92;023conv1/biases/Assign&#92;032
       *              &#92;023conv1/biases/read:0"
       *     }
       *   }
       * }
       * </pre>
       *
       * Protobuf type {@code angel.CollectionDef.BytesList}
       */
      public  static final class BytesList extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.CollectionDef.BytesList)
          BytesListOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use BytesList.newBuilder() to construct.
        private BytesList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private BytesList() {
          value_ = java.util.Collections.emptyList();
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private BytesList(
            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;
                default: {
                  if (!parseUnknownFieldProto3(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    value_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  value_.add(input.readBytes());
                  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) == 0x00000001)) {
              value_ = java.util.Collections.unmodifiableList(value_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_BytesList_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_BytesList_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.Builder.class);
        }
  
        public static final int VALUE_FIELD_NUMBER = 1;
        private java.util.List<com.google.protobuf.ByteString> value_;
        /**
         * <code>repeated bytes value = 1;</code>
         */
        public java.util.List<com.google.protobuf.ByteString>
            getValueList() {
          return value_;
        }
        /**
         * <code>repeated bytes value = 1;</code>
         */
        public int getValueCount() {
          return value_.size();
        }
        /**
         * <code>repeated bytes value = 1;</code>
         */
        public com.google.protobuf.ByteString getValue(int index) {
          return value_.get(index);
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          for (int i = 0; i < value_.size(); i++) {
            output.writeBytes(1, value_.get(i));
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          {
            int dataSize = 0;
            for (int i = 0; i < value_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeBytesSizeNoTag(value_.get(i));
            }
            size += dataSize;
            size += 1 * getValueList().size();
          }
          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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList)) {
            return super.equals(obj);
          }
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList other = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) obj;
  
          boolean result = true;
          result = result && getValueList()
              .equals(other.getValueList());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (getValueCount() > 0) {
            hash = (37 * hash) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getValueList().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        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>
         * BytesList is used for collecting strings and serialized protobufs. For
         * example:
         * collection_def {
         *   key: "trainable_variables"
         *   value {
         *     bytes_list {
         *       value: "&#92;n&#92;017conv1/weights:0&#92;022&#92;024conv1/weights/Assign
         *              &#92;032&#92;024conv1/weights/read:0"
         *       value: "&#92;n&#92;016conv1/biases:0&#92;022&#92;023conv1/biases/Assign&#92;032
         *              &#92;023conv1/biases/read:0"
         *     }
         *   }
         * }
         * </pre>
         *
         * Protobuf type {@code angel.CollectionDef.BytesList}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.CollectionDef.BytesList)
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesListOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_BytesList_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_BytesList_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.Builder.class);
          }
  
          // Construct using com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            value_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_BytesList_descriptor;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList getDefaultInstanceForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance();
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList build() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList buildPartial() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList result = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList(this);
            int from_bitField0_ = bitField0_;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = java.util.Collections.unmodifiableList(value_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.value_ = value_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) {
              return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList other) {
            if (other == com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance()) return this;
            if (!other.value_.isEmpty()) {
              if (value_.isEmpty()) {
                value_ = other.value_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureValueIsMutable();
                value_.addAll(other.value_);
              }
              onChanged();
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private java.util.List<com.google.protobuf.ByteString> value_ = java.util.Collections.emptyList();
          private void ensureValueIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = new java.util.ArrayList<com.google.protobuf.ByteString>(value_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated bytes value = 1;</code>
           */
          public java.util.List<com.google.protobuf.ByteString>
              getValueList() {
            return java.util.Collections.unmodifiableList(value_);
          }
          /**
           * <code>repeated bytes value = 1;</code>
           */
          public int getValueCount() {
            return value_.size();
          }
          /**
           * <code>repeated bytes value = 1;</code>
           */
          public com.google.protobuf.ByteString getValue(int index) {
            return value_.get(index);
          }
          /**
           * <code>repeated bytes value = 1;</code>
           */
          public Builder setValue(
              int index, com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    ensureValueIsMutable();
            value_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated bytes value = 1;</code>
           */
          public Builder addValue(com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    ensureValueIsMutable();
            value_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated bytes value = 1;</code>
           */
          public Builder addAllValue(
              java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
            ensureValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, value_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated bytes value = 1;</code>
           */
          public Builder clearValue() {
            value_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFieldsProto3(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:angel.CollectionDef.BytesList)
        }
  
        // @@protoc_insertion_point(class_scope:angel.CollectionDef.BytesList)
        private static final com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList();
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<BytesList>
            PARSER = new com.google.protobuf.AbstractParser<BytesList>() {
          public BytesList parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new BytesList(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<BytesList> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<BytesList> getParserForType() {
          return PARSER;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      public interface Int64ListOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.CollectionDef.Int64List)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>repeated int64 value = 1 [packed = true];</code>
         */
        java.util.List<java.lang.Long> getValueList();
        /**
         * <code>repeated int64 value = 1 [packed = true];</code>
         */
        int getValueCount();
        /**
         * <code>repeated int64 value = 1 [packed = true];</code>
         */
        long getValue(int index);
      }
      /**
       * <pre>
       * Int64List is used for collecting int, int64 and long values.
       * </pre>
       *
       * Protobuf type {@code angel.CollectionDef.Int64List}
       */
      public  static final class Int64List extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.CollectionDef.Int64List)
          Int64ListOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use Int64List.newBuilder() to construct.
        private Int64List(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Int64List() {
          value_ = java.util.Collections.emptyList();
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private Int64List(
            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;
                default: {
                  if (!parseUnknownFieldProto3(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    value_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  value_.add(input.readInt64());
                  break;
                }
                case 10: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    value_ = new java.util.ArrayList<java.lang.Long>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    value_.add(input.readInt64());
                  }
                  input.popLimit(limit);
                  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) == 0x00000001)) {
              value_ = java.util.Collections.unmodifiableList(value_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_Int64List_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_Int64List_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.Builder.class);
        }
  
        public static final int VALUE_FIELD_NUMBER = 1;
        private java.util.List<java.lang.Long> value_;
        /**
         * <code>repeated int64 value = 1 [packed = true];</code>
         */
        public java.util.List<java.lang.Long>
            getValueList() {
          return value_;
        }
        /**
         * <code>repeated int64 value = 1 [packed = true];</code>
         */
        public int getValueCount() {
          return value_.size();
        }
        /**
         * <code>repeated int64 value = 1 [packed = true];</code>
         */
        public long getValue(int index) {
          return value_.get(index);
        }
        private int valueMemoizedSerializedSize = -1;
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (getValueList().size() > 0) {
            output.writeUInt32NoTag(10);
            output.writeUInt32NoTag(valueMemoizedSerializedSize);
          }
          for (int i = 0; i < value_.size(); i++) {
            output.writeInt64NoTag(value_.get(i));
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          {
            int dataSize = 0;
            for (int i = 0; i < value_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt64SizeNoTag(value_.get(i));
            }
            size += dataSize;
            if (!getValueList().isEmpty()) {
              size += 1;
              size += com.google.protobuf.CodedOutputStream
                  .computeInt32SizeNoTag(dataSize);
            }
            valueMemoizedSerializedSize = dataSize;
          }
          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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List)) {
            return super.equals(obj);
          }
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List other = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) obj;
  
          boolean result = true;
          result = result && getValueList()
              .equals(other.getValueList());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (getValueCount() > 0) {
            hash = (37 * hash) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getValueList().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        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>
         * Int64List is used for collecting int, int64 and long values.
         * </pre>
         *
         * Protobuf type {@code angel.CollectionDef.Int64List}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.CollectionDef.Int64List)
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64ListOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_Int64List_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_Int64List_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.Builder.class);
          }
  
          // Construct using com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            value_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_Int64List_descriptor;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List getDefaultInstanceForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance();
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List build() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List buildPartial() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List result = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List(this);
            int from_bitField0_ = bitField0_;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = java.util.Collections.unmodifiableList(value_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.value_ = value_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) {
              return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List other) {
            if (other == com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance()) return this;
            if (!other.value_.isEmpty()) {
              if (value_.isEmpty()) {
                value_ = other.value_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureValueIsMutable();
                value_.addAll(other.value_);
              }
              onChanged();
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private java.util.List<java.lang.Long> value_ = java.util.Collections.emptyList();
          private void ensureValueIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = new java.util.ArrayList<java.lang.Long>(value_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated int64 value = 1 [packed = true];</code>
           */
          public java.util.List<java.lang.Long>
              getValueList() {
            return java.util.Collections.unmodifiableList(value_);
          }
          /**
           * <code>repeated int64 value = 1 [packed = true];</code>
           */
          public int getValueCount() {
            return value_.size();
          }
          /**
           * <code>repeated int64 value = 1 [packed = true];</code>
           */
          public long getValue(int index) {
            return value_.get(index);
          }
          /**
           * <code>repeated int64 value = 1 [packed = true];</code>
           */
          public Builder setValue(
              int index, long value) {
            ensureValueIsMutable();
            value_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 value = 1 [packed = true];</code>
           */
          public Builder addValue(long value) {
            ensureValueIsMutable();
            value_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 value = 1 [packed = true];</code>
           */
          public Builder addAllValue(
              java.lang.Iterable<? extends java.lang.Long> values) {
            ensureValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, value_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated int64 value = 1 [packed = true];</code>
           */
          public Builder clearValue() {
            value_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFieldsProto3(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:angel.CollectionDef.Int64List)
        }
  
        // @@protoc_insertion_point(class_scope:angel.CollectionDef.Int64List)
        private static final com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List();
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<Int64List>
            PARSER = new com.google.protobuf.AbstractParser<Int64List>() {
          public Int64List parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new Int64List(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<Int64List> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<Int64List> getParserForType() {
          return PARSER;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      public interface FloatListOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.CollectionDef.FloatList)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>repeated float value = 1 [packed = true];</code>
         */
        java.util.List<java.lang.Float> getValueList();
        /**
         * <code>repeated float value = 1 [packed = true];</code>
         */
        int getValueCount();
        /**
         * <code>repeated float value = 1 [packed = true];</code>
         */
        float getValue(int index);
      }
      /**
       * <pre>
       * FloatList is used for collecting float values.
       * </pre>
       *
       * Protobuf type {@code angel.CollectionDef.FloatList}
       */
      public  static final class FloatList extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.CollectionDef.FloatList)
          FloatListOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use FloatList.newBuilder() to construct.
        private FloatList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private FloatList() {
          value_ = java.util.Collections.emptyList();
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private FloatList(
            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;
                default: {
                  if (!parseUnknownFieldProto3(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 13: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    value_ = new java.util.ArrayList<java.lang.Float>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  value_.add(input.readFloat());
                  break;
                }
                case 10: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    value_ = new java.util.ArrayList<java.lang.Float>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    value_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  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) == 0x00000001)) {
              value_ = java.util.Collections.unmodifiableList(value_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_FloatList_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_FloatList_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.Builder.class);
        }
  
        public static final int VALUE_FIELD_NUMBER = 1;
        private java.util.List<java.lang.Float> value_;
        /**
         * <code>repeated float value = 1 [packed = true];</code>
         */
        public java.util.List<java.lang.Float>
            getValueList() {
          return value_;
        }
        /**
         * <code>repeated float value = 1 [packed = true];</code>
         */
        public int getValueCount() {
          return value_.size();
        }
        /**
         * <code>repeated float value = 1 [packed = true];</code>
         */
        public float getValue(int index) {
          return value_.get(index);
        }
        private int valueMemoizedSerializedSize = -1;
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (getValueList().size() > 0) {
            output.writeUInt32NoTag(10);
            output.writeUInt32NoTag(valueMemoizedSerializedSize);
          }
          for (int i = 0; i < value_.size(); i++) {
            output.writeFloatNoTag(value_.get(i));
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          {
            int dataSize = 0;
            dataSize = 4 * getValueList().size();
            size += dataSize;
            if (!getValueList().isEmpty()) {
              size += 1;
              size += com.google.protobuf.CodedOutputStream
                  .computeInt32SizeNoTag(dataSize);
            }
            valueMemoizedSerializedSize = dataSize;
          }
          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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList)) {
            return super.equals(obj);
          }
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList other = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) obj;
  
          boolean result = true;
          result = result && getValueList()
              .equals(other.getValueList());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (getValueCount() > 0) {
            hash = (37 * hash) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getValueList().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        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>
         * FloatList is used for collecting float values.
         * </pre>
         *
         * Protobuf type {@code angel.CollectionDef.FloatList}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.CollectionDef.FloatList)
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatListOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_FloatList_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_FloatList_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.Builder.class);
          }
  
          // Construct using com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            value_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_FloatList_descriptor;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList getDefaultInstanceForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance();
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList build() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList buildPartial() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList result = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList(this);
            int from_bitField0_ = bitField0_;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = java.util.Collections.unmodifiableList(value_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.value_ = value_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) {
              return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList other) {
            if (other == com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance()) return this;
            if (!other.value_.isEmpty()) {
              if (value_.isEmpty()) {
                value_ = other.value_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureValueIsMutable();
                value_.addAll(other.value_);
              }
              onChanged();
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private java.util.List<java.lang.Float> value_ = java.util.Collections.emptyList();
          private void ensureValueIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = new java.util.ArrayList<java.lang.Float>(value_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated float value = 1 [packed = true];</code>
           */
          public java.util.List<java.lang.Float>
              getValueList() {
            return java.util.Collections.unmodifiableList(value_);
          }
          /**
           * <code>repeated float value = 1 [packed = true];</code>
           */
          public int getValueCount() {
            return value_.size();
          }
          /**
           * <code>repeated float value = 1 [packed = true];</code>
           */
          public float getValue(int index) {
            return value_.get(index);
          }
          /**
           * <code>repeated float value = 1 [packed = true];</code>
           */
          public Builder setValue(
              int index, float value) {
            ensureValueIsMutable();
            value_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated float value = 1 [packed = true];</code>
           */
          public Builder addValue(float value) {
            ensureValueIsMutable();
            value_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated float value = 1 [packed = true];</code>
           */
          public Builder addAllValue(
              java.lang.Iterable<? extends java.lang.Float> values) {
            ensureValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, value_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated float value = 1 [packed = true];</code>
           */
          public Builder clearValue() {
            value_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFieldsProto3(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:angel.CollectionDef.FloatList)
        }
  
        // @@protoc_insertion_point(class_scope:angel.CollectionDef.FloatList)
        private static final com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList();
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<FloatList>
            PARSER = new com.google.protobuf.AbstractParser<FloatList>() {
          public FloatList parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new FloatList(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<FloatList> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<FloatList> getParserForType() {
          return PARSER;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      public interface AnyListOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.CollectionDef.AnyList)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        java.util.List<com.google.protobuf.Any> 
            getValueList();
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        com.google.protobuf.Any getValue(int index);
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        int getValueCount();
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        java.util.List<? extends com.google.protobuf.AnyOrBuilder> 
            getValueOrBuilderList();
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        com.google.protobuf.AnyOrBuilder getValueOrBuilder(
            int index);
      }
      /**
       * <pre>
       * AnyList is used for collecting Any protos.
       * </pre>
       *
       * Protobuf type {@code angel.CollectionDef.AnyList}
       */
      public  static final class AnyList extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.CollectionDef.AnyList)
          AnyListOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use AnyList.newBuilder() to construct.
        private AnyList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private AnyList() {
          value_ = java.util.Collections.emptyList();
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private AnyList(
            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;
                default: {
                  if (!parseUnknownFieldProto3(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    value_ = new java.util.ArrayList<com.google.protobuf.Any>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  value_.add(
                      input.readMessage(com.google.protobuf.Any.parser(), extensionRegistry));
                  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) == 0x00000001)) {
              value_ = java.util.Collections.unmodifiableList(value_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_AnyList_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_AnyList_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.Builder.class);
        }
  
        public static final int VALUE_FIELD_NUMBER = 1;
        private java.util.List<com.google.protobuf.Any> value_;
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        public java.util.List<com.google.protobuf.Any> getValueList() {
          return value_;
        }
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        public java.util.List<? extends com.google.protobuf.AnyOrBuilder> 
            getValueOrBuilderList() {
          return value_;
        }
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        public int getValueCount() {
          return value_.size();
        }
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        public com.google.protobuf.Any getValue(int index) {
          return value_.get(index);
        }
        /**
         * <code>repeated .google.protobuf.Any value = 1;</code>
         */
        public com.google.protobuf.AnyOrBuilder getValueOrBuilder(
            int index) {
          return value_.get(index);
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          for (int i = 0; i < value_.size(); i++) {
            output.writeMessage(1, value_.get(i));
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          for (int i = 0; i < value_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, value_.get(i));
          }
          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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList)) {
            return super.equals(obj);
          }
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList other = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) obj;
  
          boolean result = true;
          result = result && getValueList()
              .equals(other.getValueList());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (getValueCount() > 0) {
            hash = (37 * hash) + VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getValueList().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        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>
         * AnyList is used for collecting Any protos.
         * </pre>
         *
         * Protobuf type {@code angel.CollectionDef.AnyList}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.CollectionDef.AnyList)
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyListOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_AnyList_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_AnyList_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.Builder.class);
          }
  
          // Construct using com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
              getValueFieldBuilder();
            }
          }
          public Builder clear() {
            super.clear();
            if (valueBuilder_ == null) {
              value_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              valueBuilder_.clear();
            }
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_AnyList_descriptor;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList getDefaultInstanceForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance();
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList build() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList buildPartial() {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList result = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList(this);
            int from_bitField0_ = bitField0_;
            if (valueBuilder_ == null) {
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                value_ = java.util.Collections.unmodifiableList(value_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.value_ = value_;
            } else {
              result.value_ = valueBuilder_.build();
            }
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) {
              return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList other) {
            if (other == com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance()) return this;
            if (valueBuilder_ == null) {
              if (!other.value_.isEmpty()) {
                if (value_.isEmpty()) {
                  value_ = other.value_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensureValueIsMutable();
                  value_.addAll(other.value_);
                }
                onChanged();
              }
            } else {
              if (!other.value_.isEmpty()) {
                if (valueBuilder_.isEmpty()) {
                  valueBuilder_.dispose();
                  valueBuilder_ = null;
                  value_ = other.value_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  valueBuilder_ = 
                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                       getValueFieldBuilder() : null;
                } else {
                  valueBuilder_.addAllMessages(other.value_);
                }
              }
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private java.util.List<com.google.protobuf.Any> value_ =
            java.util.Collections.emptyList();
          private void ensureValueIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              value_ = new java.util.ArrayList<com.google.protobuf.Any>(value_);
              bitField0_ |= 0x00000001;
             }
          }
  
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> valueBuilder_;
  
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public java.util.List<com.google.protobuf.Any> getValueList() {
            if (valueBuilder_ == null) {
              return java.util.Collections.unmodifiableList(value_);
            } else {
              return valueBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public int getValueCount() {
            if (valueBuilder_ == null) {
              return value_.size();
            } else {
              return valueBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public com.google.protobuf.Any getValue(int index) {
            if (valueBuilder_ == null) {
              return value_.get(index);
            } else {
              return valueBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder setValue(
              int index, com.google.protobuf.Any value) {
            if (valueBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureValueIsMutable();
              value_.set(index, value);
              onChanged();
            } else {
              valueBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder setValue(
              int index, com.google.protobuf.Any.Builder builderForValue) {
            if (valueBuilder_ == null) {
              ensureValueIsMutable();
              value_.set(index, builderForValue.build());
              onChanged();
            } else {
              valueBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder addValue(com.google.protobuf.Any value) {
            if (valueBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureValueIsMutable();
              value_.add(value);
              onChanged();
            } else {
              valueBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder addValue(
              int index, com.google.protobuf.Any value) {
            if (valueBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureValueIsMutable();
              value_.add(index, value);
              onChanged();
            } else {
              valueBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder addValue(
              com.google.protobuf.Any.Builder builderForValue) {
            if (valueBuilder_ == null) {
              ensureValueIsMutable();
              value_.add(builderForValue.build());
              onChanged();
            } else {
              valueBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder addValue(
              int index, com.google.protobuf.Any.Builder builderForValue) {
            if (valueBuilder_ == null) {
              ensureValueIsMutable();
              value_.add(index, builderForValue.build());
              onChanged();
            } else {
              valueBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder addAllValue(
              java.lang.Iterable<? extends com.google.protobuf.Any> values) {
            if (valueBuilder_ == null) {
              ensureValueIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, value_);
              onChanged();
            } else {
              valueBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder clearValue() {
            if (valueBuilder_ == null) {
              value_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
            } else {
              valueBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public Builder removeValue(int index) {
            if (valueBuilder_ == null) {
              ensureValueIsMutable();
              value_.remove(index);
              onChanged();
            } else {
              valueBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public com.google.protobuf.Any.Builder getValueBuilder(
              int index) {
            return getValueFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public com.google.protobuf.AnyOrBuilder getValueOrBuilder(
              int index) {
            if (valueBuilder_ == null) {
              return value_.get(index);  } else {
              return valueBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public java.util.List<? extends com.google.protobuf.AnyOrBuilder> 
               getValueOrBuilderList() {
            if (valueBuilder_ != null) {
              return valueBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(value_);
            }
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public com.google.protobuf.Any.Builder addValueBuilder() {
            return getValueFieldBuilder().addBuilder(
                com.google.protobuf.Any.getDefaultInstance());
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public com.google.protobuf.Any.Builder addValueBuilder(
              int index) {
            return getValueFieldBuilder().addBuilder(
                index, com.google.protobuf.Any.getDefaultInstance());
          }
          /**
           * <code>repeated .google.protobuf.Any value = 1;</code>
           */
          public java.util.List<com.google.protobuf.Any.Builder> 
               getValueBuilderList() {
            return getValueFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> 
              getValueFieldBuilder() {
            if (valueBuilder_ == null) {
              valueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder>(
                      value_,
                      ((bitField0_ & 0x00000001) == 0x00000001),
                      getParentForChildren(),
                      isClean());
              value_ = null;
            }
            return valueBuilder_;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFieldsProto3(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:angel.CollectionDef.AnyList)
        }
  
        // @@protoc_insertion_point(class_scope:angel.CollectionDef.AnyList)
        private static final com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList();
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<AnyList>
            PARSER = new com.google.protobuf.AbstractParser<AnyList>() {
          public AnyList parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new AnyList(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<AnyList> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<AnyList> getParserForType() {
          return PARSER;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      private int kindCase_ = 0;
      private java.lang.Object kind_;
      public enum KindCase
          implements com.google.protobuf.Internal.EnumLite {
        NODE_LIST(1),
        BYTES_LIST(2),
        INT64_LIST(3),
        FLOAT_LIST(4),
        ANY_LIST(5),
        KIND_NOT_SET(0);
        private final int value;
        private KindCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static KindCase valueOf(int value) {
          return forNumber(value);
        }
  
        public static KindCase forNumber(int value) {
          switch (value) {
            case 1: return NODE_LIST;
            case 2: return BYTES_LIST;
            case 3: return INT64_LIST;
            case 4: return FLOAT_LIST;
            case 5: return ANY_LIST;
            case 0: return KIND_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };
  
      public KindCase
      getKindCase() {
        return KindCase.forNumber(
            kindCase_);
      }
  
      public static final int NODE_LIST_FIELD_NUMBER = 1;
      /**
       * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
       */
      public boolean hasNodeList() {
        return kindCase_ == 1;
      }
      /**
       * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList getNodeList() {
        if (kindCase_ == 1) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance();
      }
      /**
       * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeListOrBuilder getNodeListOrBuilder() {
        if (kindCase_ == 1) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance();
      }
  
      public static final int BYTES_LIST_FIELD_NUMBER = 2;
      /**
       * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
       */
      public boolean hasBytesList() {
        return kindCase_ == 2;
      }
      /**
       * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList getBytesList() {
        if (kindCase_ == 2) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance();
      }
      /**
       * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesListOrBuilder getBytesListOrBuilder() {
        if (kindCase_ == 2) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance();
      }
  
      public static final int INT64_LIST_FIELD_NUMBER = 3;
      /**
       * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
       */
      public boolean hasInt64List() {
        return kindCase_ == 3;
      }
      /**
       * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List getInt64List() {
        if (kindCase_ == 3) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance();
      }
      /**
       * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64ListOrBuilder getInt64ListOrBuilder() {
        if (kindCase_ == 3) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance();
      }
  
      public static final int FLOAT_LIST_FIELD_NUMBER = 4;
      /**
       * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
       */
      public boolean hasFloatList() {
        return kindCase_ == 4;
      }
      /**
       * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList getFloatList() {
        if (kindCase_ == 4) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance();
      }
      /**
       * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatListOrBuilder getFloatListOrBuilder() {
        if (kindCase_ == 4) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance();
      }
  
      public static final int ANY_LIST_FIELD_NUMBER = 5;
      /**
       * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
       */
      public boolean hasAnyList() {
        return kindCase_ == 5;
      }
      /**
       * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList getAnyList() {
        if (kindCase_ == 5) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance();
      }
      /**
       * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyListOrBuilder getAnyListOrBuilder() {
        if (kindCase_ == 5) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance();
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (kindCase_ == 1) {
          output.writeMessage(1, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_);
        }
        if (kindCase_ == 2) {
          output.writeMessage(2, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_);
        }
        if (kindCase_ == 3) {
          output.writeMessage(3, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_);
        }
        if (kindCase_ == 4) {
          output.writeMessage(4, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_);
        }
        if (kindCase_ == 5) {
          output.writeMessage(5, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (kindCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_);
        }
        if (kindCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_);
        }
        if (kindCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_);
        }
        if (kindCase_ == 4) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_);
        }
        if (kindCase_ == 5) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_);
        }
        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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef)) {
          return super.equals(obj);
        }
        com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef other = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef) obj;
  
        boolean result = true;
        result = result && getKindCase().equals(
            other.getKindCase());
        if (!result) return false;
        switch (kindCase_) {
          case 1:
            result = result && getNodeList()
                .equals(other.getNodeList());
            break;
          case 2:
            result = result && getBytesList()
                .equals(other.getBytesList());
            break;
          case 3:
            result = result && getInt64List()
                .equals(other.getInt64List());
            break;
          case 4:
            result = result && getFloatList()
                .equals(other.getFloatList());
            break;
          case 5:
            result = result && getAnyList()
                .equals(other.getAnyList());
            break;
          case 0:
          default:
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (kindCase_) {
          case 1:
            hash = (37 * hash) + NODE_LIST_FIELD_NUMBER;
            hash = (53 * hash) + getNodeList().hashCode();
            break;
          case 2:
            hash = (37 * hash) + BYTES_LIST_FIELD_NUMBER;
            hash = (53 * hash) + getBytesList().hashCode();
            break;
          case 3:
            hash = (37 * hash) + INT64_LIST_FIELD_NUMBER;
            hash = (53 * hash) + getInt64List().hashCode();
            break;
          case 4:
            hash = (37 * hash) + FLOAT_LIST_FIELD_NUMBER;
            hash = (53 * hash) + getFloatList().hashCode();
            break;
          case 5:
            hash = (37 * hash) + ANY_LIST_FIELD_NUMBER;
            hash = (53 * hash) + getAnyList().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef 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 com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      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>
       * CollectionDef should cover most collections.
       * To add a user-defined collection, do one of the following:
       * 1. For simple data types, such as string, int, float:
       *      tf.add_to_collection("your_collection_name", your_simple_value)
       *    strings will be stored as bytes_list.
       * 2. For Protobuf types, there are three ways to add them:
       *    1) tf.add_to_collection("your_collection_name",
       *         your_proto.SerializeToString())
       *       collection_def {
       *         key: "user_defined_bytes_collection"
       *         value {
       *           bytes_list {
       *             value: "queue_name: &#92;"test_queue&#92;"&#92;n"
       *           }
       *         }
       *       }
       *  or
       *    2) tf.add_to_collection("your_collection_name", str(your_proto))
       *       collection_def {
       *         key: "user_defined_string_collection"
       *         value {
       *          bytes_list {
       *             value: "&#92;n&#92;ntest_queue"
       *           }
       *         }
       *       }
       *  or
       *    3) any_buf = any_pb2.Any()
       *       tf.add_to_collection("your_collection_name",
       *         any_buf.Pack(your_proto))
       *       collection_def {
       *         key: "user_defined_any_collection"
       *         value {
       *           any_list {
       *             value {
       *               type_url: "type.googleapis.com/tensorflow.QueueRunnerDef"
       *               value: "&#92;n&#92;ntest_queue"
       *             }
       *           }
       *         }
       *       }
       * 3. For Python objects, implement to_proto() and from_proto(), and register
       *    them in the following manner:
       *    ops.register_proto_function("your_collection_name",
       *                                proto_type,
       *                                to_proto=YourPythonObject.to_proto,
       *                                from_proto=YourPythonObject.from_proto)
       *    These functions will be invoked to serialize and de-serialize the
       *    collection. For example,
       *    ops.register_proto_function(ops.GraphKeys.GLOBAL_VARIABLES,
       *                                proto_type=variable_pb2.VariableDef,
       *                                to_proto=Variable.to_proto,
       *                                from_proto=Variable.from_proto)
       * </pre>
       *
       * Protobuf type {@code angel.CollectionDef}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.CollectionDef)
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDefOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.class, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Builder.class);
        }
  
        // Construct using com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          kindCase_ = 0;
          kind_ = null;
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_CollectionDef_descriptor;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getDefaultInstanceForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.getDefaultInstance();
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef build() {
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef buildPartial() {
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef result = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef(this);
          if (kindCase_ == 1) {
            if (nodeListBuilder_ == null) {
              result.kind_ = kind_;
            } else {
              result.kind_ = nodeListBuilder_.build();
            }
          }
          if (kindCase_ == 2) {
            if (bytesListBuilder_ == null) {
              result.kind_ = kind_;
            } else {
              result.kind_ = bytesListBuilder_.build();
            }
          }
          if (kindCase_ == 3) {
            if (int64ListBuilder_ == null) {
              result.kind_ = kind_;
            } else {
              result.kind_ = int64ListBuilder_.build();
            }
          }
          if (kindCase_ == 4) {
            if (floatListBuilder_ == null) {
              result.kind_ = kind_;
            } else {
              result.kind_ = floatListBuilder_.build();
            }
          }
          if (kindCase_ == 5) {
            if (anyListBuilder_ == null) {
              result.kind_ = kind_;
            } else {
              result.kind_ = anyListBuilder_.build();
            }
          }
          result.kindCase_ = kindCase_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef) {
            return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef other) {
          if (other == com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.getDefaultInstance()) return this;
          switch (other.getKindCase()) {
            case NODE_LIST: {
              mergeNodeList(other.getNodeList());
              break;
            }
            case BYTES_LIST: {
              mergeBytesList(other.getBytesList());
              break;
            }
            case INT64_LIST: {
              mergeInt64List(other.getInt64List());
              break;
            }
            case FLOAT_LIST: {
              mergeFloatList(other.getFloatList());
              break;
            }
            case ANY_LIST: {
              mergeAnyList(other.getAnyList());
              break;
            }
            case KIND_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int kindCase_ = 0;
        private java.lang.Object kind_;
        public KindCase
            getKindCase() {
          return KindCase.forNumber(
              kindCase_);
        }
  
        public Builder clearKind() {
          kindCase_ = 0;
          kind_ = null;
          onChanged();
          return this;
        }
  
  
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeListOrBuilder> nodeListBuilder_;
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        public boolean hasNodeList() {
          return kindCase_ == 1;
        }
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList getNodeList() {
          if (nodeListBuilder_ == null) {
            if (kindCase_ == 1) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance();
          } else {
            if (kindCase_ == 1) {
              return nodeListBuilder_.getMessage();
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        public Builder setNodeList(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList value) {
          if (nodeListBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            kind_ = value;
            onChanged();
          } else {
            nodeListBuilder_.setMessage(value);
          }
          kindCase_ = 1;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        public Builder setNodeList(
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.Builder builderForValue) {
          if (nodeListBuilder_ == null) {
            kind_ = builderForValue.build();
            onChanged();
          } else {
            nodeListBuilder_.setMessage(builderForValue.build());
          }
          kindCase_ = 1;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        public Builder mergeNodeList(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList value) {
          if (nodeListBuilder_ == null) {
            if (kindCase_ == 1 &&
                kind_ != com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance()) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.newBuilder((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_)
                  .mergeFrom(value).buildPartial();
            } else {
              kind_ = value;
            }
            onChanged();
          } else {
            if (kindCase_ == 1) {
              nodeListBuilder_.mergeFrom(value);
            }
            nodeListBuilder_.setMessage(value);
          }
          kindCase_ = 1;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        public Builder clearNodeList() {
          if (nodeListBuilder_ == null) {
            if (kindCase_ == 1) {
              kindCase_ = 0;
              kind_ = null;
              onChanged();
            }
          } else {
            if (kindCase_ == 1) {
              kindCase_ = 0;
              kind_ = null;
            }
            nodeListBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.Builder getNodeListBuilder() {
          return getNodeListFieldBuilder().getBuilder();
        }
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeListOrBuilder getNodeListOrBuilder() {
          if ((kindCase_ == 1) && (nodeListBuilder_ != null)) {
            return nodeListBuilder_.getMessageOrBuilder();
          } else {
            if (kindCase_ == 1) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.NodeList node_list = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeListOrBuilder> 
            getNodeListFieldBuilder() {
          if (nodeListBuilder_ == null) {
            if (!(kindCase_ == 1)) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.getDefaultInstance();
            }
            nodeListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeListOrBuilder>(
                    (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.NodeList) kind_,
                    getParentForChildren(),
                    isClean());
            kind_ = null;
          }
          kindCase_ = 1;
          onChanged();;
          return nodeListBuilder_;
        }
  
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesListOrBuilder> bytesListBuilder_;
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        public boolean hasBytesList() {
          return kindCase_ == 2;
        }
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList getBytesList() {
          if (bytesListBuilder_ == null) {
            if (kindCase_ == 2) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance();
          } else {
            if (kindCase_ == 2) {
              return bytesListBuilder_.getMessage();
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        public Builder setBytesList(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList value) {
          if (bytesListBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            kind_ = value;
            onChanged();
          } else {
            bytesListBuilder_.setMessage(value);
          }
          kindCase_ = 2;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        public Builder setBytesList(
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.Builder builderForValue) {
          if (bytesListBuilder_ == null) {
            kind_ = builderForValue.build();
            onChanged();
          } else {
            bytesListBuilder_.setMessage(builderForValue.build());
          }
          kindCase_ = 2;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        public Builder mergeBytesList(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList value) {
          if (bytesListBuilder_ == null) {
            if (kindCase_ == 2 &&
                kind_ != com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance()) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.newBuilder((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_)
                  .mergeFrom(value).buildPartial();
            } else {
              kind_ = value;
            }
            onChanged();
          } else {
            if (kindCase_ == 2) {
              bytesListBuilder_.mergeFrom(value);
            }
            bytesListBuilder_.setMessage(value);
          }
          kindCase_ = 2;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        public Builder clearBytesList() {
          if (bytesListBuilder_ == null) {
            if (kindCase_ == 2) {
              kindCase_ = 0;
              kind_ = null;
              onChanged();
            }
          } else {
            if (kindCase_ == 2) {
              kindCase_ = 0;
              kind_ = null;
            }
            bytesListBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.Builder getBytesListBuilder() {
          return getBytesListFieldBuilder().getBuilder();
        }
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesListOrBuilder getBytesListOrBuilder() {
          if ((kindCase_ == 2) && (bytesListBuilder_ != null)) {
            return bytesListBuilder_.getMessageOrBuilder();
          } else {
            if (kindCase_ == 2) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.BytesList bytes_list = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesListOrBuilder> 
            getBytesListFieldBuilder() {
          if (bytesListBuilder_ == null) {
            if (!(kindCase_ == 2)) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.getDefaultInstance();
            }
            bytesListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesListOrBuilder>(
                    (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.BytesList) kind_,
                    getParentForChildren(),
                    isClean());
            kind_ = null;
          }
          kindCase_ = 2;
          onChanged();;
          return bytesListBuilder_;
        }
  
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64ListOrBuilder> int64ListBuilder_;
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        public boolean hasInt64List() {
          return kindCase_ == 3;
        }
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List getInt64List() {
          if (int64ListBuilder_ == null) {
            if (kindCase_ == 3) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance();
          } else {
            if (kindCase_ == 3) {
              return int64ListBuilder_.getMessage();
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        public Builder setInt64List(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List value) {
          if (int64ListBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            kind_ = value;
            onChanged();
          } else {
            int64ListBuilder_.setMessage(value);
          }
          kindCase_ = 3;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        public Builder setInt64List(
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.Builder builderForValue) {
          if (int64ListBuilder_ == null) {
            kind_ = builderForValue.build();
            onChanged();
          } else {
            int64ListBuilder_.setMessage(builderForValue.build());
          }
          kindCase_ = 3;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        public Builder mergeInt64List(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List value) {
          if (int64ListBuilder_ == null) {
            if (kindCase_ == 3 &&
                kind_ != com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance()) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.newBuilder((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_)
                  .mergeFrom(value).buildPartial();
            } else {
              kind_ = value;
            }
            onChanged();
          } else {
            if (kindCase_ == 3) {
              int64ListBuilder_.mergeFrom(value);
            }
            int64ListBuilder_.setMessage(value);
          }
          kindCase_ = 3;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        public Builder clearInt64List() {
          if (int64ListBuilder_ == null) {
            if (kindCase_ == 3) {
              kindCase_ = 0;
              kind_ = null;
              onChanged();
            }
          } else {
            if (kindCase_ == 3) {
              kindCase_ = 0;
              kind_ = null;
            }
            int64ListBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.Builder getInt64ListBuilder() {
          return getInt64ListFieldBuilder().getBuilder();
        }
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64ListOrBuilder getInt64ListOrBuilder() {
          if ((kindCase_ == 3) && (int64ListBuilder_ != null)) {
            return int64ListBuilder_.getMessageOrBuilder();
          } else {
            if (kindCase_ == 3) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.Int64List int64_list = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64ListOrBuilder> 
            getInt64ListFieldBuilder() {
          if (int64ListBuilder_ == null) {
            if (!(kindCase_ == 3)) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.getDefaultInstance();
            }
            int64ListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64ListOrBuilder>(
                    (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.Int64List) kind_,
                    getParentForChildren(),
                    isClean());
            kind_ = null;
          }
          kindCase_ = 3;
          onChanged();;
          return int64ListBuilder_;
        }
  
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatListOrBuilder> floatListBuilder_;
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        public boolean hasFloatList() {
          return kindCase_ == 4;
        }
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList getFloatList() {
          if (floatListBuilder_ == null) {
            if (kindCase_ == 4) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance();
          } else {
            if (kindCase_ == 4) {
              return floatListBuilder_.getMessage();
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        public Builder setFloatList(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList value) {
          if (floatListBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            kind_ = value;
            onChanged();
          } else {
            floatListBuilder_.setMessage(value);
          }
          kindCase_ = 4;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        public Builder setFloatList(
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.Builder builderForValue) {
          if (floatListBuilder_ == null) {
            kind_ = builderForValue.build();
            onChanged();
          } else {
            floatListBuilder_.setMessage(builderForValue.build());
          }
          kindCase_ = 4;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        public Builder mergeFloatList(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList value) {
          if (floatListBuilder_ == null) {
            if (kindCase_ == 4 &&
                kind_ != com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance()) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.newBuilder((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_)
                  .mergeFrom(value).buildPartial();
            } else {
              kind_ = value;
            }
            onChanged();
          } else {
            if (kindCase_ == 4) {
              floatListBuilder_.mergeFrom(value);
            }
            floatListBuilder_.setMessage(value);
          }
          kindCase_ = 4;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        public Builder clearFloatList() {
          if (floatListBuilder_ == null) {
            if (kindCase_ == 4) {
              kindCase_ = 0;
              kind_ = null;
              onChanged();
            }
          } else {
            if (kindCase_ == 4) {
              kindCase_ = 0;
              kind_ = null;
            }
            floatListBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.Builder getFloatListBuilder() {
          return getFloatListFieldBuilder().getBuilder();
        }
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatListOrBuilder getFloatListOrBuilder() {
          if ((kindCase_ == 4) && (floatListBuilder_ != null)) {
            return floatListBuilder_.getMessageOrBuilder();
          } else {
            if (kindCase_ == 4) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.FloatList float_list = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatListOrBuilder> 
            getFloatListFieldBuilder() {
          if (floatListBuilder_ == null) {
            if (!(kindCase_ == 4)) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.getDefaultInstance();
            }
            floatListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatListOrBuilder>(
                    (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.FloatList) kind_,
                    getParentForChildren(),
                    isClean());
            kind_ = null;
          }
          kindCase_ = 4;
          onChanged();;
          return floatListBuilder_;
        }
  
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyListOrBuilder> anyListBuilder_;
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        public boolean hasAnyList() {
          return kindCase_ == 5;
        }
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList getAnyList() {
          if (anyListBuilder_ == null) {
            if (kindCase_ == 5) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance();
          } else {
            if (kindCase_ == 5) {
              return anyListBuilder_.getMessage();
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        public Builder setAnyList(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList value) {
          if (anyListBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            kind_ = value;
            onChanged();
          } else {
            anyListBuilder_.setMessage(value);
          }
          kindCase_ = 5;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        public Builder setAnyList(
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.Builder builderForValue) {
          if (anyListBuilder_ == null) {
            kind_ = builderForValue.build();
            onChanged();
          } else {
            anyListBuilder_.setMessage(builderForValue.build());
          }
          kindCase_ = 5;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        public Builder mergeAnyList(com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList value) {
          if (anyListBuilder_ == null) {
            if (kindCase_ == 5 &&
                kind_ != com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance()) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.newBuilder((com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_)
                  .mergeFrom(value).buildPartial();
            } else {
              kind_ = value;
            }
            onChanged();
          } else {
            if (kindCase_ == 5) {
              anyListBuilder_.mergeFrom(value);
            }
            anyListBuilder_.setMessage(value);
          }
          kindCase_ = 5;
          return this;
        }
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        public Builder clearAnyList() {
          if (anyListBuilder_ == null) {
            if (kindCase_ == 5) {
              kindCase_ = 0;
              kind_ = null;
              onChanged();
            }
          } else {
            if (kindCase_ == 5) {
              kindCase_ = 0;
              kind_ = null;
            }
            anyListBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.Builder getAnyListBuilder() {
          return getAnyListFieldBuilder().getBuilder();
        }
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyListOrBuilder getAnyListOrBuilder() {
          if ((kindCase_ == 5) && (anyListBuilder_ != null)) {
            return anyListBuilder_.getMessageOrBuilder();
          } else {
            if (kindCase_ == 5) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance();
          }
        }
        /**
         * <code>.angel.CollectionDef.AnyList any_list = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyListOrBuilder> 
            getAnyListFieldBuilder() {
          if (anyListBuilder_ == null) {
            if (!(kindCase_ == 5)) {
              kind_ = com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.getDefaultInstance();
            }
            anyListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList.Builder, com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyListOrBuilder>(
                    (com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef.AnyList) kind_,
                    getParentForChildren(),
                    isClean());
            kind_ = null;
          }
          kindCase_ = 5;
          onChanged();;
          return anyListBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFieldsProto3(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:angel.CollectionDef)
      }
  
      // @@protoc_insertion_point(class_scope:angel.CollectionDef)
      private static final com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef();
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<CollectionDef>
          PARSER = new com.google.protobuf.AbstractParser<CollectionDef>() {
        public CollectionDef parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new CollectionDef(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<CollectionDef> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<CollectionDef> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.core.saver.MetaGraphProtos.CollectionDef getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface TensorInfoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.TensorInfo)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       * For dense `Tensor`s, the name of the tensor in the graph.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      java.lang.String getName();
      /**
       * <pre>
       * For dense `Tensor`s, the name of the tensor in the graph.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();
  
      /**
       * <pre>
       * There are many possible encodings of sparse matrices
       * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
       * uses only the COO encoding.  This is supported and documented in the
       * SparseTensor Python class.
       * </pre>
       *
       * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
       */
      boolean hasCooSparse();
      /**
       * <pre>
       * There are many possible encodings of sparse matrices
       * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
       * uses only the COO encoding.  This is supported and documented in the
       * SparseTensor Python class.
       * </pre>
       *
       * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse getCooSparse();
      /**
       * <pre>
       * There are many possible encodings of sparse matrices
       * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
       * uses only the COO encoding.  This is supported and documented in the
       * SparseTensor Python class.
       * </pre>
       *
       * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparseOrBuilder getCooSparseOrBuilder();
  
      /**
       * <code>.angel.DataType dtype = 2;</code>
       */
      int getDtypeValue();
      /**
       * <code>.angel.DataType dtype = 2;</code>
       */
      com.tencent.angel.serving.apis.common.TypesProtos.DataType getDtype();
  
      /**
       * <pre>
       * The static shape should be recorded here, to the extent that it can
       * be known in advance.  In the case of a SparseTensor, this field describes
       * the logical shape of the represented tensor (aka dense_shape).
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
       */
      boolean hasTensorShape();
      /**
       * <pre>
       * The static shape should be recorded here, to the extent that it can
       * be known in advance.  In the case of a SparseTensor, this field describes
       * the logical shape of the represented tensor (aka dense_shape).
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
       */
      com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getTensorShape();
      /**
       * <pre>
       * The static shape should be recorded here, to the extent that it can
       * be known in advance.  In the case of a SparseTensor, this field describes
       * the logical shape of the represented tensor (aka dense_shape).
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
       */
      com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getTensorShapeOrBuilder();
  
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.EncodingCase getEncodingCase();
    }
    /**
     * <pre>
     * Information about a Tensor necessary for feeding or retrieval.
     * </pre>
     *
     * Protobuf type {@code angel.TensorInfo}
     */
    public  static final class TensorInfo extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.TensorInfo)
        TensorInfoOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TensorInfo.newBuilder() to construct.
      private TensorInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TensorInfo() {
        dtype_ = 0;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private TensorInfo(
          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;
              default: {
                if (!parseUnknownFieldProto3(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                encodingCase_ = 1;
                encoding_ = s;
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
  
                dtype_ = rawValue;
                break;
              }
              case 26: {
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder subBuilder = null;
                if (tensorShape_ != null) {
                  subBuilder = tensorShape_.toBuilder();
                }
                tensorShape_ = input.readMessage(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(tensorShape_);
                  tensorShape_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 34: {
                com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.Builder subBuilder = null;
                if (encodingCase_ == 4) {
                  subBuilder = ((com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_).toBuilder();
                }
                encoding_ =
                    input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_);
                  encoding_ = subBuilder.buildPartial();
                }
                encodingCase_ = 4;
                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 {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.class, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.Builder.class);
      }
  
      public interface CooSparseOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.TensorInfo.CooSparse)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <pre>
         * The shape of the values Tensor is [?].  Its dtype must be the dtype of
         * the SparseTensor as a whole, given in the enclosing TensorInfo.
         * </pre>
         *
         * <code>string values_tensor_name = 1;</code>
         */
        java.lang.String getValuesTensorName();
        /**
         * <pre>
         * The shape of the values Tensor is [?].  Its dtype must be the dtype of
         * the SparseTensor as a whole, given in the enclosing TensorInfo.
         * </pre>
         *
         * <code>string values_tensor_name = 1;</code>
         */
        com.google.protobuf.ByteString
            getValuesTensorNameBytes();
  
        /**
         * <pre>
         * The indices Tensor must have dtype int64 and shape [?, ?].
         * </pre>
         *
         * <code>string indices_tensor_name = 2;</code>
         */
        java.lang.String getIndicesTensorName();
        /**
         * <pre>
         * The indices Tensor must have dtype int64 and shape [?, ?].
         * </pre>
         *
         * <code>string indices_tensor_name = 2;</code>
         */
        com.google.protobuf.ByteString
            getIndicesTensorNameBytes();
  
        /**
         * <pre>
         * The dynamic logical shape represented by the SparseTensor is recorded in
         * the Tensor referenced here.  It must have dtype int64 and shape [?].
         * </pre>
         *
         * <code>string dense_shape_tensor_name = 3;</code>
         */
        java.lang.String getDenseShapeTensorName();
        /**
         * <pre>
         * The dynamic logical shape represented by the SparseTensor is recorded in
         * the Tensor referenced here.  It must have dtype int64 and shape [?].
         * </pre>
         *
         * <code>string dense_shape_tensor_name = 3;</code>
         */
        com.google.protobuf.ByteString
            getDenseShapeTensorNameBytes();
      }
      /**
       * <pre>
       * For sparse tensors, The COO encoding stores a triple of values, indices,
       * and shape.
       * </pre>
       *
       * Protobuf type {@code angel.TensorInfo.CooSparse}
       */
      public  static final class CooSparse extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.TensorInfo.CooSparse)
          CooSparseOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use CooSparse.newBuilder() to construct.
        private CooSparse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private CooSparse() {
          valuesTensorName_ = "";
          indicesTensorName_ = "";
          denseShapeTensorName_ = "";
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private CooSparse(
            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;
                default: {
                  if (!parseUnknownFieldProto3(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  java.lang.String s = input.readStringRequireUtf8();
  
                  valuesTensorName_ = s;
                  break;
                }
                case 18: {
                  java.lang.String s = input.readStringRequireUtf8();
  
                  indicesTensorName_ = s;
                  break;
                }
                case 26: {
                  java.lang.String s = input.readStringRequireUtf8();
  
                  denseShapeTensorName_ = s;
                  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 {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_CooSparse_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_CooSparse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.class, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.Builder.class);
        }
  
        public static final int VALUES_TENSOR_NAME_FIELD_NUMBER = 1;
        private volatile java.lang.Object valuesTensorName_;
        /**
         * <pre>
         * The shape of the values Tensor is [?].  Its dtype must be the dtype of
         * the SparseTensor as a whole, given in the enclosing TensorInfo.
         * </pre>
         *
         * <code>string values_tensor_name = 1;</code>
         */
        public java.lang.String getValuesTensorName() {
          java.lang.Object ref = valuesTensorName_;
          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();
            valuesTensorName_ = s;
            return s;
          }
        }
        /**
         * <pre>
         * The shape of the values Tensor is [?].  Its dtype must be the dtype of
         * the SparseTensor as a whole, given in the enclosing TensorInfo.
         * </pre>
         *
         * <code>string values_tensor_name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getValuesTensorNameBytes() {
          java.lang.Object ref = valuesTensorName_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            valuesTensorName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int INDICES_TENSOR_NAME_FIELD_NUMBER = 2;
        private volatile java.lang.Object indicesTensorName_;
        /**
         * <pre>
         * The indices Tensor must have dtype int64 and shape [?, ?].
         * </pre>
         *
         * <code>string indices_tensor_name = 2;</code>
         */
        public java.lang.String getIndicesTensorName() {
          java.lang.Object ref = indicesTensorName_;
          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();
            indicesTensorName_ = s;
            return s;
          }
        }
        /**
         * <pre>
         * The indices Tensor must have dtype int64 and shape [?, ?].
         * </pre>
         *
         * <code>string indices_tensor_name = 2;</code>
         */
        public com.google.protobuf.ByteString
            getIndicesTensorNameBytes() {
          java.lang.Object ref = indicesTensorName_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            indicesTensorName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int DENSE_SHAPE_TENSOR_NAME_FIELD_NUMBER = 3;
        private volatile java.lang.Object denseShapeTensorName_;
        /**
         * <pre>
         * The dynamic logical shape represented by the SparseTensor is recorded in
         * the Tensor referenced here.  It must have dtype int64 and shape [?].
         * </pre>
         *
         * <code>string dense_shape_tensor_name = 3;</code>
         */
        public java.lang.String getDenseShapeTensorName() {
          java.lang.Object ref = denseShapeTensorName_;
          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();
            denseShapeTensorName_ = s;
            return s;
          }
        }
        /**
         * <pre>
         * The dynamic logical shape represented by the SparseTensor is recorded in
         * the Tensor referenced here.  It must have dtype int64 and shape [?].
         * </pre>
         *
         * <code>string dense_shape_tensor_name = 3;</code>
         */
        public com.google.protobuf.ByteString
            getDenseShapeTensorNameBytes() {
          java.lang.Object ref = denseShapeTensorName_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            denseShapeTensorName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (!getValuesTensorNameBytes().isEmpty()) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, valuesTensorName_);
          }
          if (!getIndicesTensorNameBytes().isEmpty()) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, indicesTensorName_);
          }
          if (!getDenseShapeTensorNameBytes().isEmpty()) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 3, denseShapeTensorName_);
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          if (!getValuesTensorNameBytes().isEmpty()) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, valuesTensorName_);
          }
          if (!getIndicesTensorNameBytes().isEmpty()) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, indicesTensorName_);
          }
          if (!getDenseShapeTensorNameBytes().isEmpty()) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, denseShapeTensorName_);
          }
          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 com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse)) {
            return super.equals(obj);
          }
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse other = (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) obj;
  
          boolean result = true;
          result = result && getValuesTensorName()
              .equals(other.getValuesTensorName());
          result = result && getIndicesTensorName()
              .equals(other.getIndicesTensorName());
          result = result && getDenseShapeTensorName()
              .equals(other.getDenseShapeTensorName());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (37 * hash) + VALUES_TENSOR_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getValuesTensorName().hashCode();
          hash = (37 * hash) + INDICES_TENSOR_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getIndicesTensorName().hashCode();
          hash = (37 * hash) + DENSE_SHAPE_TENSOR_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getDenseShapeTensorName().hashCode();
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse 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 com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse 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 com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        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>
         * For sparse tensors, The COO encoding stores a triple of values, indices,
         * and shape.
         * </pre>
         *
         * Protobuf type {@code angel.TensorInfo.CooSparse}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.TensorInfo.CooSparse)
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparseOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_CooSparse_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_CooSparse_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.class, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.Builder.class);
          }
  
          // Construct using com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            valuesTensorName_ = "";
  
            indicesTensorName_ = "";
  
            denseShapeTensorName_ = "";
  
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_CooSparse_descriptor;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse getDefaultInstanceForType() {
            return com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance();
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse build() {
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse buildPartial() {
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse result = new com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse(this);
            result.valuesTensorName_ = valuesTensorName_;
            result.indicesTensorName_ = indicesTensorName_;
            result.denseShapeTensorName_ = denseShapeTensorName_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) {
              return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse other) {
            if (other == com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance()) return this;
            if (!other.getValuesTensorName().isEmpty()) {
              valuesTensorName_ = other.valuesTensorName_;
              onChanged();
            }
            if (!other.getIndicesTensorName().isEmpty()) {
              indicesTensorName_ = other.indicesTensorName_;
              onChanged();
            }
            if (!other.getDenseShapeTensorName().isEmpty()) {
              denseShapeTensorName_ = other.denseShapeTensorName_;
              onChanged();
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
  
          private java.lang.Object valuesTensorName_ = "";
          /**
           * <pre>
           * The shape of the values Tensor is [?].  Its dtype must be the dtype of
           * the SparseTensor as a whole, given in the enclosing TensorInfo.
           * </pre>
           *
           * <code>string values_tensor_name = 1;</code>
           */
          public java.lang.String getValuesTensorName() {
            java.lang.Object ref = valuesTensorName_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              valuesTensorName_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <pre>
           * The shape of the values Tensor is [?].  Its dtype must be the dtype of
           * the SparseTensor as a whole, given in the enclosing TensorInfo.
           * </pre>
           *
           * <code>string values_tensor_name = 1;</code>
           */
          public com.google.protobuf.ByteString
              getValuesTensorNameBytes() {
            java.lang.Object ref = valuesTensorName_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              valuesTensorName_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <pre>
           * The shape of the values Tensor is [?].  Its dtype must be the dtype of
           * the SparseTensor as a whole, given in the enclosing TensorInfo.
           * </pre>
           *
           * <code>string values_tensor_name = 1;</code>
           */
          public Builder setValuesTensorName(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    
            valuesTensorName_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The shape of the values Tensor is [?].  Its dtype must be the dtype of
           * the SparseTensor as a whole, given in the enclosing TensorInfo.
           * </pre>
           *
           * <code>string values_tensor_name = 1;</code>
           */
          public Builder clearValuesTensorName() {
            
            valuesTensorName_ = getDefaultInstance().getValuesTensorName();
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The shape of the values Tensor is [?].  Its dtype must be the dtype of
           * the SparseTensor as a whole, given in the enclosing TensorInfo.
           * </pre>
           *
           * <code>string values_tensor_name = 1;</code>
           */
          public Builder setValuesTensorNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
            
            valuesTensorName_ = value;
            onChanged();
            return this;
          }
  
          private java.lang.Object indicesTensorName_ = "";
          /**
           * <pre>
           * The indices Tensor must have dtype int64 and shape [?, ?].
           * </pre>
           *
           * <code>string indices_tensor_name = 2;</code>
           */
          public java.lang.String getIndicesTensorName() {
            java.lang.Object ref = indicesTensorName_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              indicesTensorName_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <pre>
           * The indices Tensor must have dtype int64 and shape [?, ?].
           * </pre>
           *
           * <code>string indices_tensor_name = 2;</code>
           */
          public com.google.protobuf.ByteString
              getIndicesTensorNameBytes() {
            java.lang.Object ref = indicesTensorName_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              indicesTensorName_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <pre>
           * The indices Tensor must have dtype int64 and shape [?, ?].
           * </pre>
           *
           * <code>string indices_tensor_name = 2;</code>
           */
          public Builder setIndicesTensorName(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    
            indicesTensorName_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The indices Tensor must have dtype int64 and shape [?, ?].
           * </pre>
           *
           * <code>string indices_tensor_name = 2;</code>
           */
          public Builder clearIndicesTensorName() {
            
            indicesTensorName_ = getDefaultInstance().getIndicesTensorName();
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The indices Tensor must have dtype int64 and shape [?, ?].
           * </pre>
           *
           * <code>string indices_tensor_name = 2;</code>
           */
          public Builder setIndicesTensorNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
            
            indicesTensorName_ = value;
            onChanged();
            return this;
          }
  
          private java.lang.Object denseShapeTensorName_ = "";
          /**
           * <pre>
           * The dynamic logical shape represented by the SparseTensor is recorded in
           * the Tensor referenced here.  It must have dtype int64 and shape [?].
           * </pre>
           *
           * <code>string dense_shape_tensor_name = 3;</code>
           */
          public java.lang.String getDenseShapeTensorName() {
            java.lang.Object ref = denseShapeTensorName_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              denseShapeTensorName_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <pre>
           * The dynamic logical shape represented by the SparseTensor is recorded in
           * the Tensor referenced here.  It must have dtype int64 and shape [?].
           * </pre>
           *
           * <code>string dense_shape_tensor_name = 3;</code>
           */
          public com.google.protobuf.ByteString
              getDenseShapeTensorNameBytes() {
            java.lang.Object ref = denseShapeTensorName_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              denseShapeTensorName_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <pre>
           * The dynamic logical shape represented by the SparseTensor is recorded in
           * the Tensor referenced here.  It must have dtype int64 and shape [?].
           * </pre>
           *
           * <code>string dense_shape_tensor_name = 3;</code>
           */
          public Builder setDenseShapeTensorName(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    
            denseShapeTensorName_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The dynamic logical shape represented by the SparseTensor is recorded in
           * the Tensor referenced here.  It must have dtype int64 and shape [?].
           * </pre>
           *
           * <code>string dense_shape_tensor_name = 3;</code>
           */
          public Builder clearDenseShapeTensorName() {
            
            denseShapeTensorName_ = getDefaultInstance().getDenseShapeTensorName();
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The dynamic logical shape represented by the SparseTensor is recorded in
           * the Tensor referenced here.  It must have dtype int64 and shape [?].
           * </pre>
           *
           * <code>string dense_shape_tensor_name = 3;</code>
           */
          public Builder setDenseShapeTensorNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
            
            denseShapeTensorName_ = value;
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFieldsProto3(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:angel.TensorInfo.CooSparse)
        }
  
        // @@protoc_insertion_point(class_scope:angel.TensorInfo.CooSparse)
        private static final com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse();
        }
  
        public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<CooSparse>
            PARSER = new com.google.protobuf.AbstractParser<CooSparse>() {
          public CooSparse parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new CooSparse(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<CooSparse> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<CooSparse> getParserForType() {
          return PARSER;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      private int encodingCase_ = 0;
      private java.lang.Object encoding_;
      public enum EncodingCase
          implements com.google.protobuf.Internal.EnumLite {
        NAME(1),
        COO_SPARSE(4),
        ENCODING_NOT_SET(0);
        private final int value;
        private EncodingCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static EncodingCase valueOf(int value) {
          return forNumber(value);
        }
  
        public static EncodingCase forNumber(int value) {
          switch (value) {
            case 1: return NAME;
            case 4: return COO_SPARSE;
            case 0: return ENCODING_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };
  
      public EncodingCase
      getEncodingCase() {
        return EncodingCase.forNumber(
            encodingCase_);
      }
  
      public static final int NAME_FIELD_NUMBER = 1;
      /**
       * <pre>
       * For dense `Tensor`s, the name of the tensor in the graph.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = "";
        if (encodingCase_ == 1) {
          ref = encoding_;
        }
        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();
          if (encodingCase_ == 1) {
            encoding_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * For dense `Tensor`s, the name of the tensor in the graph.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = "";
        if (encodingCase_ == 1) {
          ref = encoding_;
        }
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (encodingCase_ == 1) {
            encoding_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int COO_SPARSE_FIELD_NUMBER = 4;
      /**
       * <pre>
       * There are many possible encodings of sparse matrices
       * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
       * uses only the COO encoding.  This is supported and documented in the
       * SparseTensor Python class.
       * </pre>
       *
       * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
       */
      public boolean hasCooSparse() {
        return encodingCase_ == 4;
      }
      /**
       * <pre>
       * There are many possible encodings of sparse matrices
       * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
       * uses only the COO encoding.  This is supported and documented in the
       * SparseTensor Python class.
       * </pre>
       *
       * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse getCooSparse() {
        if (encodingCase_ == 4) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance();
      }
      /**
       * <pre>
       * There are many possible encodings of sparse matrices
       * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
       * uses only the COO encoding.  This is supported and documented in the
       * SparseTensor Python class.
       * </pre>
       *
       * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparseOrBuilder getCooSparseOrBuilder() {
        if (encodingCase_ == 4) {
           return (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_;
        }
        return com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance();
      }
  
      public static final int DTYPE_FIELD_NUMBER = 2;
      private int dtype_;
      /**
       * <code>.angel.DataType dtype = 2;</code>
       */
      public int getDtypeValue() {
        return dtype_;
      }
      /**
       * <code>.angel.DataType dtype = 2;</code>
       */
      public com.tencent.angel.serving.apis.common.TypesProtos.DataType getDtype() {
        com.tencent.angel.serving.apis.common.TypesProtos.DataType result = com.tencent.angel.serving.apis.common.TypesProtos.DataType.valueOf(dtype_);
        return result == null ? com.tencent.angel.serving.apis.common.TypesProtos.DataType.UNRECOGNIZED : result;
      }
  
      public static final int TENSOR_SHAPE_FIELD_NUMBER = 3;
      private com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto tensorShape_;
      /**
       * <pre>
       * The static shape should be recorded here, to the extent that it can
       * be known in advance.  In the case of a SparseTensor, this field describes
       * the logical shape of the represented tensor (aka dense_shape).
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
       */
      public boolean hasTensorShape() {
        return tensorShape_ != null;
      }
      /**
       * <pre>
       * The static shape should be recorded here, to the extent that it can
       * be known in advance.  In the case of a SparseTensor, this field describes
       * the logical shape of the represented tensor (aka dense_shape).
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
       */
      public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getTensorShape() {
        return tensorShape_ == null ? com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : tensorShape_;
      }
      /**
       * <pre>
       * The static shape should be recorded here, to the extent that it can
       * be known in advance.  In the case of a SparseTensor, this field describes
       * the logical shape of the represented tensor (aka dense_shape).
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
       */
      public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getTensorShapeOrBuilder() {
        return getTensorShape();
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (encodingCase_ == 1) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, encoding_);
        }
        if (dtype_ != com.tencent.angel.serving.apis.common.TypesProtos.DataType.DT_INVALID.getNumber()) {
          output.writeEnum(2, dtype_);
        }
        if (tensorShape_ != null) {
          output.writeMessage(3, getTensorShape());
        }
        if (encodingCase_ == 4) {
          output.writeMessage(4, (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (encodingCase_ == 1) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, encoding_);
        }
        if (dtype_ != com.tencent.angel.serving.apis.common.TypesProtos.DataType.DT_INVALID.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, dtype_);
        }
        if (tensorShape_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getTensorShape());
        }
        if (encodingCase_ == 4) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_);
        }
        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 com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo)) {
          return super.equals(obj);
        }
        com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo other = (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo) obj;
  
        boolean result = true;
        result = result && dtype_ == other.dtype_;
        result = result && (hasTensorShape() == other.hasTensorShape());
        if (hasTensorShape()) {
          result = result && getTensorShape()
              .equals(other.getTensorShape());
        }
        result = result && getEncodingCase().equals(
            other.getEncodingCase());
        if (!result) return false;
        switch (encodingCase_) {
          case 1:
            result = result && getName()
                .equals(other.getName());
            break;
          case 4:
            result = result && getCooSparse()
                .equals(other.getCooSparse());
            break;
          case 0:
          default:
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + DTYPE_FIELD_NUMBER;
        hash = (53 * hash) + dtype_;
        if (hasTensorShape()) {
          hash = (37 * hash) + TENSOR_SHAPE_FIELD_NUMBER;
          hash = (53 * hash) + getTensorShape().hashCode();
        }
        switch (encodingCase_) {
          case 1:
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            break;
          case 4:
            hash = (37 * hash) + COO_SPARSE_FIELD_NUMBER;
            hash = (53 * hash) + getCooSparse().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo 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 com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo 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 com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      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>
       * Information about a Tensor necessary for feeding or retrieval.
       * </pre>
       *
       * Protobuf type {@code angel.TensorInfo}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.TensorInfo)
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.class, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.Builder.class);
        }
  
        // Construct using com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          dtype_ = 0;
  
          if (tensorShapeBuilder_ == null) {
            tensorShape_ = null;
          } else {
            tensorShape_ = null;
            tensorShapeBuilder_ = null;
          }
          encodingCase_ = 0;
          encoding_ = null;
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_TensorInfo_descriptor;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getDefaultInstanceForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.getDefaultInstance();
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo build() {
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo buildPartial() {
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo result = new com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo(this);
          if (encodingCase_ == 1) {
            result.encoding_ = encoding_;
          }
          if (encodingCase_ == 4) {
            if (cooSparseBuilder_ == null) {
              result.encoding_ = encoding_;
            } else {
              result.encoding_ = cooSparseBuilder_.build();
            }
          }
          result.dtype_ = dtype_;
          if (tensorShapeBuilder_ == null) {
            result.tensorShape_ = tensorShape_;
          } else {
            result.tensorShape_ = tensorShapeBuilder_.build();
          }
          result.encodingCase_ = encodingCase_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo) {
            return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo other) {
          if (other == com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.getDefaultInstance()) return this;
          if (other.dtype_ != 0) {
            setDtypeValue(other.getDtypeValue());
          }
          if (other.hasTensorShape()) {
            mergeTensorShape(other.getTensorShape());
          }
          switch (other.getEncodingCase()) {
            case NAME: {
              encodingCase_ = 1;
              encoding_ = other.encoding_;
              onChanged();
              break;
            }
            case COO_SPARSE: {
              mergeCooSparse(other.getCooSparse());
              break;
            }
            case ENCODING_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int encodingCase_ = 0;
        private java.lang.Object encoding_;
        public EncodingCase
            getEncodingCase() {
          return EncodingCase.forNumber(
              encodingCase_);
        }
  
        public Builder clearEncoding() {
          encodingCase_ = 0;
          encoding_ = null;
          onChanged();
          return this;
        }
  
  
        /**
         * <pre>
         * For dense `Tensor`s, the name of the tensor in the graph.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = "";
          if (encodingCase_ == 1) {
            ref = encoding_;
          }
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (encodingCase_ == 1) {
              encoding_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * For dense `Tensor`s, the name of the tensor in the graph.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = "";
          if (encodingCase_ == 1) {
            ref = encoding_;
          }
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            if (encodingCase_ == 1) {
              encoding_ = b;
            }
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * For dense `Tensor`s, the name of the tensor in the graph.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    encodingCase_ = 1;
          encoding_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * For dense `Tensor`s, the name of the tensor in the graph.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public Builder clearName() {
          if (encodingCase_ == 1) {
            encodingCase_ = 0;
            encoding_ = null;
            onChanged();
          }
          return this;
        }
        /**
         * <pre>
         * For dense `Tensor`s, the name of the tensor in the graph.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
          encodingCase_ = 1;
          encoding_ = value;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.Builder, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparseOrBuilder> cooSparseBuilder_;
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        public boolean hasCooSparse() {
          return encodingCase_ == 4;
        }
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse getCooSparse() {
          if (cooSparseBuilder_ == null) {
            if (encodingCase_ == 4) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance();
          } else {
            if (encodingCase_ == 4) {
              return cooSparseBuilder_.getMessage();
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        public Builder setCooSparse(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse value) {
          if (cooSparseBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            encoding_ = value;
            onChanged();
          } else {
            cooSparseBuilder_.setMessage(value);
          }
          encodingCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        public Builder setCooSparse(
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.Builder builderForValue) {
          if (cooSparseBuilder_ == null) {
            encoding_ = builderForValue.build();
            onChanged();
          } else {
            cooSparseBuilder_.setMessage(builderForValue.build());
          }
          encodingCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        public Builder mergeCooSparse(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse value) {
          if (cooSparseBuilder_ == null) {
            if (encodingCase_ == 4 &&
                encoding_ != com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance()) {
              encoding_ = com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.newBuilder((com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_)
                  .mergeFrom(value).buildPartial();
            } else {
              encoding_ = value;
            }
            onChanged();
          } else {
            if (encodingCase_ == 4) {
              cooSparseBuilder_.mergeFrom(value);
            }
            cooSparseBuilder_.setMessage(value);
          }
          encodingCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        public Builder clearCooSparse() {
          if (cooSparseBuilder_ == null) {
            if (encodingCase_ == 4) {
              encodingCase_ = 0;
              encoding_ = null;
              onChanged();
            }
          } else {
            if (encodingCase_ == 4) {
              encodingCase_ = 0;
              encoding_ = null;
            }
            cooSparseBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.Builder getCooSparseBuilder() {
          return getCooSparseFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparseOrBuilder getCooSparseOrBuilder() {
          if ((encodingCase_ == 4) && (cooSparseBuilder_ != null)) {
            return cooSparseBuilder_.getMessageOrBuilder();
          } else {
            if (encodingCase_ == 4) {
              return (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_;
            }
            return com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * There are many possible encodings of sparse matrices
         * (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
         * uses only the COO encoding.  This is supported and documented in the
         * SparseTensor Python class.
         * </pre>
         *
         * <code>.angel.TensorInfo.CooSparse coo_sparse = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.Builder, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparseOrBuilder> 
            getCooSparseFieldBuilder() {
          if (cooSparseBuilder_ == null) {
            if (!(encodingCase_ == 4)) {
              encoding_ = com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.getDefaultInstance();
            }
            cooSparseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse.Builder, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparseOrBuilder>(
                    (com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.CooSparse) encoding_,
                    getParentForChildren(),
                    isClean());
            encoding_ = null;
          }
          encodingCase_ = 4;
          onChanged();;
          return cooSparseBuilder_;
        }
  
        private int dtype_ = 0;
        /**
         * <code>.angel.DataType dtype = 2;</code>
         */
        public int getDtypeValue() {
          return dtype_;
        }
        /**
         * <code>.angel.DataType dtype = 2;</code>
         */
        public Builder setDtypeValue(int value) {
          dtype_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.angel.DataType dtype = 2;</code>
         */
        public com.tencent.angel.serving.apis.common.TypesProtos.DataType getDtype() {
          com.tencent.angel.serving.apis.common.TypesProtos.DataType result = com.tencent.angel.serving.apis.common.TypesProtos.DataType.valueOf(dtype_);
          return result == null ? com.tencent.angel.serving.apis.common.TypesProtos.DataType.UNRECOGNIZED : result;
        }
        /**
         * <code>.angel.DataType dtype = 2;</code>
         */
        public Builder setDtype(com.tencent.angel.serving.apis.common.TypesProtos.DataType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          dtype_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.angel.DataType dtype = 2;</code>
         */
        public Builder clearDtype() {
          
          dtype_ = 0;
          onChanged();
          return this;
        }
  
        private com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto tensorShape_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder> tensorShapeBuilder_;
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        public boolean hasTensorShape() {
          return tensorShapeBuilder_ != null || tensorShape_ != null;
        }
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getTensorShape() {
          if (tensorShapeBuilder_ == null) {
            return tensorShape_ == null ? com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : tensorShape_;
          } else {
            return tensorShapeBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        public Builder setTensorShape(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto value) {
          if (tensorShapeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            tensorShape_ = value;
            onChanged();
          } else {
            tensorShapeBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        public Builder setTensorShape(
            com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder builderForValue) {
          if (tensorShapeBuilder_ == null) {
            tensorShape_ = builderForValue.build();
            onChanged();
          } else {
            tensorShapeBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        public Builder mergeTensorShape(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto value) {
          if (tensorShapeBuilder_ == null) {
            if (tensorShape_ != null) {
              tensorShape_ =
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.newBuilder(tensorShape_).mergeFrom(value).buildPartial();
            } else {
              tensorShape_ = value;
            }
            onChanged();
          } else {
            tensorShapeBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        public Builder clearTensorShape() {
          if (tensorShapeBuilder_ == null) {
            tensorShape_ = null;
            onChanged();
          } else {
            tensorShape_ = null;
            tensorShapeBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder getTensorShapeBuilder() {
          
          onChanged();
          return getTensorShapeFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getTensorShapeOrBuilder() {
          if (tensorShapeBuilder_ != null) {
            return tensorShapeBuilder_.getMessageOrBuilder();
          } else {
            return tensorShape_ == null ?
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : tensorShape_;
          }
        }
        /**
         * <pre>
         * The static shape should be recorded here, to the extent that it can
         * be known in advance.  In the case of a SparseTensor, this field describes
         * the logical shape of the represented tensor (aka dense_shape).
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder> 
            getTensorShapeFieldBuilder() {
          if (tensorShapeBuilder_ == null) {
            tensorShapeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder>(
                    getTensorShape(),
                    getParentForChildren(),
                    isClean());
            tensorShape_ = null;
          }
          return tensorShapeBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFieldsProto3(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:angel.TensorInfo)
      }
  
      // @@protoc_insertion_point(class_scope:angel.TensorInfo)
      private static final com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo();
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<TensorInfo>
          PARSER = new com.google.protobuf.AbstractParser<TensorInfo>() {
        public TensorInfo parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new TensorInfo(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<TensorInfo> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<TensorInfo> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface SignatureDefOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.SignatureDef)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
      int getInputsCount();
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
      boolean containsInputs(
          java.lang.String key);
      /**
       * Use {@link #getInputsMap()} instead.
       */
      @java.lang.Deprecated
      java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
      getInputs();
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
      java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
      getInputsMap();
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
  
      com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getInputsOrDefault(
          java.lang.String key,
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo defaultValue);
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
  
      com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getInputsOrThrow(
          java.lang.String key);
  
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
      int getOutputsCount();
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
      boolean containsOutputs(
          java.lang.String key);
      /**
       * Use {@link #getOutputsMap()} instead.
       */
      @java.lang.Deprecated
      java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
      getOutputs();
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
      java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
      getOutputsMap();
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
  
      com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getOutputsOrDefault(
          java.lang.String key,
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo defaultValue);
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
  
      com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getOutputsOrThrow(
          java.lang.String key);
  
      /**
       * <pre>
       * Extensible method_name information enabling third-party users to mark a
       * SignatureDef as supporting a particular method. This enables producers and
       * consumers of SignatureDefs, e.g. a model definition library and a serving
       * library to have a clear hand-off regarding the semantics of a computation.
       * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
       * method_name. This is commonly used to support multi-headed computation,
       * where a single graph computation may return multiple results.
       * </pre>
       *
       * <code>string method_name = 3;</code>
       */
      java.lang.String getMethodName();
      /**
       * <pre>
       * Extensible method_name information enabling third-party users to mark a
       * SignatureDef as supporting a particular method. This enables producers and
       * consumers of SignatureDefs, e.g. a model definition library and a serving
       * library to have a clear hand-off regarding the semantics of a computation.
       * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
       * method_name. This is commonly used to support multi-headed computation,
       * where a single graph computation may return multiple results.
       * </pre>
       *
       * <code>string method_name = 3;</code>
       */
      com.google.protobuf.ByteString
          getMethodNameBytes();
    }
    /**
     * <pre>
     * SignatureDef defines the signature of a computation supported by a TensorFlow graph.
     * For example, a model with two loss computations, sharing a single input,
     * might have the following signature_def map.
     * Note that across the two SignatureDefs "loss_A" and "loss_B", the input key,
     * output key, and method_name are identical, and will be used by system(s) that
     * implement or rely upon this particular loss method. The output tensor names
     * differ, demonstrating how different outputs can exist for the same method.
     * signature_def {
     *   key: "loss_A"
     *   value {
     *     inputs {
     *       key: "input"
     *       value {
     *         name: "input:0"
     *         dtype: DT_STRING
     *         tensor_shape: ...
     *       }
     *     }
     *     outputs {
     *       key: "loss_output"
     *       value {
     *         name: "loss_output_A:0"
     *         dtype: DT_FLOAT
     *         tensor_shape: ...
     *       }
     *     }
     *   }
     *   ...
     *   method_name: "some/package/compute_loss"
     * }
     * signature_def {
     *   key: "loss_B"
     *   value {
     *     inputs {
     *       key: "input"
     *       value {
     *         name: "input:0"
     *         dtype: DT_STRING
     *         tensor_shape: ...
     *       }
     *     }
     *     outputs {
     *       key: "loss_output"
     *       value {
     *         name: "loss_output_B:0"
     *         dtype: DT_FLOAT
     *         tensor_shape: ...
     *       }
     *     }
     *   }
     *   ...
     *   method_name: "some/package/compute_loss"
     * }
     * </pre>
     *
     * Protobuf type {@code angel.SignatureDef}
     */
    public  static final class SignatureDef extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.SignatureDef)
        SignatureDefOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SignatureDef.newBuilder() to construct.
      private SignatureDef(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SignatureDef() {
        methodName_ = "";
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SignatureDef(
          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;
              default: {
                if (!parseUnknownFieldProto3(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  inputs_ = com.google.protobuf.MapField.newMapField(
                      InputsDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000001;
                }
                com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
                inputs__ = input.readMessage(
                    InputsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                inputs_.getMutableMap().put(
                    inputs__.getKey(), inputs__.getValue());
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  outputs_ = com.google.protobuf.MapField.newMapField(
                      OutputsDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000002;
                }
                com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
                outputs__ = input.readMessage(
                    OutputsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                outputs_.getMutableMap().put(
                    outputs__.getKey(), outputs__.getValue());
                break;
              }
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
  
                methodName_ = s;
                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 {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_SignatureDef_descriptor;
      }
  
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetInputs();
          case 2:
            return internalGetOutputs();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_SignatureDef_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef.class, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef.Builder.class);
      }
  
      private int bitField0_;
      public static final int INPUTS_FIELD_NUMBER = 1;
      private static final class InputsDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<
            java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> defaultEntry =
                com.google.protobuf.MapEntry
                .<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>newDefaultInstance(
                    com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_SignatureDef_InputsEntry_descriptor, 
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.MESSAGE,
                    com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.getDefaultInstance());
      }
      private com.google.protobuf.MapField<
          java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> inputs_;
      private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
      internalGetInputs() {
        if (inputs_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              InputsDefaultEntryHolder.defaultEntry);
        }
        return inputs_;
      }
  
      public int getInputsCount() {
        return internalGetInputs().getMap().size();
      }
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
  
      public boolean containsInputs(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetInputs().getMap().containsKey(key);
      }
      /**
       * Use {@link #getInputsMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> getInputs() {
        return getInputsMap();
      }
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
  
      public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> getInputsMap() {
        return internalGetInputs().getMap();
      }
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
  
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getInputsOrDefault(
          java.lang.String key,
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> map =
            internalGetInputs().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Named input parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
       */
  
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getInputsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> map =
            internalGetInputs().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
  
      public static final int OUTPUTS_FIELD_NUMBER = 2;
      private static final class OutputsDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<
            java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> defaultEntry =
                com.google.protobuf.MapEntry
                .<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>newDefaultInstance(
                    com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_SignatureDef_OutputsEntry_descriptor, 
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.MESSAGE,
                    com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.getDefaultInstance());
      }
      private com.google.protobuf.MapField<
          java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> outputs_;
      private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
      internalGetOutputs() {
        if (outputs_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              OutputsDefaultEntryHolder.defaultEntry);
        }
        return outputs_;
      }
  
      public int getOutputsCount() {
        return internalGetOutputs().getMap().size();
      }
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
  
      public boolean containsOutputs(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetOutputs().getMap().containsKey(key);
      }
      /**
       * Use {@link #getOutputsMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> getOutputs() {
        return getOutputsMap();
      }
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
  
      public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> getOutputsMap() {
        return internalGetOutputs().getMap();
      }
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
  
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getOutputsOrDefault(
          java.lang.String key,
          com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> map =
            internalGetOutputs().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Named output parameters.
       * </pre>
       *
       * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
       */
  
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getOutputsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> map =
            internalGetOutputs().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
  
      public static final int METHOD_NAME_FIELD_NUMBER = 3;
      private volatile java.lang.Object methodName_;
      /**
       * <pre>
       * Extensible method_name information enabling third-party users to mark a
       * SignatureDef as supporting a particular method. This enables producers and
       * consumers of SignatureDefs, e.g. a model definition library and a serving
       * library to have a clear hand-off regarding the semantics of a computation.
       * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
       * method_name. This is commonly used to support multi-headed computation,
       * where a single graph computation may return multiple results.
       * </pre>
       *
       * <code>string method_name = 3;</code>
       */
      public java.lang.String getMethodName() {
        java.lang.Object ref = methodName_;
        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();
          methodName_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * Extensible method_name information enabling third-party users to mark a
       * SignatureDef as supporting a particular method. This enables producers and
       * consumers of SignatureDefs, e.g. a model definition library and a serving
       * library to have a clear hand-off regarding the semantics of a computation.
       * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
       * method_name. This is commonly used to support multi-headed computation,
       * where a single graph computation may return multiple results.
       * </pre>
       *
       * <code>string method_name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getMethodNameBytes() {
        java.lang.Object ref = methodName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          methodName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        com.google.protobuf.GeneratedMessageV3
          .serializeStringMapTo(
            output,
            internalGetInputs(),
            InputsDefaultEntryHolder.defaultEntry,
            1);
        com.google.protobuf.GeneratedMessageV3
          .serializeStringMapTo(
            output,
            internalGetOutputs(),
            OutputsDefaultEntryHolder.defaultEntry,
            2);
        if (!getMethodNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, methodName_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        for (java.util.Map.Entry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> entry
             : internalGetInputs().getMap().entrySet()) {
          com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
          inputs__ = InputsDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, inputs__);
        }
        for (java.util.Map.Entry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> entry
             : internalGetOutputs().getMap().entrySet()) {
          com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
          outputs__ = OutputsDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(2, outputs__);
        }
        if (!getMethodNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, methodName_);
        }
        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 com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef)) {
          return super.equals(obj);
        }
        com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef other = (com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef) obj;
  
        boolean result = true;
        result = result && internalGetInputs().equals(
            other.internalGetInputs());
        result = result && internalGetOutputs().equals(
            other.internalGetOutputs());
        result = result && getMethodName()
            .equals(other.getMethodName());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (!internalGetInputs().getMap().isEmpty()) {
          hash = (37 * hash) + INPUTS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetInputs().hashCode();
        }
        if (!internalGetOutputs().getMap().isEmpty()) {
          hash = (37 * hash) + OUTPUTS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetOutputs().hashCode();
        }
        hash = (37 * hash) + METHOD_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getMethodName().hashCode();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef 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 com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef 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 com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      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>
       * SignatureDef defines the signature of a computation supported by a TensorFlow graph.
       * For example, a model with two loss computations, sharing a single input,
       * might have the following signature_def map.
       * Note that across the two SignatureDefs "loss_A" and "loss_B", the input key,
       * output key, and method_name are identical, and will be used by system(s) that
       * implement or rely upon this particular loss method. The output tensor names
       * differ, demonstrating how different outputs can exist for the same method.
       * signature_def {
       *   key: "loss_A"
       *   value {
       *     inputs {
       *       key: "input"
       *       value {
       *         name: "input:0"
       *         dtype: DT_STRING
       *         tensor_shape: ...
       *       }
       *     }
       *     outputs {
       *       key: "loss_output"
       *       value {
       *         name: "loss_output_A:0"
       *         dtype: DT_FLOAT
       *         tensor_shape: ...
       *       }
       *     }
       *   }
       *   ...
       *   method_name: "some/package/compute_loss"
       * }
       * signature_def {
       *   key: "loss_B"
       *   value {
       *     inputs {
       *       key: "input"
       *       value {
       *         name: "input:0"
       *         dtype: DT_STRING
       *         tensor_shape: ...
       *       }
       *     }
       *     outputs {
       *       key: "loss_output"
       *       value {
       *         name: "loss_output_B:0"
       *         dtype: DT_FLOAT
       *         tensor_shape: ...
       *       }
       *     }
       *   }
       *   ...
       *   method_name: "some/package/compute_loss"
       * }
       * </pre>
       *
       * Protobuf type {@code angel.SignatureDef}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.SignatureDef)
          com.tencent.angel.core.saver.MetaGraphProtos.SignatureDefOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_SignatureDef_descriptor;
        }
  
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
          switch (number) {
            case 1:
              return internalGetInputs();
            case 2:
              return internalGetOutputs();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMutableMapField(
            int number) {
          switch (number) {
            case 1:
              return internalGetMutableInputs();
            case 2:
              return internalGetMutableOutputs();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_SignatureDef_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef.class, com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef.Builder.class);
        }
  
        // Construct using com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          internalGetMutableInputs().clear();
          internalGetMutableOutputs().clear();
          methodName_ = "";
  
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_SignatureDef_descriptor;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getDefaultInstanceForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef.getDefaultInstance();
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef build() {
          com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef buildPartial() {
          com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef result = new com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          result.inputs_ = internalGetInputs();
          result.inputs_.makeImmutable();
          result.outputs_ = internalGetOutputs();
          result.outputs_.makeImmutable();
          result.methodName_ = methodName_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef) {
            return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef other) {
          if (other == com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef.getDefaultInstance()) return this;
          internalGetMutableInputs().mergeFrom(
              other.internalGetInputs());
          internalGetMutableOutputs().mergeFrom(
              other.internalGetOutputs());
          if (!other.getMethodName().isEmpty()) {
            methodName_ = other.methodName_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.google.protobuf.MapField<
            java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> inputs_;
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
        internalGetInputs() {
          if (inputs_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                InputsDefaultEntryHolder.defaultEntry);
          }
          return inputs_;
        }
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
        internalGetMutableInputs() {
          onChanged();;
          if (inputs_ == null) {
            inputs_ = com.google.protobuf.MapField.newMapField(
                InputsDefaultEntryHolder.defaultEntry);
          }
          if (!inputs_.isMutable()) {
            inputs_ = inputs_.copy();
          }
          return inputs_;
        }
  
        public int getInputsCount() {
          return internalGetInputs().getMap().size();
        }
        /**
         * <pre>
         * Named input parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
         */
  
        public boolean containsInputs(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          return internalGetInputs().getMap().containsKey(key);
        }
        /**
         * Use {@link #getInputsMap()} instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> getInputs() {
          return getInputsMap();
        }
        /**
         * <pre>
         * Named input parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
         */
  
        public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> getInputsMap() {
          return internalGetInputs().getMap();
        }
        /**
         * <pre>
         * Named input parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
         */
  
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getInputsOrDefault(
            java.lang.String key,
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo defaultValue) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> map =
              internalGetInputs().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <pre>
         * Named input parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
         */
  
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getInputsOrThrow(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> map =
              internalGetInputs().getMap();
          if (!map.containsKey(key)) {
            throw new java.lang.IllegalArgumentException();
          }
          return map.get(key);
        }
  
        public Builder clearInputs() {
          internalGetMutableInputs().getMutableMap()
              .clear();
          return this;
        }
        /**
         * <pre>
         * Named input parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
         */
  
        public Builder removeInputs(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          internalGetMutableInputs().getMutableMap()
              .remove(key);
          return this;
        }
        /**
         * Use alternate mutation accessors instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
        getMutableInputs() {
          return internalGetMutableInputs().getMutableMap();
        }
        /**
         * <pre>
         * Named input parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
         */
        public Builder putInputs(
            java.lang.String key,
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo value) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          if (value == null) { throw new java.lang.NullPointerException(); }
          internalGetMutableInputs().getMutableMap()
              .put(key, value);
          return this;
        }
        /**
         * <pre>
         * Named input parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; inputs = 1;</code>
         */
  
        public Builder putAllInputs(
            java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> values) {
          internalGetMutableInputs().getMutableMap()
              .putAll(values);
          return this;
        }
  
        private com.google.protobuf.MapField<
            java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> outputs_;
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
        internalGetOutputs() {
          if (outputs_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                OutputsDefaultEntryHolder.defaultEntry);
          }
          return outputs_;
        }
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
        internalGetMutableOutputs() {
          onChanged();;
          if (outputs_ == null) {
            outputs_ = com.google.protobuf.MapField.newMapField(
                OutputsDefaultEntryHolder.defaultEntry);
          }
          if (!outputs_.isMutable()) {
            outputs_ = outputs_.copy();
          }
          return outputs_;
        }
  
        public int getOutputsCount() {
          return internalGetOutputs().getMap().size();
        }
        /**
         * <pre>
         * Named output parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
         */
  
        public boolean containsOutputs(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          return internalGetOutputs().getMap().containsKey(key);
        }
        /**
         * Use {@link #getOutputsMap()} instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> getOutputs() {
          return getOutputsMap();
        }
        /**
         * <pre>
         * Named output parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
         */
  
        public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> getOutputsMap() {
          return internalGetOutputs().getMap();
        }
        /**
         * <pre>
         * Named output parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
         */
  
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getOutputsOrDefault(
            java.lang.String key,
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo defaultValue) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> map =
              internalGetOutputs().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <pre>
         * Named output parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
         */
  
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getOutputsOrThrow(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> map =
              internalGetOutputs().getMap();
          if (!map.containsKey(key)) {
            throw new java.lang.IllegalArgumentException();
          }
          return map.get(key);
        }
  
        public Builder clearOutputs() {
          internalGetMutableOutputs().getMutableMap()
              .clear();
          return this;
        }
        /**
         * <pre>
         * Named output parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
         */
  
        public Builder removeOutputs(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          internalGetMutableOutputs().getMutableMap()
              .remove(key);
          return this;
        }
        /**
         * Use alternate mutation accessors instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo>
        getMutableOutputs() {
          return internalGetMutableOutputs().getMutableMap();
        }
        /**
         * <pre>
         * Named output parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
         */
        public Builder putOutputs(
            java.lang.String key,
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo value) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          if (value == null) { throw new java.lang.NullPointerException(); }
          internalGetMutableOutputs().getMutableMap()
              .put(key, value);
          return this;
        }
        /**
         * <pre>
         * Named output parameters.
         * </pre>
         *
         * <code>map&lt;string, .angel.TensorInfo&gt; outputs = 2;</code>
         */
  
        public Builder putAllOutputs(
            java.util.Map<java.lang.String, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo> values) {
          internalGetMutableOutputs().getMutableMap()
              .putAll(values);
          return this;
        }
  
        private java.lang.Object methodName_ = "";
        /**
         * <pre>
         * Extensible method_name information enabling third-party users to mark a
         * SignatureDef as supporting a particular method. This enables producers and
         * consumers of SignatureDefs, e.g. a model definition library and a serving
         * library to have a clear hand-off regarding the semantics of a computation.
         * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
         * method_name. This is commonly used to support multi-headed computation,
         * where a single graph computation may return multiple results.
         * </pre>
         *
         * <code>string method_name = 3;</code>
         */
        public java.lang.String getMethodName() {
          java.lang.Object ref = methodName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            methodName_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Extensible method_name information enabling third-party users to mark a
         * SignatureDef as supporting a particular method. This enables producers and
         * consumers of SignatureDefs, e.g. a model definition library and a serving
         * library to have a clear hand-off regarding the semantics of a computation.
         * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
         * method_name. This is commonly used to support multi-headed computation,
         * where a single graph computation may return multiple results.
         * </pre>
         *
         * <code>string method_name = 3;</code>
         */
        public com.google.protobuf.ByteString
            getMethodNameBytes() {
          java.lang.Object ref = methodName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            methodName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Extensible method_name information enabling third-party users to mark a
         * SignatureDef as supporting a particular method. This enables producers and
         * consumers of SignatureDefs, e.g. a model definition library and a serving
         * library to have a clear hand-off regarding the semantics of a computation.
         * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
         * method_name. This is commonly used to support multi-headed computation,
         * where a single graph computation may return multiple results.
         * </pre>
         *
         * <code>string method_name = 3;</code>
         */
        public Builder setMethodName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    
          methodName_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Extensible method_name information enabling third-party users to mark a
         * SignatureDef as supporting a particular method. This enables producers and
         * consumers of SignatureDefs, e.g. a model definition library and a serving
         * library to have a clear hand-off regarding the semantics of a computation.
         * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
         * method_name. This is commonly used to support multi-headed computation,
         * where a single graph computation may return multiple results.
         * </pre>
         *
         * <code>string method_name = 3;</code>
         */
        public Builder clearMethodName() {
          
          methodName_ = getDefaultInstance().getMethodName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Extensible method_name information enabling third-party users to mark a
         * SignatureDef as supporting a particular method. This enables producers and
         * consumers of SignatureDefs, e.g. a model definition library and a serving
         * library to have a clear hand-off regarding the semantics of a computation.
         * Note that multiple SignatureDefs in a single MetaGraphDef may have the same
         * method_name. This is commonly used to support multi-headed computation,
         * where a single graph computation may return multiple results.
         * </pre>
         *
         * <code>string method_name = 3;</code>
         */
        public Builder setMethodNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
          
          methodName_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFieldsProto3(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:angel.SignatureDef)
      }
  
      // @@protoc_insertion_point(class_scope:angel.SignatureDef)
      private static final com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef();
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<SignatureDef>
          PARSER = new com.google.protobuf.AbstractParser<SignatureDef>() {
        public SignatureDef parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new SignatureDef(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<SignatureDef> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<SignatureDef> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.core.saver.MetaGraphProtos.SignatureDef getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface AssetFileDefOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.AssetFileDef)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       * The tensor to bind the asset filename to.
       * </pre>
       *
       * <code>.angel.TensorInfo tensor_info = 1;</code>
       */
      boolean hasTensorInfo();
      /**
       * <pre>
       * The tensor to bind the asset filename to.
       * </pre>
       *
       * <code>.angel.TensorInfo tensor_info = 1;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getTensorInfo();
      /**
       * <pre>
       * The tensor to bind the asset filename to.
       * </pre>
       *
       * <code>.angel.TensorInfo tensor_info = 1;</code>
       */
      com.tencent.angel.core.saver.MetaGraphProtos.TensorInfoOrBuilder getTensorInfoOrBuilder();
  
      /**
       * <pre>
       * The filename within an assets directory. Note: does not include the path
       * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
       * would be "vocab.txt".
       * </pre>
       *
       * <code>string filename = 2;</code>
       */
      java.lang.String getFilename();
      /**
       * <pre>
       * The filename within an assets directory. Note: does not include the path
       * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
       * would be "vocab.txt".
       * </pre>
       *
       * <code>string filename = 2;</code>
       */
      com.google.protobuf.ByteString
          getFilenameBytes();
    }
    /**
     * <pre>
     * An asset file def for a single file or a set of sharded files with the same
     * name.
     * </pre>
     *
     * Protobuf type {@code angel.AssetFileDef}
     */
    public  static final class AssetFileDef extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.AssetFileDef)
        AssetFileDefOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use AssetFileDef.newBuilder() to construct.
      private AssetFileDef(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private AssetFileDef() {
        filename_ = "";
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private AssetFileDef(
          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;
              default: {
                if (!parseUnknownFieldProto3(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.Builder subBuilder = null;
                if (tensorInfo_ != null) {
                  subBuilder = tensorInfo_.toBuilder();
                }
                tensorInfo_ = input.readMessage(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(tensorInfo_);
                  tensorInfo_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
  
                filename_ = s;
                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 {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_AssetFileDef_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_AssetFileDef_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.class, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder.class);
      }
  
      public static final int TENSOR_INFO_FIELD_NUMBER = 1;
      private com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo tensorInfo_;
      /**
       * <pre>
       * The tensor to bind the asset filename to.
       * </pre>
       *
       * <code>.angel.TensorInfo tensor_info = 1;</code>
       */
      public boolean hasTensorInfo() {
        return tensorInfo_ != null;
      }
      /**
       * <pre>
       * The tensor to bind the asset filename to.
       * </pre>
       *
       * <code>.angel.TensorInfo tensor_info = 1;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getTensorInfo() {
        return tensorInfo_ == null ? com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.getDefaultInstance() : tensorInfo_;
      }
      /**
       * <pre>
       * The tensor to bind the asset filename to.
       * </pre>
       *
       * <code>.angel.TensorInfo tensor_info = 1;</code>
       */
      public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfoOrBuilder getTensorInfoOrBuilder() {
        return getTensorInfo();
      }
  
      public static final int FILENAME_FIELD_NUMBER = 2;
      private volatile java.lang.Object filename_;
      /**
       * <pre>
       * The filename within an assets directory. Note: does not include the path
       * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
       * would be "vocab.txt".
       * </pre>
       *
       * <code>string filename = 2;</code>
       */
      public java.lang.String getFilename() {
        java.lang.Object ref = filename_;
        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();
          filename_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * The filename within an assets directory. Note: does not include the path
       * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
       * would be "vocab.txt".
       * </pre>
       *
       * <code>string filename = 2;</code>
       */
      public com.google.protobuf.ByteString
          getFilenameBytes() {
        java.lang.Object ref = filename_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          filename_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (tensorInfo_ != null) {
          output.writeMessage(1, getTensorInfo());
        }
        if (!getFilenameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, filename_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (tensorInfo_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getTensorInfo());
        }
        if (!getFilenameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, filename_);
        }
        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 com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef)) {
          return super.equals(obj);
        }
        com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef other = (com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef) obj;
  
        boolean result = true;
        result = result && (hasTensorInfo() == other.hasTensorInfo());
        if (hasTensorInfo()) {
          result = result && getTensorInfo()
              .equals(other.getTensorInfo());
        }
        result = result && getFilename()
            .equals(other.getFilename());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasTensorInfo()) {
          hash = (37 * hash) + TENSOR_INFO_FIELD_NUMBER;
          hash = (53 * hash) + getTensorInfo().hashCode();
        }
        hash = (37 * hash) + FILENAME_FIELD_NUMBER;
        hash = (53 * hash) + getFilename().hashCode();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef 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 com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef 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 com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      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>
       * An asset file def for a single file or a set of sharded files with the same
       * name.
       * </pre>
       *
       * Protobuf type {@code angel.AssetFileDef}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.AssetFileDef)
          com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDefOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_AssetFileDef_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_AssetFileDef_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.class, com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.Builder.class);
        }
  
        // Construct using com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          if (tensorInfoBuilder_ == null) {
            tensorInfo_ = null;
          } else {
            tensorInfo_ = null;
            tensorInfoBuilder_ = null;
          }
          filename_ = "";
  
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.internal_static_angel_AssetFileDef_descriptor;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef getDefaultInstanceForType() {
          return com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.getDefaultInstance();
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef build() {
          com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef buildPartial() {
          com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef result = new com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef(this);
          if (tensorInfoBuilder_ == null) {
            result.tensorInfo_ = tensorInfo_;
          } else {
            result.tensorInfo_ = tensorInfoBuilder_.build();
          }
          result.filename_ = filename_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef) {
            return mergeFrom((com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef other) {
          if (other == com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef.getDefaultInstance()) return this;
          if (other.hasTensorInfo()) {
            mergeTensorInfo(other.getTensorInfo());
          }
          if (!other.getFilename().isEmpty()) {
            filename_ = other.filename_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
  
        private com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo tensorInfo_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.Builder, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfoOrBuilder> tensorInfoBuilder_;
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        public boolean hasTensorInfo() {
          return tensorInfoBuilder_ != null || tensorInfo_ != null;
        }
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo getTensorInfo() {
          if (tensorInfoBuilder_ == null) {
            return tensorInfo_ == null ? com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.getDefaultInstance() : tensorInfo_;
          } else {
            return tensorInfoBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        public Builder setTensorInfo(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo value) {
          if (tensorInfoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            tensorInfo_ = value;
            onChanged();
          } else {
            tensorInfoBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        public Builder setTensorInfo(
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.Builder builderForValue) {
          if (tensorInfoBuilder_ == null) {
            tensorInfo_ = builderForValue.build();
            onChanged();
          } else {
            tensorInfoBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        public Builder mergeTensorInfo(com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo value) {
          if (tensorInfoBuilder_ == null) {
            if (tensorInfo_ != null) {
              tensorInfo_ =
                com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.newBuilder(tensorInfo_).mergeFrom(value).buildPartial();
            } else {
              tensorInfo_ = value;
            }
            onChanged();
          } else {
            tensorInfoBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        public Builder clearTensorInfo() {
          if (tensorInfoBuilder_ == null) {
            tensorInfo_ = null;
            onChanged();
          } else {
            tensorInfo_ = null;
            tensorInfoBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.Builder getTensorInfoBuilder() {
          
          onChanged();
          return getTensorInfoFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        public com.tencent.angel.core.saver.MetaGraphProtos.TensorInfoOrBuilder getTensorInfoOrBuilder() {
          if (tensorInfoBuilder_ != null) {
            return tensorInfoBuilder_.getMessageOrBuilder();
          } else {
            return tensorInfo_ == null ?
                com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.getDefaultInstance() : tensorInfo_;
          }
        }
        /**
         * <pre>
         * The tensor to bind the asset filename to.
         * </pre>
         *
         * <code>.angel.TensorInfo tensor_info = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.Builder, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfoOrBuilder> 
            getTensorInfoFieldBuilder() {
          if (tensorInfoBuilder_ == null) {
            tensorInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfo.Builder, com.tencent.angel.core.saver.MetaGraphProtos.TensorInfoOrBuilder>(
                    getTensorInfo(),
                    getParentForChildren(),
                    isClean());
            tensorInfo_ = null;
          }
          return tensorInfoBuilder_;
        }
  
        private java.lang.Object filename_ = "";
        /**
         * <pre>
         * The filename within an assets directory. Note: does not include the path
         * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
         * would be "vocab.txt".
         * </pre>
         *
         * <code>string filename = 2;</code>
         */
        public java.lang.String getFilename() {
          java.lang.Object ref = filename_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            filename_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The filename within an assets directory. Note: does not include the path
         * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
         * would be "vocab.txt".
         * </pre>
         *
         * <code>string filename = 2;</code>
         */
        public com.google.protobuf.ByteString
            getFilenameBytes() {
          java.lang.Object ref = filename_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            filename_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The filename within an assets directory. Note: does not include the path
         * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
         * would be "vocab.txt".
         * </pre>
         *
         * <code>string filename = 2;</code>
         */
        public Builder setFilename(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    
          filename_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The filename within an assets directory. Note: does not include the path
         * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
         * would be "vocab.txt".
         * </pre>
         *
         * <code>string filename = 2;</code>
         */
        public Builder clearFilename() {
          
          filename_ = getDefaultInstance().getFilename();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The filename within an assets directory. Note: does not include the path
         * prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
         * would be "vocab.txt".
         * </pre>
         *
         * <code>string filename = 2;</code>
         */
        public Builder setFilenameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
          
          filename_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFieldsProto3(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:angel.AssetFileDef)
      }
  
      // @@protoc_insertion_point(class_scope:angel.AssetFileDef)
      private static final com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef();
      }
  
      public static com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<AssetFileDef>
          PARSER = new com.google.protobuf.AbstractParser<AssetFileDef>() {
        public AssetFileDef parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new AssetFileDef(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<AssetFileDef> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<AssetFileDef> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.core.saver.MetaGraphProtos.AssetFileDef getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_MetaGraphDef_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_MetaGraphDef_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_MetaGraphDef_MetaInfoDef_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_MetaGraphDef_MetaInfoDef_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_MetaGraphDef_CollectionDefEntry_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_MetaGraphDef_CollectionDefEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_MetaGraphDef_SignatureDefEntry_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_MetaGraphDef_SignatureDefEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CollectionDef_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CollectionDef_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CollectionDef_NodeList_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CollectionDef_NodeList_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CollectionDef_BytesList_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CollectionDef_BytesList_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CollectionDef_Int64List_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CollectionDef_Int64List_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CollectionDef_FloatList_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CollectionDef_FloatList_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CollectionDef_AnyList_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CollectionDef_AnyList_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_TensorInfo_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_TensorInfo_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_TensorInfo_CooSparse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_TensorInfo_CooSparse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_SignatureDef_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_SignatureDef_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_SignatureDef_InputsEntry_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_SignatureDef_InputsEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_SignatureDef_OutputsEntry_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_SignatureDef_OutputsEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_AssetFileDef_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_AssetFileDef_fieldAccessorTable;
  
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static  com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      java.lang.String[] descriptorData = {
        "\n\033core/saver/meta_graph.proto\022\005angel\032\031go" +
        "ogle/protobuf/any.proto\032\026core/graph/grap" +
        "h.proto\032\027core/graph/op_def.proto\032\036apis/c" +
        "ommon/tensor_shape.proto\032\027apis/common/ty" +
        "pes.proto\032\026core/saver/saver.proto\"\266\005\n\014Me" +
        "taGraphDef\0226\n\rmeta_info_def\030\001 \001(\0132\037.ange" +
        "l.MetaGraphDef.MetaInfoDef\022\"\n\tgraph_def\030" +
        "\002 \001(\0132\017.angel.GraphDef\022\"\n\tsaver_def\030\003 \001(" +
        "\0132\017.angel.SaverDef\022>\n\016collection_def\030\004 \003" +
        "(\0132&.angel.MetaGraphDef.CollectionDefEnt" +
        "ry\022<\n\rsignature_def\030\005 \003(\0132%.angel.MetaGr" +
        "aphDef.SignatureDefEntry\022+\n\016asset_file_d" +
        "ef\030\006 \003(\0132\023.angel.AssetFileDef\032\344\001\n\013MetaIn" +
        "foDef\022\032\n\022meta_graph_version\030\001 \001(\t\022\'\n\020str" +
        "ipped_op_list\030\002 \001(\0132\r.angel.OpList\022&\n\010an" +
        "y_info\030\003 \001(\0132\024.google.protobuf.Any\022\014\n\004ta" +
        "gs\030\004 \003(\t\022\032\n\022tensorflow_version\030\005 \001(\t\022\036\n\026" +
        "tensorflow_git_version\030\006 \001(\t\022\036\n\026stripped" +
        "_default_attrs\030\007 \001(\010\032J\n\022CollectionDefEnt" +
        "ry\022\013\n\003key\030\001 \001(\t\022#\n\005value\030\002 \001(\0132\024.angel.C" +
        "ollectionDef:\0028\001\032H\n\021SignatureDefEntry\022\013\n" +
        "\003key\030\001 \001(\t\022\"\n\005value\030\002 \001(\0132\023.angel.Signat" +
        "ureDef:\0028\001\"\306\003\n\rCollectionDef\0222\n\tnode_lis" +
        "t\030\001 \001(\0132\035.angel.CollectionDef.NodeListH\000" +
        "\0224\n\nbytes_list\030\002 \001(\0132\036.angel.CollectionD" +
        "ef.BytesListH\000\0224\n\nint64_list\030\003 \001(\0132\036.ang" +
        "el.CollectionDef.Int64ListH\000\0224\n\nfloat_li" +
        "st\030\004 \001(\0132\036.angel.CollectionDef.FloatList" +
        "H\000\0220\n\010any_list\030\005 \001(\0132\034.angel.CollectionD" +
        "ef.AnyListH\000\032\031\n\010NodeList\022\r\n\005value\030\001 \003(\t\032" +
        "\032\n\tBytesList\022\r\n\005value\030\001 \003(\014\032\036\n\tInt64List" +
        "\022\021\n\005value\030\001 \003(\003B\002\020\001\032\036\n\tFloatList\022\021\n\005valu" +
        "e\030\001 \003(\002B\002\020\001\032.\n\007AnyList\022#\n\005value\030\001 \003(\0132\024." +
        "google.protobuf.AnyB\006\n\004kind\"\221\002\n\nTensorIn" +
        "fo\022\016\n\004name\030\001 \001(\tH\000\0221\n\ncoo_sparse\030\004 \001(\0132\033" +
        ".angel.TensorInfo.CooSparseH\000\022\036\n\005dtype\030\002" +
        " \001(\0162\017.angel.DataType\022-\n\014tensor_shape\030\003 " +
        "\001(\0132\027.angel.TensorShapeProto\032e\n\tCooSpars" +
        "e\022\032\n\022values_tensor_name\030\001 \001(\t\022\033\n\023indices" +
        "_tensor_name\030\002 \001(\t\022\037\n\027dense_shape_tensor" +
        "_name\030\003 \001(\tB\n\n\010encoding\"\214\002\n\014SignatureDef" +
        "\022/\n\006inputs\030\001 \003(\0132\037.angel.SignatureDef.In" +
        "putsEntry\0221\n\007outputs\030\002 \003(\0132 .angel.Signa" +
        "tureDef.OutputsEntry\022\023\n\013method_name\030\003 \001(" +
        "\t\032@\n\013InputsEntry\022\013\n\003key\030\001 \001(\t\022 \n\005value\030\002" +
        " \001(\0132\021.angel.TensorInfo:\0028\001\032A\n\014OutputsEn" +
        "try\022\013\n\003key\030\001 \001(\t\022 \n\005value\030\002 \001(\0132\021.angel." +
        "TensorInfo:\0028\001\"H\n\014AssetFileDef\022&\n\013tensor" +
        "_info\030\001 \001(\0132\021.angel.TensorInfo\022\020\n\010filena" +
        "me\030\002 \001(\tB1\n\034com.tencent.angel.core.saver" +
        "B\017MetaGraphProtosP\000b\006proto3"
      };
      com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
          new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
            public com.google.protobuf.ExtensionRegistry assignDescriptors(
                com.google.protobuf.Descriptors.FileDescriptor root) {
              descriptor = root;
              return null;
            }
          };
      com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            com.google.protobuf.AnyProto.getDescriptor(),
            com.tencent.angel.core.graph.GraphProtos.getDescriptor(),
            com.tencent.angel.core.graph.OpDefProtos.getDescriptor(),
            com.tencent.angel.serving.apis.common.TensorShapeProtos.getDescriptor(),
            com.tencent.angel.serving.apis.common.TypesProtos.getDescriptor(),
            com.tencent.angel.core.saver.SaverProtos.getDescriptor(),
          }, assigner);
      internal_static_angel_MetaGraphDef_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_angel_MetaGraphDef_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_MetaGraphDef_descriptor,
          new java.lang.String[] { "MetaInfoDef", "GraphDef", "SaverDef", "CollectionDef", "SignatureDef", "AssetFileDef", });
      internal_static_angel_MetaGraphDef_MetaInfoDef_descriptor =
        internal_static_angel_MetaGraphDef_descriptor.getNestedTypes().get(0);
      internal_static_angel_MetaGraphDef_MetaInfoDef_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_MetaGraphDef_MetaInfoDef_descriptor,
          new java.lang.String[] { "MetaGraphVersion", "StrippedOpList", "AnyInfo", "Tags", "TensorflowVersion", "TensorflowGitVersion", "StrippedDefaultAttrs", });
      internal_static_angel_MetaGraphDef_CollectionDefEntry_descriptor =
        internal_static_angel_MetaGraphDef_descriptor.getNestedTypes().get(1);
      internal_static_angel_MetaGraphDef_CollectionDefEntry_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_MetaGraphDef_CollectionDefEntry_descriptor,
          new java.lang.String[] { "Key", "Value", });
      internal_static_angel_MetaGraphDef_SignatureDefEntry_descriptor =
        internal_static_angel_MetaGraphDef_descriptor.getNestedTypes().get(2);
      internal_static_angel_MetaGraphDef_SignatureDefEntry_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_MetaGraphDef_SignatureDefEntry_descriptor,
          new java.lang.String[] { "Key", "Value", });
      internal_static_angel_CollectionDef_descriptor =
        getDescriptor().getMessageTypes().get(1);
      internal_static_angel_CollectionDef_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CollectionDef_descriptor,
          new java.lang.String[] { "NodeList", "BytesList", "Int64List", "FloatList", "AnyList", "Kind", });
      internal_static_angel_CollectionDef_NodeList_descriptor =
        internal_static_angel_CollectionDef_descriptor.getNestedTypes().get(0);
      internal_static_angel_CollectionDef_NodeList_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CollectionDef_NodeList_descriptor,
          new java.lang.String[] { "Value", });
      internal_static_angel_CollectionDef_BytesList_descriptor =
        internal_static_angel_CollectionDef_descriptor.getNestedTypes().get(1);
      internal_static_angel_CollectionDef_BytesList_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CollectionDef_BytesList_descriptor,
          new java.lang.String[] { "Value", });
      internal_static_angel_CollectionDef_Int64List_descriptor =
        internal_static_angel_CollectionDef_descriptor.getNestedTypes().get(2);
      internal_static_angel_CollectionDef_Int64List_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CollectionDef_Int64List_descriptor,
          new java.lang.String[] { "Value", });
      internal_static_angel_CollectionDef_FloatList_descriptor =
        internal_static_angel_CollectionDef_descriptor.getNestedTypes().get(3);
      internal_static_angel_CollectionDef_FloatList_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CollectionDef_FloatList_descriptor,
          new java.lang.String[] { "Value", });
      internal_static_angel_CollectionDef_AnyList_descriptor =
        internal_static_angel_CollectionDef_descriptor.getNestedTypes().get(4);
      internal_static_angel_CollectionDef_AnyList_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CollectionDef_AnyList_descriptor,
          new java.lang.String[] { "Value", });
      internal_static_angel_TensorInfo_descriptor =
        getDescriptor().getMessageTypes().get(2);
      internal_static_angel_TensorInfo_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_TensorInfo_descriptor,
          new java.lang.String[] { "Name", "CooSparse", "Dtype", "TensorShape", "Encoding", });
      internal_static_angel_TensorInfo_CooSparse_descriptor =
        internal_static_angel_TensorInfo_descriptor.getNestedTypes().get(0);
      internal_static_angel_TensorInfo_CooSparse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_TensorInfo_CooSparse_descriptor,
          new java.lang.String[] { "ValuesTensorName", "IndicesTensorName", "DenseShapeTensorName", });
      internal_static_angel_SignatureDef_descriptor =
        getDescriptor().getMessageTypes().get(3);
      internal_static_angel_SignatureDef_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_SignatureDef_descriptor,
          new java.lang.String[] { "Inputs", "Outputs", "MethodName", });
      internal_static_angel_SignatureDef_InputsEntry_descriptor =
        internal_static_angel_SignatureDef_descriptor.getNestedTypes().get(0);
      internal_static_angel_SignatureDef_InputsEntry_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_SignatureDef_InputsEntry_descriptor,
          new java.lang.String[] { "Key", "Value", });
      internal_static_angel_SignatureDef_OutputsEntry_descriptor =
        internal_static_angel_SignatureDef_descriptor.getNestedTypes().get(1);
      internal_static_angel_SignatureDef_OutputsEntry_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_SignatureDef_OutputsEntry_descriptor,
          new java.lang.String[] { "Key", "Value", });
      internal_static_angel_AssetFileDef_descriptor =
        getDescriptor().getMessageTypes().get(4);
      internal_static_angel_AssetFileDef_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_AssetFileDef_descriptor,
          new java.lang.String[] { "TensorInfo", "Filename", });
      com.google.protobuf.AnyProto.getDescriptor();
      com.tencent.angel.core.graph.GraphProtos.getDescriptor();
      com.tencent.angel.core.graph.OpDefProtos.getDescriptor();
      com.tencent.angel.serving.apis.common.TensorShapeProtos.getDescriptor();
      com.tencent.angel.serving.apis.common.TypesProtos.getDescriptor();
      com.tencent.angel.core.saver.SaverProtos.getDescriptor();
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  