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/graph/cost_graph.proto
  
  package com.tencent.angel.core.graph;
  
  public final class CostGraphProtos {
    private CostGraphProtos() {}
    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 CostGraphDefOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.CostGraphDef)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node> 
          getNodeList();
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node getNode(int index);
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      int getNodeCount();
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder> 
          getNodeOrBuilderList();
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder getNodeOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code angel.CostGraphDef}
     */
    public  static final class CostGraphDef extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.CostGraphDef)
        CostGraphDefOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use CostGraphDef.newBuilder() to construct.
      private CostGraphDef(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private CostGraphDef() {
        node_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private CostGraphDef(
          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)) {
                  node_ = new java.util.ArrayList<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node>();
                  mutable_bitField0_ |= 0x00000001;
                }
                node_.add(
                    input.readMessage(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.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)) {
            node_ = java.util.Collections.unmodifiableList(node_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.class, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Builder.class);
      }
  
      public interface NodeOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.CostGraphDef.Node)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <pre>
         * The name of the node. Names are globally unique.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        java.lang.String getName();
        /**
         * <pre>
         * The name of the node. Names are globally unique.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        com.google.protobuf.ByteString
            getNameBytes();
  
        /**
         * <pre>
         * The device of the node. Can be empty if the node is mapped to the
         * default partition or partitioning hasn't been run yet.
         * </pre>
         *
         * <code>string device = 2;</code>
         */
        java.lang.String getDevice();
        /**
         * <pre>
         * The device of the node. Can be empty if the node is mapped to the
         * default partition or partitioning hasn't been run yet.
         * </pre>
         *
         * <code>string device = 2;</code>
         */
        com.google.protobuf.ByteString
            getDeviceBytes();
  
        /**
         * <pre>
         * The id of the node. Node ids are only unique inside a partition.
         * </pre>
         *
         * <code>int32 id = 3;</code>
         */
        int getId();
  
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo> 
            getInputInfoList();
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo getInputInfo(int index);
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        int getInputInfoCount();
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder> 
            getInputInfoOrBuilderList();
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder getInputInfoOrBuilder(
            int index);
  
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo> 
            getOutputInfoList();
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo getOutputInfo(int index);
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        int getOutputInfoCount();
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder> 
            getOutputInfoOrBuilderList();
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder getOutputInfoOrBuilder(
            int index);
  
        /**
         * <pre>
         * Temporary memory used by this node.
         * </pre>
         *
         * <code>int64 temporary_memory_size = 6;</code>
         */
        long getTemporaryMemorySize();
  
        /**
         * <pre>
         * Persistent memory used by this node.
         * </pre>
         *
         * <code>int64 persistent_memory_size = 12;</code>
         */
        long getPersistentMemorySize();
  
        /**
         * <code>int64 host_temp_memory_size = 10 [deprecated = true];</code>
         */
        @java.lang.Deprecated long getHostTempMemorySize();
  
        /**
         * <code>int64 device_temp_memory_size = 11 [deprecated = true];</code>
         */
        @java.lang.Deprecated long getDeviceTempMemorySize();
  
        /**
         * <code>int64 device_persistent_memory_size = 16 [deprecated = true];</code>
         */
        @java.lang.Deprecated long getDevicePersistentMemorySize();
  
        /**
         * <pre>
         * Estimate of the computational cost of this node, in microseconds.
         * </pre>
         *
         * <code>int64 compute_cost = 9;</code>
         */
        long getComputeCost();
  
        /**
         * <pre>
         * Analytical estimate of the computational cost of this node, in
         * microseconds.
         * </pre>
         *
         * <code>int64 compute_time = 14;</code>
         */
        long getComputeTime();
  
        /**
         * <pre>
         * Analytical estimate of the memory access cost of this node, in
         * microseconds.
         * </pre>
         *
         * <code>int64 memory_time = 15;</code>
         */
        long getMemoryTime();
  
        /**
         * <pre>
         * If true, the output is permanent: it can't be discarded, because this
         * node is part of the "final output". Nodes may depend on final nodes.
         * </pre>
         *
         * <code>bool is_final = 7;</code>
         */
        boolean getIsFinal();
  
        /**
         * <pre>
         * Ids of the control inputs for this node.
         * </pre>
         *
         * <code>repeated int32 control_input = 8;</code>
         */
        java.util.List<java.lang.Integer> getControlInputList();
        /**
         * <pre>
         * Ids of the control inputs for this node.
         * </pre>
         *
         * <code>repeated int32 control_input = 8;</code>
         */
        int getControlInputCount();
        /**
         * <pre>
         * Ids of the control inputs for this node.
         * </pre>
         *
         * <code>repeated int32 control_input = 8;</code>
         */
        int getControlInput(int index);
  
        /**
         * <pre>
         * Are the costs inaccurate?
         * </pre>
         *
         * <code>bool inaccurate = 17;</code>
         */
        boolean getInaccurate();
      }
      /**
       * Protobuf type {@code angel.CostGraphDef.Node}
       */
      public  static final class Node extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.CostGraphDef.Node)
          NodeOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use Node.newBuilder() to construct.
        private Node(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Node() {
          name_ = "";
          device_ = "";
          id_ = 0;
          inputInfo_ = java.util.Collections.emptyList();
          outputInfo_ = java.util.Collections.emptyList();
          temporaryMemorySize_ = 0L;
          persistentMemorySize_ = 0L;
          hostTempMemorySize_ = 0L;
          deviceTempMemorySize_ = 0L;
          devicePersistentMemorySize_ = 0L;
          computeCost_ = 0L;
          computeTime_ = 0L;
          memoryTime_ = 0L;
          isFinal_ = false;
          controlInput_ = java.util.Collections.emptyList();
          inaccurate_ = false;
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private Node(
            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();
  
                  name_ = s;
                  break;
                }
                case 18: {
                  java.lang.String s = input.readStringRequireUtf8();
  
                  device_ = s;
                  break;
                }
                case 24: {
  
                  id_ = input.readInt32();
                  break;
                }
                case 34: {
                  if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                    inputInfo_ = new java.util.ArrayList<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo>();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  inputInfo_.add(
                      input.readMessage(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.parser(), extensionRegistry));
                  break;
                }
                case 42: {
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    outputInfo_ = new java.util.ArrayList<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo>();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  outputInfo_.add(
                      input.readMessage(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.parser(), extensionRegistry));
                  break;
                }
                case 48: {
  
                  temporaryMemorySize_ = input.readInt64();
                  break;
                }
                case 56: {
  
                  isFinal_ = input.readBool();
                  break;
                }
                case 64: {
                  if (!((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
                    controlInput_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00004000;
                  }
                  controlInput_.add(input.readInt32());
                  break;
                }
                case 66: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00004000) == 0x00004000) && input.getBytesUntilLimit() > 0) {
                    controlInput_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00004000;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    controlInput_.add(input.readInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 72: {
  
                  computeCost_ = input.readInt64();
                  break;
                }
                case 80: {
  
                  hostTempMemorySize_ = input.readInt64();
                  break;
                }
                case 88: {
  
                  deviceTempMemorySize_ = input.readInt64();
                  break;
                }
                case 96: {
  
                  persistentMemorySize_ = input.readInt64();
                  break;
                }
                case 112: {
  
                  computeTime_ = input.readInt64();
                  break;
                }
                case 120: {
  
                  memoryTime_ = input.readInt64();
                  break;
                }
                case 128: {
  
                  devicePersistentMemorySize_ = input.readInt64();
                  break;
                }
                case 136: {
  
                  inaccurate_ = 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)) {
              inputInfo_ = java.util.Collections.unmodifiableList(inputInfo_);
            }
            if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
              outputInfo_ = java.util.Collections.unmodifiableList(outputInfo_);
            }
            if (((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
              controlInput_ = java.util.Collections.unmodifiableList(controlInput_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.class, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder.class);
        }
  
        public interface InputInfoOrBuilder extends
            // @@protoc_insertion_point(interface_extends:angel.CostGraphDef.Node.InputInfo)
            com.google.protobuf.MessageOrBuilder {
  
          /**
           * <code>int32 preceding_node = 1;</code>
           */
          int getPrecedingNode();
  
          /**
           * <code>int32 preceding_port = 2;</code>
           */
          int getPrecedingPort();
        }
        /**
         * <pre>
         * Inputs of this node. They must be executed before this node can be
         * executed. An input is a particular output of another node, specified
         * by the node id and the output index.
         * </pre>
         *
         * Protobuf type {@code angel.CostGraphDef.Node.InputInfo}
         */
        public  static final class InputInfo extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:angel.CostGraphDef.Node.InputInfo)
            InputInfoOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use InputInfo.newBuilder() to construct.
          private InputInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private InputInfo() {
            precedingNode_ = 0;
            precedingPort_ = 0;
          }
  
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private InputInfo(
              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: {
  
                    precedingNode_ = input.readInt32();
                    break;
                  }
                  case 16: {
  
                    precedingPort_ = input.readInt32();
                    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.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_InputInfo_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_InputInfo_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.class, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder.class);
          }
  
          public static final int PRECEDING_NODE_FIELD_NUMBER = 1;
          private int precedingNode_;
          /**
           * <code>int32 preceding_node = 1;</code>
           */
          public int getPrecedingNode() {
            return precedingNode_;
          }
  
          public static final int PRECEDING_PORT_FIELD_NUMBER = 2;
          private int precedingPort_;
          /**
           * <code>int32 preceding_port = 2;</code>
           */
          public int getPrecedingPort() {
            return precedingPort_;
          }
  
          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 (precedingNode_ != 0) {
              output.writeInt32(1, precedingNode_);
            }
            if (precedingPort_ != 0) {
              output.writeInt32(2, precedingPort_);
            }
            unknownFields.writeTo(output);
          }
  
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;
  
            size = 0;
            if (precedingNode_ != 0) {
              size += com.google.protobuf.CodedOutputStream
                .computeInt32Size(1, precedingNode_);
            }
            if (precedingPort_ != 0) {
              size += com.google.protobuf.CodedOutputStream
                .computeInt32Size(2, precedingPort_);
            }
            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.graph.CostGraphProtos.CostGraphDef.Node.InputInfo)) {
              return super.equals(obj);
            }
            com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo other = (com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo) obj;
  
            boolean result = true;
            result = result && (getPrecedingNode()
                == other.getPrecedingNode());
            result = result && (getPrecedingPort()
                == other.getPrecedingPort());
            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) + PRECEDING_NODE_FIELD_NUMBER;
            hash = (53 * hash) + getPrecedingNode();
            hash = (37 * hash) + PRECEDING_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getPrecedingPort();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }
  
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.InputInfo parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.InputInfo parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.InputInfo parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.InputInfo parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.InputInfo 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>
           * Inputs of this node. They must be executed before this node can be
           * executed. An input is a particular output of another node, specified
           * by the node id and the output index.
           * </pre>
           *
           * Protobuf type {@code angel.CostGraphDef.Node.InputInfo}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:angel.CostGraphDef.Node.InputInfo)
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_InputInfo_descriptor;
            }
  
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_InputInfo_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.class, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder.class);
            }
  
            // Construct using com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.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();
              precedingNode_ = 0;
  
              precedingPort_ = 0;
  
              return this;
            }
  
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_InputInfo_descriptor;
            }
  
            public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo getDefaultInstanceForType() {
              return com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.getDefaultInstance();
            }
  
            public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo build() {
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }
  
            public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo buildPartial() {
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo result = new com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo(this);
              result.precedingNode_ = precedingNode_;
              result.precedingPort_ = precedingPort_;
              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.graph.CostGraphProtos.CostGraphDef.Node.InputInfo) {
                return mergeFrom((com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }
  
            public Builder mergeFrom(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo other) {
              if (other == com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.getDefaultInstance()) return this;
              if (other.getPrecedingNode() != 0) {
                setPrecedingNode(other.getPrecedingNode());
              }
              if (other.getPrecedingPort() != 0) {
                setPrecedingPort(other.getPrecedingPort());
              }
              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.graph.CostGraphProtos.CostGraphDef.Node.InputInfo parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
  
            private int precedingNode_ ;
            /**
             * <code>int32 preceding_node = 1;</code>
             */
            public int getPrecedingNode() {
              return precedingNode_;
            }
            /**
             * <code>int32 preceding_node = 1;</code>
             */
            public Builder setPrecedingNode(int value) {
              
              precedingNode_ = value;
              onChanged();
              return this;
            }
            /**
             * <code>int32 preceding_node = 1;</code>
             */
            public Builder clearPrecedingNode() {
              
              precedingNode_ = 0;
              onChanged();
              return this;
            }
  
            private int precedingPort_ ;
            /**
             * <code>int32 preceding_port = 2;</code>
             */
            public int getPrecedingPort() {
              return precedingPort_;
            }
            /**
             * <code>int32 preceding_port = 2;</code>
             */
            public Builder setPrecedingPort(int value) {
              
              precedingPort_ = value;
              onChanged();
              return this;
            }
            /**
             * <code>int32 preceding_port = 2;</code>
             */
            public Builder clearPrecedingPort() {
              
              precedingPort_ = 0;
              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.CostGraphDef.Node.InputInfo)
          }
  
          // @@protoc_insertion_point(class_scope:angel.CostGraphDef.Node.InputInfo)
          private static final com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo();
          }
  
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }
  
          private static final com.google.protobuf.Parser<InputInfo>
              PARSER = new com.google.protobuf.AbstractParser<InputInfo>() {
            public InputInfo parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new InputInfo(input, extensionRegistry);
            }
          };
  
          public static com.google.protobuf.Parser<InputInfo> parser() {
            return PARSER;
          }
  
          @java.lang.Override
          public com.google.protobuf.Parser<InputInfo> getParserForType() {
            return PARSER;
          }
  
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }
  
        }
  
        public interface OutputInfoOrBuilder extends
            // @@protoc_insertion_point(interface_extends:angel.CostGraphDef.Node.OutputInfo)
            com.google.protobuf.MessageOrBuilder {
  
          /**
           * <code>int64 size = 1;</code>
           */
          long getSize();
  
          /**
           * <pre>
           * If &gt;= 0, the output is an alias of an input. Note that an alias input
           * may itself be an alias. The algorithm will therefore need to follow
           * those pointers.
           * </pre>
           *
           * <code>int64 alias_input_port = 2;</code>
           */
          long getAliasInputPort();
  
          /**
           * <code>.angel.TensorShapeProto shape = 3;</code>
           */
          boolean hasShape();
          /**
           * <code>.angel.TensorShapeProto shape = 3;</code>
           */
          com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getShape();
          /**
           * <code>.angel.TensorShapeProto shape = 3;</code>
           */
          com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getShapeOrBuilder();
  
          /**
           * <code>.angel.DataType dtype = 4;</code>
           */
          int getDtypeValue();
          /**
           * <code>.angel.DataType dtype = 4;</code>
           */
          com.tencent.angel.serving.apis.common.TypesProtos.DataType getDtype();
        }
        /**
         * <pre>
         * Outputs of this node.
         * </pre>
         *
         * Protobuf type {@code angel.CostGraphDef.Node.OutputInfo}
         */
        public  static final class OutputInfo extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:angel.CostGraphDef.Node.OutputInfo)
            OutputInfoOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use OutputInfo.newBuilder() to construct.
          private OutputInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private OutputInfo() {
            size_ = 0L;
            aliasInputPort_ = 0L;
            dtype_ = 0;
          }
  
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
            return this.unknownFields;
          }
          private OutputInfo(
              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: {
  
                    size_ = input.readInt64();
                    break;
                  }
                  case 16: {
  
                    aliasInputPort_ = input.readInt64();
                    break;
                  }
                  case 26: {
                    com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder subBuilder = null;
                    if (shape_ != null) {
                      subBuilder = shape_.toBuilder();
                    }
                    shape_ = input.readMessage(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.parser(), extensionRegistry);
                    if (subBuilder != null) {
                      subBuilder.mergeFrom(shape_);
                      shape_ = subBuilder.buildPartial();
                    }
  
                    break;
                  }
                  case 32: {
                    int rawValue = input.readEnum();
  
                    dtype_ = rawValue;
                    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.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_OutputInfo_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_OutputInfo_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.class, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder.class);
          }
  
          public static final int SIZE_FIELD_NUMBER = 1;
          private long size_;
          /**
           * <code>int64 size = 1;</code>
           */
          public long getSize() {
            return size_;
          }
  
          public static final int ALIAS_INPUT_PORT_FIELD_NUMBER = 2;
          private long aliasInputPort_;
          /**
           * <pre>
           * If &gt;= 0, the output is an alias of an input. Note that an alias input
           * may itself be an alias. The algorithm will therefore need to follow
           * those pointers.
           * </pre>
           *
           * <code>int64 alias_input_port = 2;</code>
           */
          public long getAliasInputPort() {
            return aliasInputPort_;
          }
  
          public static final int SHAPE_FIELD_NUMBER = 3;
          private com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto shape_;
          /**
           * <code>.angel.TensorShapeProto shape = 3;</code>
           */
          public boolean hasShape() {
            return shape_ != null;
          }
          /**
           * <code>.angel.TensorShapeProto shape = 3;</code>
           */
          public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getShape() {
            return shape_ == null ? com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : shape_;
          }
          /**
           * <code>.angel.TensorShapeProto shape = 3;</code>
           */
          public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getShapeOrBuilder() {
            return getShape();
          }
  
          public static final int DTYPE_FIELD_NUMBER = 4;
          private int dtype_;
          /**
           * <code>.angel.DataType dtype = 4;</code>
           */
          public int getDtypeValue() {
            return dtype_;
          }
          /**
           * <code>.angel.DataType dtype = 4;</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;
          }
  
          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 (size_ != 0L) {
              output.writeInt64(1, size_);
            }
            if (aliasInputPort_ != 0L) {
              output.writeInt64(2, aliasInputPort_);
            }
            if (shape_ != null) {
              output.writeMessage(3, getShape());
            }
            if (dtype_ != com.tencent.angel.serving.apis.common.TypesProtos.DataType.DT_INVALID.getNumber()) {
              output.writeEnum(4, dtype_);
            }
            unknownFields.writeTo(output);
          }
  
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;
  
            size = 0;
            if (size_ != 0L) {
              size += com.google.protobuf.CodedOutputStream
                .computeInt64Size(1, size_);
            }
            if (aliasInputPort_ != 0L) {
              size += com.google.protobuf.CodedOutputStream
                .computeInt64Size(2, aliasInputPort_);
            }
            if (shape_ != null) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(3, getShape());
            }
            if (dtype_ != com.tencent.angel.serving.apis.common.TypesProtos.DataType.DT_INVALID.getNumber()) {
              size += com.google.protobuf.CodedOutputStream
                .computeEnumSize(4, dtype_);
            }
            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.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo)) {
              return super.equals(obj);
            }
            com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo other = (com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo) obj;
  
            boolean result = true;
            result = result && (getSize()
                == other.getSize());
            result = result && (getAliasInputPort()
                == other.getAliasInputPort());
            result = result && (hasShape() == other.hasShape());
            if (hasShape()) {
              result = result && getShape()
                  .equals(other.getShape());
            }
            result = result && dtype_ == other.dtype_;
            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) + SIZE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                getSize());
            hash = (37 * hash) + ALIAS_INPUT_PORT_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                getAliasInputPort());
            if (hasShape()) {
              hash = (37 * hash) + SHAPE_FIELD_NUMBER;
              hash = (53 * hash) + getShape().hashCode();
            }
            hash = (37 * hash) + DTYPE_FIELD_NUMBER;
            hash = (53 * hash) + dtype_;
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
          }
  
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo 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.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo 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>
           * Outputs of this node.
           * </pre>
           *
           * Protobuf type {@code angel.CostGraphDef.Node.OutputInfo}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:angel.CostGraphDef.Node.OutputInfo)
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_OutputInfo_descriptor;
            }
  
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_OutputInfo_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.class, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder.class);
            }
  
            // Construct using com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.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();
              size_ = 0L;
  
              aliasInputPort_ = 0L;
  
              if (shapeBuilder_ == null) {
                shape_ = null;
              } else {
                shape_ = null;
                shapeBuilder_ = null;
              }
              dtype_ = 0;
  
              return this;
            }
  
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_OutputInfo_descriptor;
            }
  
            public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo getDefaultInstanceForType() {
              return com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.getDefaultInstance();
            }
  
            public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo build() {
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }
  
            public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo buildPartial() {
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo result = new com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo(this);
              result.size_ = size_;
              result.aliasInputPort_ = aliasInputPort_;
              if (shapeBuilder_ == null) {
                result.shape_ = shape_;
              } else {
                result.shape_ = shapeBuilder_.build();
              }
              result.dtype_ = dtype_;
              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.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo) {
                return mergeFrom((com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }
  
            public Builder mergeFrom(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo other) {
              if (other == com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.getDefaultInstance()) return this;
              if (other.getSize() != 0L) {
                setSize(other.getSize());
              }
              if (other.getAliasInputPort() != 0L) {
                setAliasInputPort(other.getAliasInputPort());
              }
              if (other.hasShape()) {
                mergeShape(other.getShape());
              }
              if (other.dtype_ != 0) {
                setDtypeValue(other.getDtypeValue());
              }
              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.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo) e.getUnfinishedMessage();
                throw e.unwrapIOException();
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
  
            private long size_ ;
            /**
             * <code>int64 size = 1;</code>
             */
            public long getSize() {
              return size_;
            }
            /**
             * <code>int64 size = 1;</code>
             */
            public Builder setSize(long value) {
              
              size_ = value;
              onChanged();
              return this;
            }
            /**
             * <code>int64 size = 1;</code>
             */
            public Builder clearSize() {
              
              size_ = 0L;
              onChanged();
              return this;
            }
  
            private long aliasInputPort_ ;
            /**
             * <pre>
             * If &gt;= 0, the output is an alias of an input. Note that an alias input
             * may itself be an alias. The algorithm will therefore need to follow
             * those pointers.
             * </pre>
             *
             * <code>int64 alias_input_port = 2;</code>
             */
            public long getAliasInputPort() {
              return aliasInputPort_;
            }
            /**
             * <pre>
             * If &gt;= 0, the output is an alias of an input. Note that an alias input
             * may itself be an alias. The algorithm will therefore need to follow
             * those pointers.
             * </pre>
             *
             * <code>int64 alias_input_port = 2;</code>
             */
            public Builder setAliasInputPort(long value) {
              
              aliasInputPort_ = value;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * If &gt;= 0, the output is an alias of an input. Note that an alias input
             * may itself be an alias. The algorithm will therefore need to follow
             * those pointers.
             * </pre>
             *
             * <code>int64 alias_input_port = 2;</code>
             */
            public Builder clearAliasInputPort() {
              
              aliasInputPort_ = 0L;
              onChanged();
              return this;
            }
  
            private com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto shape_ = 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> shapeBuilder_;
            /**
             * <code>.angel.TensorShapeProto shape = 3;</code>
             */
            public boolean hasShape() {
              return shapeBuilder_ != null || shape_ != null;
            }
            /**
             * <code>.angel.TensorShapeProto shape = 3;</code>
             */
            public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getShape() {
              if (shapeBuilder_ == null) {
                return shape_ == null ? com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : shape_;
              } else {
                return shapeBuilder_.getMessage();
              }
            }
            /**
             * <code>.angel.TensorShapeProto shape = 3;</code>
             */
            public Builder setShape(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto value) {
              if (shapeBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                shape_ = value;
                onChanged();
              } else {
                shapeBuilder_.setMessage(value);
              }
  
              return this;
            }
            /**
             * <code>.angel.TensorShapeProto shape = 3;</code>
             */
            public Builder setShape(
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder builderForValue) {
              if (shapeBuilder_ == null) {
                shape_ = builderForValue.build();
                onChanged();
              } else {
                shapeBuilder_.setMessage(builderForValue.build());
              }
  
              return this;
            }
            /**
             * <code>.angel.TensorShapeProto shape = 3;</code>
             */
            public Builder mergeShape(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto value) {
              if (shapeBuilder_ == null) {
                if (shape_ != null) {
                  shape_ =
                    com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.newBuilder(shape_).mergeFrom(value).buildPartial();
                } else {
                  shape_ = value;
                }
                onChanged();
              } else {
                shapeBuilder_.mergeFrom(value);
              }
  
              return this;
            }
            /**
             * <code>.angel.TensorShapeProto shape = 3;</code>
             */
            public Builder clearShape() {
              if (shapeBuilder_ == null) {
                shape_ = null;
                onChanged();
              } else {
                shape_ = null;
                shapeBuilder_ = null;
              }
  
              return this;
            }
            /**
             * <code>.angel.TensorShapeProto shape = 3;</code>
             */
            public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder getShapeBuilder() {
              
              onChanged();
              return getShapeFieldBuilder().getBuilder();
            }
            /**
             * <code>.angel.TensorShapeProto shape = 3;</code>
             */
            public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getShapeOrBuilder() {
              if (shapeBuilder_ != null) {
                return shapeBuilder_.getMessageOrBuilder();
              } else {
                return shape_ == null ?
                    com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : shape_;
              }
            }
            /**
             * <code>.angel.TensorShapeProto 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> 
                getShapeFieldBuilder() {
              if (shapeBuilder_ == null) {
                shapeBuilder_ = 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>(
                        getShape(),
                        getParentForChildren(),
                        isClean());
                shape_ = null;
              }
              return shapeBuilder_;
            }
  
            private int dtype_ = 0;
            /**
             * <code>.angel.DataType dtype = 4;</code>
             */
            public int getDtypeValue() {
              return dtype_;
            }
            /**
             * <code>.angel.DataType dtype = 4;</code>
             */
            public Builder setDtypeValue(int value) {
              dtype_ = value;
              onChanged();
              return this;
            }
            /**
             * <code>.angel.DataType dtype = 4;</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 = 4;</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 = 4;</code>
             */
            public Builder clearDtype() {
              
              dtype_ = 0;
              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.CostGraphDef.Node.OutputInfo)
          }
  
          // @@protoc_insertion_point(class_scope:angel.CostGraphDef.Node.OutputInfo)
          private static final com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo();
          }
  
          public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }
  
          private static final com.google.protobuf.Parser<OutputInfo>
              PARSER = new com.google.protobuf.AbstractParser<OutputInfo>() {
            public OutputInfo parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return new OutputInfo(input, extensionRegistry);
            }
          };
  
          public static com.google.protobuf.Parser<OutputInfo> parser() {
            return PARSER;
          }
  
          @java.lang.Override
          public com.google.protobuf.Parser<OutputInfo> getParserForType() {
            return PARSER;
          }
  
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }
  
        }
  
        private int bitField0_;
        public static final int NAME_FIELD_NUMBER = 1;
        private volatile java.lang.Object name_;
        /**
         * <pre>
         * The name of the node. Names are globally unique.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            name_ = s;
            return s;
          }
        }
        /**
         * <pre>
         * The name of the node. Names are globally unique.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int DEVICE_FIELD_NUMBER = 2;
        private volatile java.lang.Object device_;
        /**
         * <pre>
         * The device of the node. Can be empty if the node is mapped to the
         * default partition or partitioning hasn't been run yet.
         * </pre>
         *
         * <code>string device = 2;</code>
         */
        public java.lang.String getDevice() {
          java.lang.Object ref = device_;
          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();
            device_ = s;
            return s;
          }
        }
        /**
         * <pre>
         * The device of the node. Can be empty if the node is mapped to the
         * default partition or partitioning hasn't been run yet.
         * </pre>
         *
         * <code>string device = 2;</code>
         */
        public com.google.protobuf.ByteString
            getDeviceBytes() {
          java.lang.Object ref = device_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            device_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int ID_FIELD_NUMBER = 3;
        private int id_;
        /**
         * <pre>
         * The id of the node. Node ids are only unique inside a partition.
         * </pre>
         *
         * <code>int32 id = 3;</code>
         */
        public int getId() {
          return id_;
        }
  
        public static final int INPUT_INFO_FIELD_NUMBER = 4;
        private java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo> inputInfo_;
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo> getInputInfoList() {
          return inputInfo_;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        public java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder> 
            getInputInfoOrBuilderList() {
          return inputInfo_;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        public int getInputInfoCount() {
          return inputInfo_.size();
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo getInputInfo(int index) {
          return inputInfo_.get(index);
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder getInputInfoOrBuilder(
            int index) {
          return inputInfo_.get(index);
        }
  
        public static final int OUTPUT_INFO_FIELD_NUMBER = 5;
        private java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo> outputInfo_;
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo> getOutputInfoList() {
          return outputInfo_;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        public java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder> 
            getOutputInfoOrBuilderList() {
          return outputInfo_;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        public int getOutputInfoCount() {
          return outputInfo_.size();
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo getOutputInfo(int index) {
          return outputInfo_.get(index);
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder getOutputInfoOrBuilder(
            int index) {
          return outputInfo_.get(index);
        }
  
        public static final int TEMPORARY_MEMORY_SIZE_FIELD_NUMBER = 6;
        private long temporaryMemorySize_;
        /**
         * <pre>
         * Temporary memory used by this node.
         * </pre>
         *
         * <code>int64 temporary_memory_size = 6;</code>
         */
        public long getTemporaryMemorySize() {
          return temporaryMemorySize_;
        }
  
        public static final int PERSISTENT_MEMORY_SIZE_FIELD_NUMBER = 12;
        private long persistentMemorySize_;
        /**
         * <pre>
         * Persistent memory used by this node.
         * </pre>
         *
         * <code>int64 persistent_memory_size = 12;</code>
         */
        public long getPersistentMemorySize() {
          return persistentMemorySize_;
        }
  
        public static final int HOST_TEMP_MEMORY_SIZE_FIELD_NUMBER = 10;
        private long hostTempMemorySize_;
        /**
         * <code>int64 host_temp_memory_size = 10 [deprecated = true];</code>
         */
        @java.lang.Deprecated public long getHostTempMemorySize() {
          return hostTempMemorySize_;
        }
  
        public static final int DEVICE_TEMP_MEMORY_SIZE_FIELD_NUMBER = 11;
        private long deviceTempMemorySize_;
        /**
         * <code>int64 device_temp_memory_size = 11 [deprecated = true];</code>
         */
        @java.lang.Deprecated public long getDeviceTempMemorySize() {
          return deviceTempMemorySize_;
        }
  
        public static final int DEVICE_PERSISTENT_MEMORY_SIZE_FIELD_NUMBER = 16;
        private long devicePersistentMemorySize_;
        /**
         * <code>int64 device_persistent_memory_size = 16 [deprecated = true];</code>
         */
        @java.lang.Deprecated public long getDevicePersistentMemorySize() {
          return devicePersistentMemorySize_;
        }
  
        public static final int COMPUTE_COST_FIELD_NUMBER = 9;
        private long computeCost_;
        /**
         * <pre>
         * Estimate of the computational cost of this node, in microseconds.
         * </pre>
         *
         * <code>int64 compute_cost = 9;</code>
         */
        public long getComputeCost() {
          return computeCost_;
        }
  
        public static final int COMPUTE_TIME_FIELD_NUMBER = 14;
        private long computeTime_;
        /**
         * <pre>
         * Analytical estimate of the computational cost of this node, in
         * microseconds.
         * </pre>
         *
         * <code>int64 compute_time = 14;</code>
         */
        public long getComputeTime() {
          return computeTime_;
        }
  
        public static final int MEMORY_TIME_FIELD_NUMBER = 15;
        private long memoryTime_;
        /**
         * <pre>
         * Analytical estimate of the memory access cost of this node, in
         * microseconds.
         * </pre>
         *
         * <code>int64 memory_time = 15;</code>
         */
        public long getMemoryTime() {
          return memoryTime_;
        }
  
        public static final int IS_FINAL_FIELD_NUMBER = 7;
        private boolean isFinal_;
        /**
         * <pre>
         * If true, the output is permanent: it can't be discarded, because this
         * node is part of the "final output". Nodes may depend on final nodes.
         * </pre>
         *
         * <code>bool is_final = 7;</code>
         */
        public boolean getIsFinal() {
          return isFinal_;
        }
  
        public static final int CONTROL_INPUT_FIELD_NUMBER = 8;
        private java.util.List<java.lang.Integer> controlInput_;
        /**
         * <pre>
         * Ids of the control inputs for this node.
         * </pre>
         *
         * <code>repeated int32 control_input = 8;</code>
         */
        public java.util.List<java.lang.Integer>
            getControlInputList() {
          return controlInput_;
        }
        /**
         * <pre>
         * Ids of the control inputs for this node.
         * </pre>
         *
         * <code>repeated int32 control_input = 8;</code>
         */
        public int getControlInputCount() {
          return controlInput_.size();
        }
        /**
         * <pre>
         * Ids of the control inputs for this node.
         * </pre>
         *
         * <code>repeated int32 control_input = 8;</code>
         */
        public int getControlInput(int index) {
          return controlInput_.get(index);
        }
        private int controlInputMemoizedSerializedSize = -1;
  
        public static final int INACCURATE_FIELD_NUMBER = 17;
        private boolean inaccurate_;
        /**
         * <pre>
         * Are the costs inaccurate?
         * </pre>
         *
         * <code>bool inaccurate = 17;</code>
         */
        public boolean getInaccurate() {
          return inaccurate_;
        }
  
        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 (!getNameBytes().isEmpty()) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
          }
          if (!getDeviceBytes().isEmpty()) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, device_);
          }
          if (id_ != 0) {
            output.writeInt32(3, id_);
          }
          for (int i = 0; i < inputInfo_.size(); i++) {
            output.writeMessage(4, inputInfo_.get(i));
          }
          for (int i = 0; i < outputInfo_.size(); i++) {
            output.writeMessage(5, outputInfo_.get(i));
          }
          if (temporaryMemorySize_ != 0L) {
            output.writeInt64(6, temporaryMemorySize_);
          }
          if (isFinal_ != false) {
            output.writeBool(7, isFinal_);
          }
          if (getControlInputList().size() > 0) {
            output.writeUInt32NoTag(66);
            output.writeUInt32NoTag(controlInputMemoizedSerializedSize);
          }
          for (int i = 0; i < controlInput_.size(); i++) {
            output.writeInt32NoTag(controlInput_.get(i));
          }
          if (computeCost_ != 0L) {
            output.writeInt64(9, computeCost_);
          }
          if (hostTempMemorySize_ != 0L) {
            output.writeInt64(10, hostTempMemorySize_);
          }
          if (deviceTempMemorySize_ != 0L) {
            output.writeInt64(11, deviceTempMemorySize_);
          }
          if (persistentMemorySize_ != 0L) {
            output.writeInt64(12, persistentMemorySize_);
          }
          if (computeTime_ != 0L) {
            output.writeInt64(14, computeTime_);
          }
          if (memoryTime_ != 0L) {
            output.writeInt64(15, memoryTime_);
          }
          if (devicePersistentMemorySize_ != 0L) {
            output.writeInt64(16, devicePersistentMemorySize_);
          }
          if (inaccurate_ != false) {
            output.writeBool(17, inaccurate_);
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          if (!getNameBytes().isEmpty()) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
          }
          if (!getDeviceBytes().isEmpty()) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, device_);
          }
          if (id_ != 0) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(3, id_);
          }
          for (int i = 0; i < inputInfo_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, inputInfo_.get(i));
          }
          for (int i = 0; i < outputInfo_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(5, outputInfo_.get(i));
          }
          if (temporaryMemorySize_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(6, temporaryMemorySize_);
          }
          if (isFinal_ != false) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(7, isFinal_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < controlInput_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(controlInput_.get(i));
            }
            size += dataSize;
            if (!getControlInputList().isEmpty()) {
              size += 1;
              size += com.google.protobuf.CodedOutputStream
                  .computeInt32SizeNoTag(dataSize);
            }
            controlInputMemoizedSerializedSize = dataSize;
          }
          if (computeCost_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(9, computeCost_);
          }
          if (hostTempMemorySize_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(10, hostTempMemorySize_);
          }
          if (deviceTempMemorySize_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(11, deviceTempMemorySize_);
          }
          if (persistentMemorySize_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(12, persistentMemorySize_);
          }
          if (computeTime_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(14, computeTime_);
          }
          if (memoryTime_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(15, memoryTime_);
          }
          if (devicePersistentMemorySize_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(16, devicePersistentMemorySize_);
          }
          if (inaccurate_ != false) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(17, inaccurate_);
          }
          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.graph.CostGraphProtos.CostGraphDef.Node)) {
            return super.equals(obj);
          }
          com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node other = (com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node) obj;
  
          boolean result = true;
          result = result && getName()
              .equals(other.getName());
          result = result && getDevice()
              .equals(other.getDevice());
          result = result && (getId()
              == other.getId());
          result = result && getInputInfoList()
              .equals(other.getInputInfoList());
          result = result && getOutputInfoList()
              .equals(other.getOutputInfoList());
          result = result && (getTemporaryMemorySize()
              == other.getTemporaryMemorySize());
          result = result && (getPersistentMemorySize()
              == other.getPersistentMemorySize());
          result = result && (getHostTempMemorySize()
              == other.getHostTempMemorySize());
          result = result && (getDeviceTempMemorySize()
              == other.getDeviceTempMemorySize());
          result = result && (getDevicePersistentMemorySize()
              == other.getDevicePersistentMemorySize());
          result = result && (getComputeCost()
              == other.getComputeCost());
          result = result && (getComputeTime()
              == other.getComputeTime());
          result = result && (getMemoryTime()
              == other.getMemoryTime());
          result = result && (getIsFinal()
              == other.getIsFinal());
          result = result && getControlInputList()
              .equals(other.getControlInputList());
          result = result && (getInaccurate()
              == other.getInaccurate());
          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) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
          hash = (37 * hash) + DEVICE_FIELD_NUMBER;
          hash = (53 * hash) + getDevice().hashCode();
          hash = (37 * hash) + ID_FIELD_NUMBER;
          hash = (53 * hash) + getId();
          if (getInputInfoCount() > 0) {
            hash = (37 * hash) + INPUT_INFO_FIELD_NUMBER;
            hash = (53 * hash) + getInputInfoList().hashCode();
          }
          if (getOutputInfoCount() > 0) {
            hash = (37 * hash) + OUTPUT_INFO_FIELD_NUMBER;
            hash = (53 * hash) + getOutputInfoList().hashCode();
          }
          hash = (37 * hash) + TEMPORARY_MEMORY_SIZE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTemporaryMemorySize());
          hash = (37 * hash) + PERSISTENT_MEMORY_SIZE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPersistentMemorySize());
          hash = (37 * hash) + HOST_TEMP_MEMORY_SIZE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getHostTempMemorySize());
          hash = (37 * hash) + DEVICE_TEMP_MEMORY_SIZE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getDeviceTempMemorySize());
          hash = (37 * hash) + DEVICE_PERSISTENT_MEMORY_SIZE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getDevicePersistentMemorySize());
          hash = (37 * hash) + COMPUTE_COST_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getComputeCost());
          hash = (37 * hash) + COMPUTE_TIME_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getComputeTime());
          hash = (37 * hash) + MEMORY_TIME_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getMemoryTime());
          hash = (37 * hash) + IS_FINAL_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getIsFinal());
          if (getControlInputCount() > 0) {
            hash = (37 * hash) + CONTROL_INPUT_FIELD_NUMBER;
            hash = (53 * hash) + getControlInputList().hashCode();
          }
          hash = (37 * hash) + INACCURATE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getInaccurate());
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node 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.graph.CostGraphProtos.CostGraphDef.Node parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node 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.graph.CostGraphProtos.CostGraphDef.Node parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node 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.graph.CostGraphProtos.CostGraphDef.Node parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node 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.graph.CostGraphProtos.CostGraphDef.Node parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node 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.graph.CostGraphProtos.CostGraphDef.Node 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;
        }
        /**
         * Protobuf type {@code angel.CostGraphDef.Node}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.CostGraphDef.Node)
            com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.class, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder.class);
          }
  
          // Construct using com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
              getInputInfoFieldBuilder();
              getOutputInfoFieldBuilder();
            }
          }
          public Builder clear() {
            super.clear();
            name_ = "";
  
            device_ = "";
  
            id_ = 0;
  
            if (inputInfoBuilder_ == null) {
              inputInfo_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              inputInfoBuilder_.clear();
            }
            if (outputInfoBuilder_ == null) {
              outputInfo_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              outputInfoBuilder_.clear();
            }
            temporaryMemorySize_ = 0L;
  
            persistentMemorySize_ = 0L;
  
            hostTempMemorySize_ = 0L;
  
            deviceTempMemorySize_ = 0L;
  
            devicePersistentMemorySize_ = 0L;
  
            computeCost_ = 0L;
  
            computeTime_ = 0L;
  
            memoryTime_ = 0L;
  
            isFinal_ = false;
  
            controlInput_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00004000);
            inaccurate_ = false;
  
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_Node_descriptor;
          }
  
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node getDefaultInstanceForType() {
            return com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.getDefaultInstance();
          }
  
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node build() {
            com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node buildPartial() {
            com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node result = new com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            result.name_ = name_;
            result.device_ = device_;
            result.id_ = id_;
            if (inputInfoBuilder_ == null) {
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                inputInfo_ = java.util.Collections.unmodifiableList(inputInfo_);
                bitField0_ = (bitField0_ & ~0x00000008);
              }
              result.inputInfo_ = inputInfo_;
            } else {
              result.inputInfo_ = inputInfoBuilder_.build();
            }
            if (outputInfoBuilder_ == null) {
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                outputInfo_ = java.util.Collections.unmodifiableList(outputInfo_);
                bitField0_ = (bitField0_ & ~0x00000010);
              }
              result.outputInfo_ = outputInfo_;
            } else {
              result.outputInfo_ = outputInfoBuilder_.build();
            }
            result.temporaryMemorySize_ = temporaryMemorySize_;
            result.persistentMemorySize_ = persistentMemorySize_;
            result.hostTempMemorySize_ = hostTempMemorySize_;
            result.deviceTempMemorySize_ = deviceTempMemorySize_;
            result.devicePersistentMemorySize_ = devicePersistentMemorySize_;
            result.computeCost_ = computeCost_;
            result.computeTime_ = computeTime_;
            result.memoryTime_ = memoryTime_;
            result.isFinal_ = isFinal_;
            if (((bitField0_ & 0x00004000) == 0x00004000)) {
              controlInput_ = java.util.Collections.unmodifiableList(controlInput_);
              bitField0_ = (bitField0_ & ~0x00004000);
            }
            result.controlInput_ = controlInput_;
            result.inaccurate_ = inaccurate_;
            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.graph.CostGraphProtos.CostGraphDef.Node) {
              return mergeFrom((com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node other) {
            if (other == com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.getDefaultInstance()) return this;
            if (!other.getName().isEmpty()) {
              name_ = other.name_;
              onChanged();
            }
            if (!other.getDevice().isEmpty()) {
              device_ = other.device_;
              onChanged();
            }
            if (other.getId() != 0) {
              setId(other.getId());
            }
            if (inputInfoBuilder_ == null) {
              if (!other.inputInfo_.isEmpty()) {
                if (inputInfo_.isEmpty()) {
                  inputInfo_ = other.inputInfo_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                } else {
                  ensureInputInfoIsMutable();
                  inputInfo_.addAll(other.inputInfo_);
                }
                onChanged();
              }
            } else {
              if (!other.inputInfo_.isEmpty()) {
                if (inputInfoBuilder_.isEmpty()) {
                  inputInfoBuilder_.dispose();
                  inputInfoBuilder_ = null;
                  inputInfo_ = other.inputInfo_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                  inputInfoBuilder_ = 
                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                       getInputInfoFieldBuilder() : null;
                } else {
                  inputInfoBuilder_.addAllMessages(other.inputInfo_);
                }
              }
            }
            if (outputInfoBuilder_ == null) {
              if (!other.outputInfo_.isEmpty()) {
                if (outputInfo_.isEmpty()) {
                  outputInfo_ = other.outputInfo_;
                  bitField0_ = (bitField0_ & ~0x00000010);
                } else {
                  ensureOutputInfoIsMutable();
                  outputInfo_.addAll(other.outputInfo_);
                }
                onChanged();
              }
            } else {
              if (!other.outputInfo_.isEmpty()) {
                if (outputInfoBuilder_.isEmpty()) {
                  outputInfoBuilder_.dispose();
                  outputInfoBuilder_ = null;
                  outputInfo_ = other.outputInfo_;
                  bitField0_ = (bitField0_ & ~0x00000010);
                  outputInfoBuilder_ = 
                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                       getOutputInfoFieldBuilder() : null;
                } else {
                  outputInfoBuilder_.addAllMessages(other.outputInfo_);
                }
              }
            }
            if (other.getTemporaryMemorySize() != 0L) {
              setTemporaryMemorySize(other.getTemporaryMemorySize());
            }
            if (other.getPersistentMemorySize() != 0L) {
              setPersistentMemorySize(other.getPersistentMemorySize());
            }
            if (other.getHostTempMemorySize() != 0L) {
              setHostTempMemorySize(other.getHostTempMemorySize());
            }
            if (other.getDeviceTempMemorySize() != 0L) {
              setDeviceTempMemorySize(other.getDeviceTempMemorySize());
            }
            if (other.getDevicePersistentMemorySize() != 0L) {
              setDevicePersistentMemorySize(other.getDevicePersistentMemorySize());
            }
            if (other.getComputeCost() != 0L) {
              setComputeCost(other.getComputeCost());
            }
            if (other.getComputeTime() != 0L) {
              setComputeTime(other.getComputeTime());
            }
            if (other.getMemoryTime() != 0L) {
              setMemoryTime(other.getMemoryTime());
            }
            if (other.getIsFinal() != false) {
              setIsFinal(other.getIsFinal());
            }
            if (!other.controlInput_.isEmpty()) {
              if (controlInput_.isEmpty()) {
                controlInput_ = other.controlInput_;
                bitField0_ = (bitField0_ & ~0x00004000);
              } else {
                ensureControlInputIsMutable();
                controlInput_.addAll(other.controlInput_);
              }
              onChanged();
            }
            if (other.getInaccurate() != false) {
              setInaccurate(other.getInaccurate());
            }
            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.graph.CostGraphProtos.CostGraphDef.Node parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private java.lang.Object name_ = "";
          /**
           * <pre>
           * The name of the node. Names are globally unique.
           * </pre>
           *
           * <code>string name = 1;</code>
           */
          public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              name_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <pre>
           * The name of the node. Names are globally unique.
           * </pre>
           *
           * <code>string name = 1;</code>
           */
          public com.google.protobuf.ByteString
              getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              name_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <pre>
           * The name of the node. Names are globally unique.
           * </pre>
           *
           * <code>string name = 1;</code>
           */
          public Builder setName(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    
            name_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The name of the node. Names are globally unique.
           * </pre>
           *
           * <code>string name = 1;</code>
           */
          public Builder clearName() {
            
            name_ = getDefaultInstance().getName();
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The name of the node. Names are globally unique.
           * </pre>
           *
           * <code>string name = 1;</code>
           */
          public Builder setNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
            
            name_ = value;
            onChanged();
            return this;
          }
  
          private java.lang.Object device_ = "";
          /**
           * <pre>
           * The device of the node. Can be empty if the node is mapped to the
           * default partition or partitioning hasn't been run yet.
           * </pre>
           *
           * <code>string device = 2;</code>
           */
          public java.lang.String getDevice() {
            java.lang.Object ref = device_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              device_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <pre>
           * The device of the node. Can be empty if the node is mapped to the
           * default partition or partitioning hasn't been run yet.
           * </pre>
           *
           * <code>string device = 2;</code>
           */
          public com.google.protobuf.ByteString
              getDeviceBytes() {
            java.lang.Object ref = device_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              device_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <pre>
           * The device of the node. Can be empty if the node is mapped to the
           * default partition or partitioning hasn't been run yet.
           * </pre>
           *
           * <code>string device = 2;</code>
           */
          public Builder setDevice(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    
            device_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The device of the node. Can be empty if the node is mapped to the
           * default partition or partitioning hasn't been run yet.
           * </pre>
           *
           * <code>string device = 2;</code>
           */
          public Builder clearDevice() {
            
            device_ = getDefaultInstance().getDevice();
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The device of the node. Can be empty if the node is mapped to the
           * default partition or partitioning hasn't been run yet.
           * </pre>
           *
           * <code>string device = 2;</code>
           */
          public Builder setDeviceBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
            
            device_ = value;
            onChanged();
            return this;
          }
  
          private int id_ ;
          /**
           * <pre>
           * The id of the node. Node ids are only unique inside a partition.
           * </pre>
           *
           * <code>int32 id = 3;</code>
           */
          public int getId() {
            return id_;
          }
          /**
           * <pre>
           * The id of the node. Node ids are only unique inside a partition.
           * </pre>
           *
           * <code>int32 id = 3;</code>
           */
          public Builder setId(int value) {
            
            id_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The id of the node. Node ids are only unique inside a partition.
           * </pre>
           *
           * <code>int32 id = 3;</code>
           */
          public Builder clearId() {
            
            id_ = 0;
            onChanged();
            return this;
          }
  
          private java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo> inputInfo_ =
            java.util.Collections.emptyList();
          private void ensureInputInfoIsMutable() {
            if (!((bitField0_ & 0x00000008) == 0x00000008)) {
              inputInfo_ = new java.util.ArrayList<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo>(inputInfo_);
              bitField0_ |= 0x00000008;
             }
          }
  
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder> inputInfoBuilder_;
  
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo> getInputInfoList() {
            if (inputInfoBuilder_ == null) {
              return java.util.Collections.unmodifiableList(inputInfo_);
            } else {
              return inputInfoBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public int getInputInfoCount() {
            if (inputInfoBuilder_ == null) {
              return inputInfo_.size();
            } else {
              return inputInfoBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo getInputInfo(int index) {
            if (inputInfoBuilder_ == null) {
              return inputInfo_.get(index);
            } else {
              return inputInfoBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder setInputInfo(
              int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo value) {
            if (inputInfoBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInputInfoIsMutable();
              inputInfo_.set(index, value);
              onChanged();
            } else {
              inputInfoBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder setInputInfo(
              int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder builderForValue) {
            if (inputInfoBuilder_ == null) {
              ensureInputInfoIsMutable();
              inputInfo_.set(index, builderForValue.build());
              onChanged();
            } else {
              inputInfoBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder addInputInfo(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo value) {
            if (inputInfoBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInputInfoIsMutable();
              inputInfo_.add(value);
              onChanged();
            } else {
              inputInfoBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder addInputInfo(
              int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo value) {
            if (inputInfoBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInputInfoIsMutable();
              inputInfo_.add(index, value);
              onChanged();
            } else {
              inputInfoBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder addInputInfo(
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder builderForValue) {
            if (inputInfoBuilder_ == null) {
              ensureInputInfoIsMutable();
              inputInfo_.add(builderForValue.build());
              onChanged();
            } else {
              inputInfoBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder addInputInfo(
              int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder builderForValue) {
            if (inputInfoBuilder_ == null) {
              ensureInputInfoIsMutable();
              inputInfo_.add(index, builderForValue.build());
              onChanged();
            } else {
              inputInfoBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder addAllInputInfo(
              java.lang.Iterable<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo> values) {
            if (inputInfoBuilder_ == null) {
              ensureInputInfoIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, inputInfo_);
              onChanged();
            } else {
              inputInfoBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder clearInputInfo() {
            if (inputInfoBuilder_ == null) {
              inputInfo_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
              onChanged();
            } else {
              inputInfoBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public Builder removeInputInfo(int index) {
            if (inputInfoBuilder_ == null) {
              ensureInputInfoIsMutable();
              inputInfo_.remove(index);
              onChanged();
            } else {
              inputInfoBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder getInputInfoBuilder(
              int index) {
            return getInputInfoFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder getInputInfoOrBuilder(
              int index) {
            if (inputInfoBuilder_ == null) {
              return inputInfo_.get(index);  } else {
              return inputInfoBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder> 
               getInputInfoOrBuilderList() {
            if (inputInfoBuilder_ != null) {
              return inputInfoBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(inputInfo_);
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder addInputInfoBuilder() {
            return getInputInfoFieldBuilder().addBuilder(
                com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.getDefaultInstance());
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder addInputInfoBuilder(
              int index) {
            return getInputInfoFieldBuilder().addBuilder(
                index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.getDefaultInstance());
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.InputInfo input_info = 4;</code>
           */
          public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder> 
               getInputInfoBuilderList() {
            return getInputInfoFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder> 
              getInputInfoFieldBuilder() {
            if (inputInfoBuilder_ == null) {
              inputInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfo.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.InputInfoOrBuilder>(
                      inputInfo_,
                      ((bitField0_ & 0x00000008) == 0x00000008),
                      getParentForChildren(),
                      isClean());
              inputInfo_ = null;
            }
            return inputInfoBuilder_;
          }
  
          private java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo> outputInfo_ =
            java.util.Collections.emptyList();
          private void ensureOutputInfoIsMutable() {
            if (!((bitField0_ & 0x00000010) == 0x00000010)) {
              outputInfo_ = new java.util.ArrayList<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo>(outputInfo_);
              bitField0_ |= 0x00000010;
             }
          }
  
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder> outputInfoBuilder_;
  
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo> getOutputInfoList() {
            if (outputInfoBuilder_ == null) {
              return java.util.Collections.unmodifiableList(outputInfo_);
            } else {
              return outputInfoBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public int getOutputInfoCount() {
            if (outputInfoBuilder_ == null) {
              return outputInfo_.size();
            } else {
              return outputInfoBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo getOutputInfo(int index) {
            if (outputInfoBuilder_ == null) {
              return outputInfo_.get(index);
            } else {
              return outputInfoBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder setOutputInfo(
              int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo value) {
            if (outputInfoBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureOutputInfoIsMutable();
              outputInfo_.set(index, value);
              onChanged();
            } else {
              outputInfoBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder setOutputInfo(
              int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder builderForValue) {
            if (outputInfoBuilder_ == null) {
              ensureOutputInfoIsMutable();
              outputInfo_.set(index, builderForValue.build());
              onChanged();
            } else {
              outputInfoBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder addOutputInfo(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo value) {
            if (outputInfoBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureOutputInfoIsMutable();
              outputInfo_.add(value);
              onChanged();
            } else {
              outputInfoBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder addOutputInfo(
              int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo value) {
            if (outputInfoBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureOutputInfoIsMutable();
              outputInfo_.add(index, value);
              onChanged();
            } else {
              outputInfoBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder addOutputInfo(
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder builderForValue) {
            if (outputInfoBuilder_ == null) {
              ensureOutputInfoIsMutable();
              outputInfo_.add(builderForValue.build());
              onChanged();
            } else {
              outputInfoBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder addOutputInfo(
              int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder builderForValue) {
            if (outputInfoBuilder_ == null) {
              ensureOutputInfoIsMutable();
              outputInfo_.add(index, builderForValue.build());
              onChanged();
            } else {
              outputInfoBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder addAllOutputInfo(
              java.lang.Iterable<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo> values) {
            if (outputInfoBuilder_ == null) {
              ensureOutputInfoIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, outputInfo_);
              onChanged();
            } else {
              outputInfoBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder clearOutputInfo() {
            if (outputInfoBuilder_ == null) {
              outputInfo_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000010);
              onChanged();
            } else {
              outputInfoBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public Builder removeOutputInfo(int index) {
            if (outputInfoBuilder_ == null) {
              ensureOutputInfoIsMutable();
              outputInfo_.remove(index);
              onChanged();
            } else {
              outputInfoBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder getOutputInfoBuilder(
              int index) {
            return getOutputInfoFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder getOutputInfoOrBuilder(
              int index) {
            if (outputInfoBuilder_ == null) {
              return outputInfo_.get(index);  } else {
              return outputInfoBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder> 
               getOutputInfoOrBuilderList() {
            if (outputInfoBuilder_ != null) {
              return outputInfoBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(outputInfo_);
            }
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder addOutputInfoBuilder() {
            return getOutputInfoFieldBuilder().addBuilder(
                com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.getDefaultInstance());
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder addOutputInfoBuilder(
              int index) {
            return getOutputInfoFieldBuilder().addBuilder(
                index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.getDefaultInstance());
          }
          /**
           * <code>repeated .angel.CostGraphDef.Node.OutputInfo output_info = 5;</code>
           */
          public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder> 
               getOutputInfoBuilderList() {
            return getOutputInfoFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder> 
              getOutputInfoFieldBuilder() {
            if (outputInfoBuilder_ == null) {
              outputInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfo.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.OutputInfoOrBuilder>(
                      outputInfo_,
                      ((bitField0_ & 0x00000010) == 0x00000010),
                      getParentForChildren(),
                      isClean());
              outputInfo_ = null;
            }
            return outputInfoBuilder_;
          }
  
          private long temporaryMemorySize_ ;
          /**
           * <pre>
           * Temporary memory used by this node.
           * </pre>
           *
           * <code>int64 temporary_memory_size = 6;</code>
           */
          public long getTemporaryMemorySize() {
            return temporaryMemorySize_;
          }
          /**
           * <pre>
           * Temporary memory used by this node.
           * </pre>
           *
           * <code>int64 temporary_memory_size = 6;</code>
           */
          public Builder setTemporaryMemorySize(long value) {
            
            temporaryMemorySize_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Temporary memory used by this node.
           * </pre>
           *
           * <code>int64 temporary_memory_size = 6;</code>
           */
          public Builder clearTemporaryMemorySize() {
            
            temporaryMemorySize_ = 0L;
            onChanged();
            return this;
          }
  
          private long persistentMemorySize_ ;
          /**
           * <pre>
           * Persistent memory used by this node.
           * </pre>
           *
           * <code>int64 persistent_memory_size = 12;</code>
           */
          public long getPersistentMemorySize() {
            return persistentMemorySize_;
          }
          /**
           * <pre>
           * Persistent memory used by this node.
           * </pre>
           *
           * <code>int64 persistent_memory_size = 12;</code>
           */
          public Builder setPersistentMemorySize(long value) {
            
            persistentMemorySize_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Persistent memory used by this node.
           * </pre>
           *
           * <code>int64 persistent_memory_size = 12;</code>
           */
          public Builder clearPersistentMemorySize() {
            
            persistentMemorySize_ = 0L;
            onChanged();
            return this;
          }
  
          private long hostTempMemorySize_ ;
          /**
           * <code>int64 host_temp_memory_size = 10 [deprecated = true];</code>
           */
          @java.lang.Deprecated public long getHostTempMemorySize() {
            return hostTempMemorySize_;
          }
          /**
           * <code>int64 host_temp_memory_size = 10 [deprecated = true];</code>
           */
          @java.lang.Deprecated public Builder setHostTempMemorySize(long value) {
            
            hostTempMemorySize_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>int64 host_temp_memory_size = 10 [deprecated = true];</code>
           */
          @java.lang.Deprecated public Builder clearHostTempMemorySize() {
            
            hostTempMemorySize_ = 0L;
            onChanged();
            return this;
          }
  
          private long deviceTempMemorySize_ ;
          /**
           * <code>int64 device_temp_memory_size = 11 [deprecated = true];</code>
           */
          @java.lang.Deprecated public long getDeviceTempMemorySize() {
            return deviceTempMemorySize_;
          }
          /**
           * <code>int64 device_temp_memory_size = 11 [deprecated = true];</code>
           */
          @java.lang.Deprecated public Builder setDeviceTempMemorySize(long value) {
            
            deviceTempMemorySize_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>int64 device_temp_memory_size = 11 [deprecated = true];</code>
           */
          @java.lang.Deprecated public Builder clearDeviceTempMemorySize() {
            
            deviceTempMemorySize_ = 0L;
            onChanged();
            return this;
          }
  
          private long devicePersistentMemorySize_ ;
          /**
           * <code>int64 device_persistent_memory_size = 16 [deprecated = true];</code>
           */
          @java.lang.Deprecated public long getDevicePersistentMemorySize() {
            return devicePersistentMemorySize_;
          }
          /**
           * <code>int64 device_persistent_memory_size = 16 [deprecated = true];</code>
           */
          @java.lang.Deprecated public Builder setDevicePersistentMemorySize(long value) {
            
            devicePersistentMemorySize_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>int64 device_persistent_memory_size = 16 [deprecated = true];</code>
           */
          @java.lang.Deprecated public Builder clearDevicePersistentMemorySize() {
            
            devicePersistentMemorySize_ = 0L;
            onChanged();
            return this;
          }
  
          private long computeCost_ ;
          /**
           * <pre>
           * Estimate of the computational cost of this node, in microseconds.
           * </pre>
           *
           * <code>int64 compute_cost = 9;</code>
           */
          public long getComputeCost() {
            return computeCost_;
          }
          /**
           * <pre>
           * Estimate of the computational cost of this node, in microseconds.
           * </pre>
           *
           * <code>int64 compute_cost = 9;</code>
           */
          public Builder setComputeCost(long value) {
            
            computeCost_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Estimate of the computational cost of this node, in microseconds.
           * </pre>
           *
           * <code>int64 compute_cost = 9;</code>
           */
          public Builder clearComputeCost() {
            
            computeCost_ = 0L;
            onChanged();
            return this;
          }
  
          private long computeTime_ ;
          /**
           * <pre>
           * Analytical estimate of the computational cost of this node, in
           * microseconds.
           * </pre>
           *
           * <code>int64 compute_time = 14;</code>
           */
          public long getComputeTime() {
            return computeTime_;
          }
          /**
           * <pre>
           * Analytical estimate of the computational cost of this node, in
           * microseconds.
           * </pre>
           *
           * <code>int64 compute_time = 14;</code>
           */
          public Builder setComputeTime(long value) {
            
            computeTime_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Analytical estimate of the computational cost of this node, in
           * microseconds.
           * </pre>
           *
           * <code>int64 compute_time = 14;</code>
           */
          public Builder clearComputeTime() {
            
            computeTime_ = 0L;
            onChanged();
            return this;
          }
  
          private long memoryTime_ ;
          /**
           * <pre>
           * Analytical estimate of the memory access cost of this node, in
           * microseconds.
           * </pre>
           *
           * <code>int64 memory_time = 15;</code>
           */
          public long getMemoryTime() {
            return memoryTime_;
          }
          /**
           * <pre>
           * Analytical estimate of the memory access cost of this node, in
           * microseconds.
           * </pre>
           *
           * <code>int64 memory_time = 15;</code>
           */
          public Builder setMemoryTime(long value) {
            
            memoryTime_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Analytical estimate of the memory access cost of this node, in
           * microseconds.
           * </pre>
           *
           * <code>int64 memory_time = 15;</code>
           */
          public Builder clearMemoryTime() {
            
            memoryTime_ = 0L;
            onChanged();
            return this;
          }
  
          private boolean isFinal_ ;
          /**
           * <pre>
           * If true, the output is permanent: it can't be discarded, because this
           * node is part of the "final output". Nodes may depend on final nodes.
           * </pre>
           *
           * <code>bool is_final = 7;</code>
           */
          public boolean getIsFinal() {
            return isFinal_;
          }
          /**
           * <pre>
           * If true, the output is permanent: it can't be discarded, because this
           * node is part of the "final output". Nodes may depend on final nodes.
           * </pre>
           *
           * <code>bool is_final = 7;</code>
           */
          public Builder setIsFinal(boolean value) {
            
            isFinal_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * If true, the output is permanent: it can't be discarded, because this
           * node is part of the "final output". Nodes may depend on final nodes.
           * </pre>
           *
           * <code>bool is_final = 7;</code>
           */
          public Builder clearIsFinal() {
            
            isFinal_ = false;
            onChanged();
            return this;
          }
  
          private java.util.List<java.lang.Integer> controlInput_ = java.util.Collections.emptyList();
          private void ensureControlInputIsMutable() {
            if (!((bitField0_ & 0x00004000) == 0x00004000)) {
              controlInput_ = new java.util.ArrayList<java.lang.Integer>(controlInput_);
              bitField0_ |= 0x00004000;
             }
          }
          /**
           * <pre>
           * Ids of the control inputs for this node.
           * </pre>
           *
           * <code>repeated int32 control_input = 8;</code>
           */
          public java.util.List<java.lang.Integer>
              getControlInputList() {
            return java.util.Collections.unmodifiableList(controlInput_);
          }
          /**
           * <pre>
           * Ids of the control inputs for this node.
           * </pre>
           *
           * <code>repeated int32 control_input = 8;</code>
           */
          public int getControlInputCount() {
            return controlInput_.size();
          }
          /**
           * <pre>
           * Ids of the control inputs for this node.
           * </pre>
           *
           * <code>repeated int32 control_input = 8;</code>
           */
          public int getControlInput(int index) {
            return controlInput_.get(index);
          }
          /**
           * <pre>
           * Ids of the control inputs for this node.
           * </pre>
           *
           * <code>repeated int32 control_input = 8;</code>
           */
          public Builder setControlInput(
              int index, int value) {
            ensureControlInputIsMutable();
            controlInput_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Ids of the control inputs for this node.
           * </pre>
           *
           * <code>repeated int32 control_input = 8;</code>
           */
          public Builder addControlInput(int value) {
            ensureControlInputIsMutable();
            controlInput_.add(value);
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Ids of the control inputs for this node.
           * </pre>
           *
           * <code>repeated int32 control_input = 8;</code>
           */
          public Builder addAllControlInput(
              java.lang.Iterable<? extends java.lang.Integer> values) {
            ensureControlInputIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, controlInput_);
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Ids of the control inputs for this node.
           * </pre>
           *
           * <code>repeated int32 control_input = 8;</code>
           */
          public Builder clearControlInput() {
            controlInput_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00004000);
            onChanged();
            return this;
          }
  
          private boolean inaccurate_ ;
          /**
           * <pre>
           * Are the costs inaccurate?
           * </pre>
           *
           * <code>bool inaccurate = 17;</code>
           */
          public boolean getInaccurate() {
            return inaccurate_;
          }
          /**
           * <pre>
           * Are the costs inaccurate?
           * </pre>
           *
           * <code>bool inaccurate = 17;</code>
           */
          public Builder setInaccurate(boolean value) {
            
            inaccurate_ = value;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Are the costs inaccurate?
           * </pre>
           *
           * <code>bool inaccurate = 17;</code>
           */
          public Builder clearInaccurate() {
            
            inaccurate_ = 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.CostGraphDef.Node)
        }
  
        // @@protoc_insertion_point(class_scope:angel.CostGraphDef.Node)
        private static final com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node();
        }
  
        public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<Node>
            PARSER = new com.google.protobuf.AbstractParser<Node>() {
          public Node parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new Node(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<Node> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<Node> getParserForType() {
          return PARSER;
        }
  
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      public static final int NODE_FIELD_NUMBER = 1;
      private java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node> node_;
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node> getNodeList() {
        return node_;
      }
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      public java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder> 
          getNodeOrBuilderList() {
        return node_;
      }
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      public int getNodeCount() {
        return node_.size();
      }
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node getNode(int index) {
        return node_.get(index);
      }
      /**
       * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
       */
      public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder getNodeOrBuilder(
          int index) {
        return node_.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 < node_.size(); i++) {
          output.writeMessage(1, node_.get(i));
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        for (int i = 0; i < node_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, node_.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.graph.CostGraphProtos.CostGraphDef)) {
          return super.equals(obj);
        }
        com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef other = (com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef) obj;
  
        boolean result = true;
        result = result && getNodeList()
            .equals(other.getNodeList());
        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 (getNodeCount() > 0) {
          hash = (37 * hash) + NODE_FIELD_NUMBER;
          hash = (53 * hash) + getNodeList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef 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.graph.CostGraphProtos.CostGraphDef parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef 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.graph.CostGraphProtos.CostGraphDef parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef 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.graph.CostGraphProtos.CostGraphDef parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef 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.graph.CostGraphProtos.CostGraphDef parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef 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.graph.CostGraphProtos.CostGraphDef 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;
      }
      /**
       * Protobuf type {@code angel.CostGraphDef}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.CostGraphDef)
          com.tencent.angel.core.graph.CostGraphProtos.CostGraphDefOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.class, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Builder.class);
        }
  
        // Construct using com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getNodeFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (nodeBuilder_ == null) {
            node_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            nodeBuilder_.clear();
          }
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.core.graph.CostGraphProtos.internal_static_angel_CostGraphDef_descriptor;
        }
  
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef getDefaultInstanceForType() {
          return com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.getDefaultInstance();
        }
  
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef build() {
          com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef buildPartial() {
          com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef result = new com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef(this);
          int from_bitField0_ = bitField0_;
          if (nodeBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              node_ = java.util.Collections.unmodifiableList(node_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.node_ = node_;
          } else {
            result.node_ = nodeBuilder_.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.graph.CostGraphProtos.CostGraphDef) {
            return mergeFrom((com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef other) {
          if (other == com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.getDefaultInstance()) return this;
          if (nodeBuilder_ == null) {
            if (!other.node_.isEmpty()) {
              if (node_.isEmpty()) {
                node_ = other.node_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureNodeIsMutable();
                node_.addAll(other.node_);
              }
              onChanged();
            }
          } else {
            if (!other.node_.isEmpty()) {
              if (nodeBuilder_.isEmpty()) {
                nodeBuilder_.dispose();
                nodeBuilder_ = null;
                node_ = other.node_;
                bitField0_ = (bitField0_ & ~0x00000001);
                nodeBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getNodeFieldBuilder() : null;
              } else {
                nodeBuilder_.addAllMessages(other.node_);
              }
            }
          }
          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.graph.CostGraphProtos.CostGraphDef parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node> node_ =
          java.util.Collections.emptyList();
        private void ensureNodeIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            node_ = new java.util.ArrayList<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node>(node_);
            bitField0_ |= 0x00000001;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder> nodeBuilder_;
  
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node> getNodeList() {
          if (nodeBuilder_ == null) {
            return java.util.Collections.unmodifiableList(node_);
          } else {
            return nodeBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public int getNodeCount() {
          if (nodeBuilder_ == null) {
            return node_.size();
          } else {
            return nodeBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node getNode(int index) {
          if (nodeBuilder_ == null) {
            return node_.get(index);
          } else {
            return nodeBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder setNode(
            int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node value) {
          if (nodeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNodeIsMutable();
            node_.set(index, value);
            onChanged();
          } else {
            nodeBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder setNode(
            int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder builderForValue) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            node_.set(index, builderForValue.build());
            onChanged();
          } else {
            nodeBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder addNode(com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node value) {
          if (nodeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNodeIsMutable();
            node_.add(value);
            onChanged();
          } else {
            nodeBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder addNode(
            int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node value) {
          if (nodeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNodeIsMutable();
            node_.add(index, value);
            onChanged();
          } else {
            nodeBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder addNode(
            com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder builderForValue) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            node_.add(builderForValue.build());
            onChanged();
          } else {
            nodeBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder addNode(
            int index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder builderForValue) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            node_.add(index, builderForValue.build());
            onChanged();
          } else {
            nodeBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder addAllNode(
            java.lang.Iterable<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node> values) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, node_);
            onChanged();
          } else {
            nodeBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder clearNode() {
          if (nodeBuilder_ == null) {
            node_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            nodeBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public Builder removeNode(int index) {
          if (nodeBuilder_ == null) {
            ensureNodeIsMutable();
            node_.remove(index);
            onChanged();
          } else {
            nodeBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder getNodeBuilder(
            int index) {
          return getNodeFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder getNodeOrBuilder(
            int index) {
          if (nodeBuilder_ == null) {
            return node_.get(index);  } else {
            return nodeBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public java.util.List<? extends com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder> 
             getNodeOrBuilderList() {
          if (nodeBuilder_ != null) {
            return nodeBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(node_);
          }
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder addNodeBuilder() {
          return getNodeFieldBuilder().addBuilder(
              com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.getDefaultInstance());
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder addNodeBuilder(
            int index) {
          return getNodeFieldBuilder().addBuilder(
              index, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.getDefaultInstance());
        }
        /**
         * <code>repeated .angel.CostGraphDef.Node node = 1;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder> 
             getNodeBuilderList() {
          return getNodeFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder> 
            getNodeFieldBuilder() {
          if (nodeBuilder_ == null) {
            nodeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.Node.Builder, com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef.NodeOrBuilder>(
                    node_,
                    ((bitField0_ & 0x00000001) == 0x00000001),
                    getParentForChildren(),
                    isClean());
            node_ = null;
          }
          return nodeBuilder_;
        }
        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.CostGraphDef)
      }
  
      // @@protoc_insertion_point(class_scope:angel.CostGraphDef)
      private static final com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef();
      }
  
      public static com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<CostGraphDef>
          PARSER = new com.google.protobuf.AbstractParser<CostGraphDef>() {
        public CostGraphDef parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new CostGraphDef(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<CostGraphDef> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<CostGraphDef> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.core.graph.CostGraphProtos.CostGraphDef getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CostGraphDef_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CostGraphDef_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CostGraphDef_Node_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CostGraphDef_Node_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CostGraphDef_Node_InputInfo_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CostGraphDef_Node_InputInfo_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_CostGraphDef_Node_OutputInfo_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_CostGraphDef_Node_OutputInfo_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/graph/cost_graph.proto\022\005angel\032\036ap" +
        "is/common/tensor_shape.proto\032\027apis/commo" +
        "n/types.proto\"\306\005\n\014CostGraphDef\022&\n\004node\030\001" +
        " \003(\0132\030.angel.CostGraphDef.Node\032\215\005\n\004Node\022" +
        "\014\n\004name\030\001 \001(\t\022\016\n\006device\030\002 \001(\t\022\n\n\002id\030\003 \001(" +
        "\005\0226\n\ninput_info\030\004 \003(\0132\".angel.CostGraphD" +
        "ef.Node.InputInfo\0228\n\013output_info\030\005 \003(\0132#" +
        ".angel.CostGraphDef.Node.OutputInfo\022\035\n\025t" +
        "emporary_memory_size\030\006 \001(\003\022\036\n\026persistent" +
        "_memory_size\030\014 \001(\003\022!\n\025host_temp_memory_s" +
        "ize\030\n \001(\003B\002\030\001\022#\n\027device_temp_memory_size" +
        "\030\013 \001(\003B\002\030\001\022)\n\035device_persistent_memory_s" +
        "ize\030\020 \001(\003B\002\030\001\022\024\n\014compute_cost\030\t \001(\003\022\024\n\014c" +
        "ompute_time\030\016 \001(\003\022\023\n\013memory_time\030\017 \001(\003\022\020" +
        "\n\010is_final\030\007 \001(\010\022\025\n\rcontrol_input\030\010 \003(\005\022" +
        "\022\n\ninaccurate\030\021 \001(\010\032;\n\tInputInfo\022\026\n\016prec" +
        "eding_node\030\001 \001(\005\022\026\n\016preceding_port\030\002 \001(\005" +
        "\032|\n\nOutputInfo\022\014\n\004size\030\001 \001(\003\022\030\n\020alias_in" +
        "put_port\030\002 \001(\003\022&\n\005shape\030\003 \001(\0132\027.angel.Te" +
        "nsorShapeProto\022\036\n\005dtype\030\004 \001(\0162\017.angel.Da" +
        "taTypeB1\n\034com.tencent.angel.core.graphB\017" +
        "CostGraphProtosP\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.tencent.angel.serving.apis.common.TensorShapeProtos.getDescriptor(),
            com.tencent.angel.serving.apis.common.TypesProtos.getDescriptor(),
          }, assigner);
      internal_static_angel_CostGraphDef_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_angel_CostGraphDef_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CostGraphDef_descriptor,
          new java.lang.String[] { "Node", });
      internal_static_angel_CostGraphDef_Node_descriptor =
        internal_static_angel_CostGraphDef_descriptor.getNestedTypes().get(0);
      internal_static_angel_CostGraphDef_Node_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CostGraphDef_Node_descriptor,
          new java.lang.String[] { "Name", "Device", "Id", "InputInfo", "OutputInfo", "TemporaryMemorySize", "PersistentMemorySize", "HostTempMemorySize", "DeviceTempMemorySize", "DevicePersistentMemorySize", "ComputeCost", "ComputeTime", "MemoryTime", "IsFinal", "ControlInput", "Inaccurate", });
      internal_static_angel_CostGraphDef_Node_InputInfo_descriptor =
        internal_static_angel_CostGraphDef_Node_descriptor.getNestedTypes().get(0);
      internal_static_angel_CostGraphDef_Node_InputInfo_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CostGraphDef_Node_InputInfo_descriptor,
          new java.lang.String[] { "PrecedingNode", "PrecedingPort", });
      internal_static_angel_CostGraphDef_Node_OutputInfo_descriptor =
        internal_static_angel_CostGraphDef_Node_descriptor.getNestedTypes().get(1);
      internal_static_angel_CostGraphDef_Node_OutputInfo_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_CostGraphDef_Node_OutputInfo_descriptor,
          new java.lang.String[] { "Size", "AliasInputPort", "Shape", "Dtype", });
      com.tencent.angel.serving.apis.common.TensorShapeProtos.getDescriptor();
      com.tencent.angel.serving.apis.common.TypesProtos.getDescriptor();
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  