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/tensor.proto
  
  package com.tencent.angel.core.graph;
  
  public final class TensorProtos {
    private TensorProtos() {}
    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 TensorProtoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.TensorProto)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>.angel.DataType dtype = 1;</code>
       */
      int getDtypeValue();
      /**
       * <code>.angel.DataType dtype = 1;</code>
       */
      com.tencent.angel.serving.apis.common.TypesProtos.DataType getDtype();
  
      /**
       * <pre>
       * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
       */
      boolean hasTensorShape();
      /**
       * <pre>
       * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
       */
      com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getTensorShape();
      /**
       * <pre>
       * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
       */
      com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getTensorShapeOrBuilder();
  
      /**
       * <pre>
       * Version number.
       * In version 0, if the "repeated xxx" representations contain only one
       * element, that element is repeated to fill the shape.  This makes it easy
       * to represent a constant Tensor with a single value.
       * </pre>
       *
       * <code>int32 version_number = 3;</code>
       */
      int getVersionNumber();
  
      /**
       * <pre>
       * Serialized raw tensor content from either Tensor::AsProtoTensorContent or
       * memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation
       * can be used for all tensor types. The purpose of this representation is to
       * reduce serialization overhead during RPC call by avoiding serialization of
       * many repeated small items.
       * </pre>
       *
       * <code>bytes tensor_content = 4;</code>
       */
      com.google.protobuf.ByteString getTensorContent();
  
      /**
       * <pre>
       * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
       * have some pointless zero padding for each value here.
       * </pre>
       *
       * <code>repeated int32 half_val = 13 [packed = true];</code>
       */
      java.util.List<java.lang.Integer> getHalfValList();
      /**
       * <pre>
       * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
       * have some pointless zero padding for each value here.
       * </pre>
       *
       * <code>repeated int32 half_val = 13 [packed = true];</code>
       */
      int getHalfValCount();
      /**
       * <pre>
       * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
       * have some pointless zero padding for each value here.
       * </pre>
       *
       * <code>repeated int32 half_val = 13 [packed = true];</code>
       */
      int getHalfVal(int index);
  
      /**
       * <pre>
       * DT_FLOAT.
       * </pre>
       *
       * <code>repeated float float_val = 5 [packed = true];</code>
       */
      java.util.List<java.lang.Float> getFloatValList();
      /**
       * <pre>
       * DT_FLOAT.
       * </pre>
       *
       * <code>repeated float float_val = 5 [packed = true];</code>
       */
      int getFloatValCount();
      /**
       * <pre>
       * DT_FLOAT.
       * </pre>
       *
       * <code>repeated float float_val = 5 [packed = true];</code>
       */
      float getFloatVal(int index);
  
      /**
       * <pre>
       * DT_DOUBLE.
       * </pre>
       *
       * <code>repeated double double_val = 6 [packed = true];</code>
       */
      java.util.List<java.lang.Double> getDoubleValList();
      /**
       * <pre>
       * DT_DOUBLE.
       * </pre>
       *
       * <code>repeated double double_val = 6 [packed = true];</code>
       */
      int getDoubleValCount();
      /**
       * <pre>
       * DT_DOUBLE.
       * </pre>
       *
       * <code>repeated double double_val = 6 [packed = true];</code>
       */
      double getDoubleVal(int index);
  
      /**
       * <pre>
       * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
       * </pre>
       *
       * <code>repeated int32 int_val = 7 [packed = true];</code>
       */
      java.util.List<java.lang.Integer> getIntValList();
      /**
       * <pre>
       * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
       * </pre>
       *
       * <code>repeated int32 int_val = 7 [packed = true];</code>
       */
      int getIntValCount();
      /**
       * <pre>
       * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
       * </pre>
       *
       * <code>repeated int32 int_val = 7 [packed = true];</code>
       */
      int getIntVal(int index);
  
      /**
       * <pre>
       * DT_STRING
       * </pre>
       *
       * <code>repeated bytes string_val = 8;</code>
       */
      java.util.List<com.google.protobuf.ByteString> getStringValList();
      /**
       * <pre>
       * DT_STRING
       * </pre>
       *
       * <code>repeated bytes string_val = 8;</code>
       */
      int getStringValCount();
      /**
       * <pre>
       * DT_STRING
       * </pre>
       *
       * <code>repeated bytes string_val = 8;</code>
       */
      com.google.protobuf.ByteString getStringVal(int index);
  
      /**
       * <pre>
       * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
       * and imaginary parts of i-th single precision complex.
       * </pre>
       *
       * <code>repeated float scomplex_val = 9 [packed = true];</code>
       */
      java.util.List<java.lang.Float> getScomplexValList();
      /**
       * <pre>
       * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
       * and imaginary parts of i-th single precision complex.
       * </pre>
       *
       * <code>repeated float scomplex_val = 9 [packed = true];</code>
       */
      int getScomplexValCount();
      /**
       * <pre>
       * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
       * and imaginary parts of i-th single precision complex.
       * </pre>
       *
       * <code>repeated float scomplex_val = 9 [packed = true];</code>
       */
      float getScomplexVal(int index);
  
      /**
       * <pre>
       * DT_INT64
       * </pre>
       *
       * <code>repeated int64 int64_val = 10 [packed = true];</code>
       */
      java.util.List<java.lang.Long> getInt64ValList();
      /**
       * <pre>
       * DT_INT64
       * </pre>
       *
       * <code>repeated int64 int64_val = 10 [packed = true];</code>
       */
      int getInt64ValCount();
      /**
       * <pre>
       * DT_INT64
       * </pre>
       *
       * <code>repeated int64 int64_val = 10 [packed = true];</code>
       */
      long getInt64Val(int index);
  
      /**
       * <pre>
       * DT_BOOL
       * </pre>
       *
       * <code>repeated bool bool_val = 11 [packed = true];</code>
       */
      java.util.List<java.lang.Boolean> getBoolValList();
      /**
       * <pre>
       * DT_BOOL
       * </pre>
       *
       * <code>repeated bool bool_val = 11 [packed = true];</code>
       */
      int getBoolValCount();
      /**
       * <pre>
       * DT_BOOL
       * </pre>
       *
       * <code>repeated bool bool_val = 11 [packed = true];</code>
       */
      boolean getBoolVal(int index);
  
      /**
       * <pre>
       * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
       * and imaginary parts of i-th double precision complex.
       * </pre>
       *
       * <code>repeated double dcomplex_val = 12 [packed = true];</code>
       */
      java.util.List<java.lang.Double> getDcomplexValList();
      /**
       * <pre>
       * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
       * and imaginary parts of i-th double precision complex.
       * </pre>
       *
       * <code>repeated double dcomplex_val = 12 [packed = true];</code>
       */
      int getDcomplexValCount();
      /**
       * <pre>
       * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
       * and imaginary parts of i-th double precision complex.
       * </pre>
       *
       * <code>repeated double dcomplex_val = 12 [packed = true];</code>
       */
      double getDcomplexVal(int index);
  
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      java.util.List<com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto> 
          getResourceHandleValList();
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto getResourceHandleVal(int index);
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      int getResourceHandleValCount();
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      java.util.List<? extends com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder> 
          getResourceHandleValOrBuilderList();
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder getResourceHandleValOrBuilder(
          int index);
  
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      java.util.List<com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto> 
          getVariantValList();
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto getVariantVal(int index);
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      int getVariantValCount();
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      java.util.List<? extends com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder> 
          getVariantValOrBuilderList();
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder getVariantValOrBuilder(
          int index);
  
      /**
       * <pre>
       * DT_UINT32
       * </pre>
       *
       * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
       */
      java.util.List<java.lang.Integer> getUint32ValList();
      /**
       * <pre>
       * DT_UINT32
       * </pre>
       *
       * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
       */
      int getUint32ValCount();
      /**
       * <pre>
       * DT_UINT32
       * </pre>
       *
       * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
       */
      int getUint32Val(int index);
  
      /**
       * <pre>
       * DT_UINT64
       * </pre>
       *
       * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
       */
      java.util.List<java.lang.Long> getUint64ValList();
      /**
       * <pre>
       * DT_UINT64
       * </pre>
       *
       * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
       */
      int getUint64ValCount();
      /**
       * <pre>
       * DT_UINT64
       * </pre>
       *
       * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
       */
      long getUint64Val(int index);
    }
    /**
     * <pre>
     * Protocol buffer representing a tensor.
     * </pre>
     *
     * Protobuf type {@code angel.TensorProto}
     */
    public  static final class TensorProto extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.TensorProto)
        TensorProtoOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TensorProto.newBuilder() to construct.
      private TensorProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TensorProto() {
        dtype_ = 0;
        versionNumber_ = 0;
        tensorContent_ = com.google.protobuf.ByteString.EMPTY;
        halfVal_ = java.util.Collections.emptyList();
        floatVal_ = java.util.Collections.emptyList();
        doubleVal_ = java.util.Collections.emptyList();
        intVal_ = java.util.Collections.emptyList();
        stringVal_ = java.util.Collections.emptyList();
        scomplexVal_ = java.util.Collections.emptyList();
        int64Val_ = java.util.Collections.emptyList();
        boolVal_ = java.util.Collections.emptyList();
        dcomplexVal_ = java.util.Collections.emptyList();
        resourceHandleVal_ = java.util.Collections.emptyList();
        variantVal_ = java.util.Collections.emptyList();
        uint32Val_ = java.util.Collections.emptyList();
        uint64Val_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private TensorProto(
          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: {
                int rawValue = input.readEnum();
  
                dtype_ = rawValue;
                break;
              }
              case 18: {
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder subBuilder = null;
                if (tensorShape_ != null) {
                  subBuilder = tensorShape_.toBuilder();
                }
                tensorShape_ = input.readMessage(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(tensorShape_);
                  tensorShape_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 24: {
  
                versionNumber_ = input.readInt32();
                break;
              }
              case 34: {
  
                tensorContent_ = input.readBytes();
                break;
              }
              case 45: {
                if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                  floatVal_ = new java.util.ArrayList<java.lang.Float>();
                  mutable_bitField0_ |= 0x00000020;
                }
                floatVal_.add(input.readFloat());
                break;
              }
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                  floatVal_ = new java.util.ArrayList<java.lang.Float>();
                  mutable_bitField0_ |= 0x00000020;
                }
                while (input.getBytesUntilLimit() > 0) {
                  floatVal_.add(input.readFloat());
                }
                input.popLimit(limit);
                break;
              }
              case 49: {
                if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                  doubleVal_ = new java.util.ArrayList<java.lang.Double>();
                  mutable_bitField0_ |= 0x00000040;
                }
                doubleVal_.add(input.readDouble());
                break;
              }
              case 50: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                  doubleVal_ = new java.util.ArrayList<java.lang.Double>();
                  mutable_bitField0_ |= 0x00000040;
                }
                while (input.getBytesUntilLimit() > 0) {
                  doubleVal_.add(input.readDouble());
                }
                input.popLimit(limit);
                break;
              }
              case 56: {
                if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                  intVal_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000080;
                }
                intVal_.add(input.readInt32());
                break;
              }
              case 58: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                  intVal_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000080;
                }
                while (input.getBytesUntilLimit() > 0) {
                  intVal_.add(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 66: {
                if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                  stringVal_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
                  mutable_bitField0_ |= 0x00000100;
                }
                stringVal_.add(input.readBytes());
                break;
              }
              case 77: {
                if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                  scomplexVal_ = new java.util.ArrayList<java.lang.Float>();
                  mutable_bitField0_ |= 0x00000200;
                }
                scomplexVal_.add(input.readFloat());
                break;
              }
              case 74: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000200) == 0x00000200) && input.getBytesUntilLimit() > 0) {
                  scomplexVal_ = new java.util.ArrayList<java.lang.Float>();
                  mutable_bitField0_ |= 0x00000200;
                }
                while (input.getBytesUntilLimit() > 0) {
                  scomplexVal_.add(input.readFloat());
                }
                input.popLimit(limit);
                break;
              }
              case 80: {
                if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                  int64Val_ = new java.util.ArrayList<java.lang.Long>();
                  mutable_bitField0_ |= 0x00000400;
                }
                int64Val_.add(input.readInt64());
                break;
              }
              case 82: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000400) == 0x00000400) && input.getBytesUntilLimit() > 0) {
                  int64Val_ = new java.util.ArrayList<java.lang.Long>();
                  mutable_bitField0_ |= 0x00000400;
                }
                while (input.getBytesUntilLimit() > 0) {
                  int64Val_.add(input.readInt64());
                }
                input.popLimit(limit);
                break;
              }
              case 88: {
                if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                  boolVal_ = new java.util.ArrayList<java.lang.Boolean>();
                  mutable_bitField0_ |= 0x00000800;
                }
                boolVal_.add(input.readBool());
                break;
              }
              case 90: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000800) == 0x00000800) && input.getBytesUntilLimit() > 0) {
                  boolVal_ = new java.util.ArrayList<java.lang.Boolean>();
                  mutable_bitField0_ |= 0x00000800;
                }
                while (input.getBytesUntilLimit() > 0) {
                  boolVal_.add(input.readBool());
                }
                input.popLimit(limit);
                break;
              }
              case 97: {
                if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                  dcomplexVal_ = new java.util.ArrayList<java.lang.Double>();
                  mutable_bitField0_ |= 0x00001000;
                }
                dcomplexVal_.add(input.readDouble());
                break;
              }
              case 98: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00001000) == 0x00001000) && input.getBytesUntilLimit() > 0) {
                  dcomplexVal_ = new java.util.ArrayList<java.lang.Double>();
                  mutable_bitField0_ |= 0x00001000;
                }
                while (input.getBytesUntilLimit() > 0) {
                  dcomplexVal_.add(input.readDouble());
                }
                input.popLimit(limit);
                break;
              }
              case 104: {
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                  halfVal_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000010;
                }
                halfVal_.add(input.readInt32());
                break;
              }
              case 106: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                  halfVal_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000010;
                }
                while (input.getBytesUntilLimit() > 0) {
                  halfVal_.add(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 114: {
                if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                  resourceHandleVal_ = new java.util.ArrayList<com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto>();
                  mutable_bitField0_ |= 0x00002000;
                }
                resourceHandleVal_.add(
                    input.readMessage(com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.parser(), extensionRegistry));
                break;
              }
              case 122: {
                if (!((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
                  variantVal_ = new java.util.ArrayList<com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto>();
                  mutable_bitField0_ |= 0x00004000;
                }
                variantVal_.add(
                    input.readMessage(com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.parser(), extensionRegistry));
                break;
              }
              case 128: {
                if (!((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
                  uint32Val_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00008000;
                }
                uint32Val_.add(input.readUInt32());
                break;
              }
              case 130: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00008000) == 0x00008000) && input.getBytesUntilLimit() > 0) {
                  uint32Val_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00008000;
                }
                while (input.getBytesUntilLimit() > 0) {
                  uint32Val_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 136: {
                if (!((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
                  uint64Val_ = new java.util.ArrayList<java.lang.Long>();
                  mutable_bitField0_ |= 0x00010000;
                }
                uint64Val_.add(input.readUInt64());
                break;
              }
              case 138: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00010000) == 0x00010000) && input.getBytesUntilLimit() > 0) {
                  uint64Val_ = new java.util.ArrayList<java.lang.Long>();
                  mutable_bitField0_ |= 0x00010000;
                }
                while (input.getBytesUntilLimit() > 0) {
                  uint64Val_.add(input.readUInt64());
                }
                input.popLimit(limit);
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
            floatVal_ = java.util.Collections.unmodifiableList(floatVal_);
          }
          if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
            doubleVal_ = java.util.Collections.unmodifiableList(doubleVal_);
          }
          if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
            intVal_ = java.util.Collections.unmodifiableList(intVal_);
          }
          if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
            stringVal_ = java.util.Collections.unmodifiableList(stringVal_);
          }
          if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
            scomplexVal_ = java.util.Collections.unmodifiableList(scomplexVal_);
          }
          if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
            int64Val_ = java.util.Collections.unmodifiableList(int64Val_);
          }
          if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
            boolVal_ = java.util.Collections.unmodifiableList(boolVal_);
          }
          if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
            dcomplexVal_ = java.util.Collections.unmodifiableList(dcomplexVal_);
          }
          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
            halfVal_ = java.util.Collections.unmodifiableList(halfVal_);
          }
          if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
            resourceHandleVal_ = java.util.Collections.unmodifiableList(resourceHandleVal_);
          }
          if (((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
            variantVal_ = java.util.Collections.unmodifiableList(variantVal_);
          }
          if (((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
            uint32Val_ = java.util.Collections.unmodifiableList(uint32Val_);
          }
          if (((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
            uint64Val_ = java.util.Collections.unmodifiableList(uint64Val_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_TensorProto_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_TensorProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.core.graph.TensorProtos.TensorProto.class, com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder.class);
      }
  
      private int bitField0_;
      public static final int DTYPE_FIELD_NUMBER = 1;
      private int dtype_;
      /**
       * <code>.angel.DataType dtype = 1;</code>
       */
      public int getDtypeValue() {
        return dtype_;
      }
      /**
       * <code>.angel.DataType dtype = 1;</code>
       */
      public com.tencent.angel.serving.apis.common.TypesProtos.DataType getDtype() {
        com.tencent.angel.serving.apis.common.TypesProtos.DataType result = com.tencent.angel.serving.apis.common.TypesProtos.DataType.valueOf(dtype_);
        return result == null ? com.tencent.angel.serving.apis.common.TypesProtos.DataType.UNRECOGNIZED : result;
      }
  
      public static final int TENSOR_SHAPE_FIELD_NUMBER = 2;
      private com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto tensorShape_;
      /**
       * <pre>
       * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
       */
      public boolean hasTensorShape() {
        return tensorShape_ != null;
      }
      /**
       * <pre>
       * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
       */
      public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getTensorShape() {
        return tensorShape_ == null ? com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : tensorShape_;
      }
      /**
       * <pre>
       * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
       * </pre>
       *
       * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
       */
      public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getTensorShapeOrBuilder() {
        return getTensorShape();
      }
  
      public static final int VERSION_NUMBER_FIELD_NUMBER = 3;
      private int versionNumber_;
      /**
       * <pre>
       * Version number.
       * In version 0, if the "repeated xxx" representations contain only one
       * element, that element is repeated to fill the shape.  This makes it easy
       * to represent a constant Tensor with a single value.
       * </pre>
       *
       * <code>int32 version_number = 3;</code>
       */
      public int getVersionNumber() {
        return versionNumber_;
      }
  
      public static final int TENSOR_CONTENT_FIELD_NUMBER = 4;
      private com.google.protobuf.ByteString tensorContent_;
      /**
       * <pre>
       * Serialized raw tensor content from either Tensor::AsProtoTensorContent or
       * memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation
       * can be used for all tensor types. The purpose of this representation is to
       * reduce serialization overhead during RPC call by avoiding serialization of
       * many repeated small items.
       * </pre>
       *
       * <code>bytes tensor_content = 4;</code>
       */
      public com.google.protobuf.ByteString getTensorContent() {
        return tensorContent_;
      }
  
      public static final int HALF_VAL_FIELD_NUMBER = 13;
      private java.util.List<java.lang.Integer> halfVal_;
      /**
       * <pre>
       * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
       * have some pointless zero padding for each value here.
       * </pre>
       *
       * <code>repeated int32 half_val = 13 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getHalfValList() {
        return halfVal_;
      }
      /**
       * <pre>
       * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
       * have some pointless zero padding for each value here.
       * </pre>
       *
       * <code>repeated int32 half_val = 13 [packed = true];</code>
       */
      public int getHalfValCount() {
        return halfVal_.size();
      }
      /**
       * <pre>
       * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
       * have some pointless zero padding for each value here.
       * </pre>
       *
       * <code>repeated int32 half_val = 13 [packed = true];</code>
       */
      public int getHalfVal(int index) {
        return halfVal_.get(index);
      }
      private int halfValMemoizedSerializedSize = -1;
  
      public static final int FLOAT_VAL_FIELD_NUMBER = 5;
      private java.util.List<java.lang.Float> floatVal_;
      /**
       * <pre>
       * DT_FLOAT.
       * </pre>
       *
       * <code>repeated float float_val = 5 [packed = true];</code>
       */
      public java.util.List<java.lang.Float>
          getFloatValList() {
        return floatVal_;
      }
      /**
       * <pre>
       * DT_FLOAT.
       * </pre>
       *
       * <code>repeated float float_val = 5 [packed = true];</code>
       */
      public int getFloatValCount() {
        return floatVal_.size();
      }
      /**
       * <pre>
       * DT_FLOAT.
       * </pre>
       *
       * <code>repeated float float_val = 5 [packed = true];</code>
       */
      public float getFloatVal(int index) {
        return floatVal_.get(index);
      }
      private int floatValMemoizedSerializedSize = -1;
  
      public static final int DOUBLE_VAL_FIELD_NUMBER = 6;
      private java.util.List<java.lang.Double> doubleVal_;
      /**
       * <pre>
       * DT_DOUBLE.
       * </pre>
       *
       * <code>repeated double double_val = 6 [packed = true];</code>
       */
      public java.util.List<java.lang.Double>
          getDoubleValList() {
        return doubleVal_;
      }
      /**
       * <pre>
       * DT_DOUBLE.
       * </pre>
       *
       * <code>repeated double double_val = 6 [packed = true];</code>
       */
      public int getDoubleValCount() {
        return doubleVal_.size();
      }
      /**
       * <pre>
       * DT_DOUBLE.
       * </pre>
       *
       * <code>repeated double double_val = 6 [packed = true];</code>
       */
      public double getDoubleVal(int index) {
        return doubleVal_.get(index);
      }
      private int doubleValMemoizedSerializedSize = -1;
  
      public static final int INT_VAL_FIELD_NUMBER = 7;
      private java.util.List<java.lang.Integer> intVal_;
      /**
       * <pre>
       * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
       * </pre>
       *
       * <code>repeated int32 int_val = 7 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getIntValList() {
        return intVal_;
      }
      /**
       * <pre>
       * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
       * </pre>
       *
       * <code>repeated int32 int_val = 7 [packed = true];</code>
       */
      public int getIntValCount() {
        return intVal_.size();
      }
      /**
       * <pre>
       * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
       * </pre>
       *
       * <code>repeated int32 int_val = 7 [packed = true];</code>
       */
      public int getIntVal(int index) {
        return intVal_.get(index);
      }
      private int intValMemoizedSerializedSize = -1;
  
      public static final int STRING_VAL_FIELD_NUMBER = 8;
      private java.util.List<com.google.protobuf.ByteString> stringVal_;
      /**
       * <pre>
       * DT_STRING
       * </pre>
       *
       * <code>repeated bytes string_val = 8;</code>
       */
      public java.util.List<com.google.protobuf.ByteString>
          getStringValList() {
        return stringVal_;
      }
      /**
       * <pre>
       * DT_STRING
       * </pre>
       *
       * <code>repeated bytes string_val = 8;</code>
       */
      public int getStringValCount() {
        return stringVal_.size();
      }
      /**
       * <pre>
       * DT_STRING
       * </pre>
       *
       * <code>repeated bytes string_val = 8;</code>
       */
      public com.google.protobuf.ByteString getStringVal(int index) {
        return stringVal_.get(index);
      }
  
      public static final int SCOMPLEX_VAL_FIELD_NUMBER = 9;
      private java.util.List<java.lang.Float> scomplexVal_;
      /**
       * <pre>
       * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
       * and imaginary parts of i-th single precision complex.
       * </pre>
       *
       * <code>repeated float scomplex_val = 9 [packed = true];</code>
       */
      public java.util.List<java.lang.Float>
          getScomplexValList() {
        return scomplexVal_;
      }
      /**
       * <pre>
       * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
       * and imaginary parts of i-th single precision complex.
       * </pre>
       *
       * <code>repeated float scomplex_val = 9 [packed = true];</code>
       */
      public int getScomplexValCount() {
        return scomplexVal_.size();
      }
      /**
       * <pre>
       * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
       * and imaginary parts of i-th single precision complex.
       * </pre>
       *
       * <code>repeated float scomplex_val = 9 [packed = true];</code>
       */
      public float getScomplexVal(int index) {
        return scomplexVal_.get(index);
      }
      private int scomplexValMemoizedSerializedSize = -1;
  
      public static final int INT64_VAL_FIELD_NUMBER = 10;
      private java.util.List<java.lang.Long> int64Val_;
      /**
       * <pre>
       * DT_INT64
       * </pre>
       *
       * <code>repeated int64 int64_val = 10 [packed = true];</code>
       */
      public java.util.List<java.lang.Long>
          getInt64ValList() {
        return int64Val_;
      }
      /**
       * <pre>
       * DT_INT64
       * </pre>
       *
       * <code>repeated int64 int64_val = 10 [packed = true];</code>
       */
      public int getInt64ValCount() {
        return int64Val_.size();
      }
      /**
       * <pre>
       * DT_INT64
       * </pre>
       *
       * <code>repeated int64 int64_val = 10 [packed = true];</code>
       */
      public long getInt64Val(int index) {
        return int64Val_.get(index);
      }
      private int int64ValMemoizedSerializedSize = -1;
  
      public static final int BOOL_VAL_FIELD_NUMBER = 11;
      private java.util.List<java.lang.Boolean> boolVal_;
      /**
       * <pre>
       * DT_BOOL
       * </pre>
       *
       * <code>repeated bool bool_val = 11 [packed = true];</code>
       */
      public java.util.List<java.lang.Boolean>
          getBoolValList() {
        return boolVal_;
      }
      /**
       * <pre>
       * DT_BOOL
       * </pre>
       *
       * <code>repeated bool bool_val = 11 [packed = true];</code>
       */
      public int getBoolValCount() {
        return boolVal_.size();
      }
      /**
       * <pre>
       * DT_BOOL
       * </pre>
       *
       * <code>repeated bool bool_val = 11 [packed = true];</code>
       */
      public boolean getBoolVal(int index) {
        return boolVal_.get(index);
      }
      private int boolValMemoizedSerializedSize = -1;
  
      public static final int DCOMPLEX_VAL_FIELD_NUMBER = 12;
      private java.util.List<java.lang.Double> dcomplexVal_;
      /**
       * <pre>
       * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
       * and imaginary parts of i-th double precision complex.
       * </pre>
       *
       * <code>repeated double dcomplex_val = 12 [packed = true];</code>
       */
      public java.util.List<java.lang.Double>
          getDcomplexValList() {
        return dcomplexVal_;
      }
      /**
       * <pre>
       * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
       * and imaginary parts of i-th double precision complex.
       * </pre>
       *
       * <code>repeated double dcomplex_val = 12 [packed = true];</code>
       */
      public int getDcomplexValCount() {
        return dcomplexVal_.size();
      }
      /**
       * <pre>
       * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
       * and imaginary parts of i-th double precision complex.
       * </pre>
       *
       * <code>repeated double dcomplex_val = 12 [packed = true];</code>
       */
      public double getDcomplexVal(int index) {
        return dcomplexVal_.get(index);
      }
      private int dcomplexValMemoizedSerializedSize = -1;
  
      public static final int RESOURCE_HANDLE_VAL_FIELD_NUMBER = 14;
      private java.util.List<com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto> resourceHandleVal_;
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      public java.util.List<com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto> getResourceHandleValList() {
        return resourceHandleVal_;
      }
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      public java.util.List<? extends com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder> 
          getResourceHandleValOrBuilderList() {
        return resourceHandleVal_;
      }
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      public int getResourceHandleValCount() {
        return resourceHandleVal_.size();
      }
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      public com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto getResourceHandleVal(int index) {
        return resourceHandleVal_.get(index);
      }
      /**
       * <pre>
       * DT_RESOURCE
       * </pre>
       *
       * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
       */
      public com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder getResourceHandleValOrBuilder(
          int index) {
        return resourceHandleVal_.get(index);
      }
  
      public static final int VARIANT_VAL_FIELD_NUMBER = 15;
      private java.util.List<com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto> variantVal_;
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      public java.util.List<com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto> getVariantValList() {
        return variantVal_;
      }
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      public java.util.List<? extends com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder> 
          getVariantValOrBuilderList() {
        return variantVal_;
      }
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      public int getVariantValCount() {
        return variantVal_.size();
      }
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto getVariantVal(int index) {
        return variantVal_.get(index);
      }
      /**
       * <pre>
       * DT_VARIANT
       * </pre>
       *
       * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
       */
      public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder getVariantValOrBuilder(
          int index) {
        return variantVal_.get(index);
      }
  
      public static final int UINT32_VAL_FIELD_NUMBER = 16;
      private java.util.List<java.lang.Integer> uint32Val_;
      /**
       * <pre>
       * DT_UINT32
       * </pre>
       *
       * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getUint32ValList() {
        return uint32Val_;
      }
      /**
       * <pre>
       * DT_UINT32
       * </pre>
       *
       * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
       */
      public int getUint32ValCount() {
        return uint32Val_.size();
      }
      /**
       * <pre>
       * DT_UINT32
       * </pre>
       *
       * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
       */
      public int getUint32Val(int index) {
        return uint32Val_.get(index);
      }
      private int uint32ValMemoizedSerializedSize = -1;
  
      public static final int UINT64_VAL_FIELD_NUMBER = 17;
      private java.util.List<java.lang.Long> uint64Val_;
      /**
       * <pre>
       * DT_UINT64
       * </pre>
       *
       * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
       */
      public java.util.List<java.lang.Long>
          getUint64ValList() {
        return uint64Val_;
      }
      /**
       * <pre>
       * DT_UINT64
       * </pre>
       *
       * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
       */
      public int getUint64ValCount() {
        return uint64Val_.size();
      }
      /**
       * <pre>
       * DT_UINT64
       * </pre>
       *
       * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
       */
      public long getUint64Val(int index) {
        return uint64Val_.get(index);
      }
      private int uint64ValMemoizedSerializedSize = -1;
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (dtype_ != com.tencent.angel.serving.apis.common.TypesProtos.DataType.DT_INVALID.getNumber()) {
          output.writeEnum(1, dtype_);
        }
        if (tensorShape_ != null) {
          output.writeMessage(2, getTensorShape());
        }
        if (versionNumber_ != 0) {
          output.writeInt32(3, versionNumber_);
        }
        if (!tensorContent_.isEmpty()) {
          output.writeBytes(4, tensorContent_);
        }
        if (getFloatValList().size() > 0) {
          output.writeUInt32NoTag(42);
          output.writeUInt32NoTag(floatValMemoizedSerializedSize);
        }
        for (int i = 0; i < floatVal_.size(); i++) {
          output.writeFloatNoTag(floatVal_.get(i));
        }
        if (getDoubleValList().size() > 0) {
          output.writeUInt32NoTag(50);
          output.writeUInt32NoTag(doubleValMemoizedSerializedSize);
        }
        for (int i = 0; i < doubleVal_.size(); i++) {
          output.writeDoubleNoTag(doubleVal_.get(i));
        }
        if (getIntValList().size() > 0) {
          output.writeUInt32NoTag(58);
          output.writeUInt32NoTag(intValMemoizedSerializedSize);
        }
        for (int i = 0; i < intVal_.size(); i++) {
          output.writeInt32NoTag(intVal_.get(i));
        }
        for (int i = 0; i < stringVal_.size(); i++) {
          output.writeBytes(8, stringVal_.get(i));
        }
        if (getScomplexValList().size() > 0) {
          output.writeUInt32NoTag(74);
          output.writeUInt32NoTag(scomplexValMemoizedSerializedSize);
        }
        for (int i = 0; i < scomplexVal_.size(); i++) {
          output.writeFloatNoTag(scomplexVal_.get(i));
        }
        if (getInt64ValList().size() > 0) {
          output.writeUInt32NoTag(82);
          output.writeUInt32NoTag(int64ValMemoizedSerializedSize);
        }
        for (int i = 0; i < int64Val_.size(); i++) {
          output.writeInt64NoTag(int64Val_.get(i));
        }
        if (getBoolValList().size() > 0) {
          output.writeUInt32NoTag(90);
          output.writeUInt32NoTag(boolValMemoizedSerializedSize);
        }
        for (int i = 0; i < boolVal_.size(); i++) {
          output.writeBoolNoTag(boolVal_.get(i));
        }
        if (getDcomplexValList().size() > 0) {
          output.writeUInt32NoTag(98);
          output.writeUInt32NoTag(dcomplexValMemoizedSerializedSize);
        }
        for (int i = 0; i < dcomplexVal_.size(); i++) {
          output.writeDoubleNoTag(dcomplexVal_.get(i));
        }
        if (getHalfValList().size() > 0) {
          output.writeUInt32NoTag(106);
          output.writeUInt32NoTag(halfValMemoizedSerializedSize);
        }
        for (int i = 0; i < halfVal_.size(); i++) {
          output.writeInt32NoTag(halfVal_.get(i));
        }
        for (int i = 0; i < resourceHandleVal_.size(); i++) {
          output.writeMessage(14, resourceHandleVal_.get(i));
        }
        for (int i = 0; i < variantVal_.size(); i++) {
          output.writeMessage(15, variantVal_.get(i));
        }
        if (getUint32ValList().size() > 0) {
          output.writeUInt32NoTag(130);
          output.writeUInt32NoTag(uint32ValMemoizedSerializedSize);
        }
        for (int i = 0; i < uint32Val_.size(); i++) {
          output.writeUInt32NoTag(uint32Val_.get(i));
        }
        if (getUint64ValList().size() > 0) {
          output.writeUInt32NoTag(138);
          output.writeUInt32NoTag(uint64ValMemoizedSerializedSize);
        }
        for (int i = 0; i < uint64Val_.size(); i++) {
          output.writeUInt64NoTag(uint64Val_.get(i));
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (dtype_ != com.tencent.angel.serving.apis.common.TypesProtos.DataType.DT_INVALID.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, dtype_);
        }
        if (tensorShape_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getTensorShape());
        }
        if (versionNumber_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, versionNumber_);
        }
        if (!tensorContent_.isEmpty()) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, tensorContent_);
        }
        {
          int dataSize = 0;
          dataSize = 4 * getFloatValList().size();
          size += dataSize;
          if (!getFloatValList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          floatValMemoizedSerializedSize = dataSize;
        }
        {
          int dataSize = 0;
          dataSize = 8 * getDoubleValList().size();
          size += dataSize;
          if (!getDoubleValList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          doubleValMemoizedSerializedSize = dataSize;
        }
        {
          int dataSize = 0;
          for (int i = 0; i < intVal_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(intVal_.get(i));
          }
          size += dataSize;
          if (!getIntValList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          intValMemoizedSerializedSize = dataSize;
        }
        {
          int dataSize = 0;
          for (int i = 0; i < stringVal_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeBytesSizeNoTag(stringVal_.get(i));
          }
          size += dataSize;
          size += 1 * getStringValList().size();
        }
        {
          int dataSize = 0;
          dataSize = 4 * getScomplexValList().size();
          size += dataSize;
          if (!getScomplexValList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          scomplexValMemoizedSerializedSize = dataSize;
        }
        {
          int dataSize = 0;
          for (int i = 0; i < int64Val_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt64SizeNoTag(int64Val_.get(i));
          }
          size += dataSize;
          if (!getInt64ValList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          int64ValMemoizedSerializedSize = dataSize;
        }
        {
          int dataSize = 0;
          dataSize = 1 * getBoolValList().size();
          size += dataSize;
          if (!getBoolValList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          boolValMemoizedSerializedSize = dataSize;
        }
        {
          int dataSize = 0;
          dataSize = 8 * getDcomplexValList().size();
          size += dataSize;
          if (!getDcomplexValList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          dcomplexValMemoizedSerializedSize = dataSize;
        }
        {
          int dataSize = 0;
          for (int i = 0; i < halfVal_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(halfVal_.get(i));
          }
          size += dataSize;
          if (!getHalfValList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          halfValMemoizedSerializedSize = dataSize;
        }
        for (int i = 0; i < resourceHandleVal_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(14, resourceHandleVal_.get(i));
        }
        for (int i = 0; i < variantVal_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(15, variantVal_.get(i));
        }
        {
          int dataSize = 0;
          for (int i = 0; i < uint32Val_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(uint32Val_.get(i));
          }
          size += dataSize;
          if (!getUint32ValList().isEmpty()) {
            size += 2;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          uint32ValMemoizedSerializedSize = dataSize;
        }
        {
          int dataSize = 0;
          for (int i = 0; i < uint64Val_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt64SizeNoTag(uint64Val_.get(i));
          }
          size += dataSize;
          if (!getUint64ValList().isEmpty()) {
            size += 2;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          uint64ValMemoizedSerializedSize = dataSize;
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.tencent.angel.core.graph.TensorProtos.TensorProto)) {
          return super.equals(obj);
        }
        com.tencent.angel.core.graph.TensorProtos.TensorProto other = (com.tencent.angel.core.graph.TensorProtos.TensorProto) obj;
  
        boolean result = true;
        result = result && dtype_ == other.dtype_;
        result = result && (hasTensorShape() == other.hasTensorShape());
        if (hasTensorShape()) {
          result = result && getTensorShape()
              .equals(other.getTensorShape());
        }
        result = result && (getVersionNumber()
            == other.getVersionNumber());
        result = result && getTensorContent()
            .equals(other.getTensorContent());
        result = result && getHalfValList()
            .equals(other.getHalfValList());
        result = result && getFloatValList()
            .equals(other.getFloatValList());
        result = result && getDoubleValList()
            .equals(other.getDoubleValList());
        result = result && getIntValList()
            .equals(other.getIntValList());
        result = result && getStringValList()
            .equals(other.getStringValList());
        result = result && getScomplexValList()
            .equals(other.getScomplexValList());
        result = result && getInt64ValList()
            .equals(other.getInt64ValList());
        result = result && getBoolValList()
            .equals(other.getBoolValList());
        result = result && getDcomplexValList()
            .equals(other.getDcomplexValList());
        result = result && getResourceHandleValList()
            .equals(other.getResourceHandleValList());
        result = result && getVariantValList()
            .equals(other.getVariantValList());
        result = result && getUint32ValList()
            .equals(other.getUint32ValList());
        result = result && getUint64ValList()
            .equals(other.getUint64ValList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + DTYPE_FIELD_NUMBER;
        hash = (53 * hash) + dtype_;
        if (hasTensorShape()) {
          hash = (37 * hash) + TENSOR_SHAPE_FIELD_NUMBER;
          hash = (53 * hash) + getTensorShape().hashCode();
        }
        hash = (37 * hash) + VERSION_NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getVersionNumber();
        hash = (37 * hash) + TENSOR_CONTENT_FIELD_NUMBER;
        hash = (53 * hash) + getTensorContent().hashCode();
        if (getHalfValCount() > 0) {
          hash = (37 * hash) + HALF_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getHalfValList().hashCode();
        }
        if (getFloatValCount() > 0) {
          hash = (37 * hash) + FLOAT_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getFloatValList().hashCode();
        }
        if (getDoubleValCount() > 0) {
          hash = (37 * hash) + DOUBLE_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getDoubleValList().hashCode();
        }
        if (getIntValCount() > 0) {
          hash = (37 * hash) + INT_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getIntValList().hashCode();
        }
        if (getStringValCount() > 0) {
          hash = (37 * hash) + STRING_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getStringValList().hashCode();
        }
        if (getScomplexValCount() > 0) {
          hash = (37 * hash) + SCOMPLEX_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getScomplexValList().hashCode();
        }
        if (getInt64ValCount() > 0) {
          hash = (37 * hash) + INT64_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getInt64ValList().hashCode();
        }
        if (getBoolValCount() > 0) {
          hash = (37 * hash) + BOOL_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getBoolValList().hashCode();
        }
        if (getDcomplexValCount() > 0) {
          hash = (37 * hash) + DCOMPLEX_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getDcomplexValList().hashCode();
        }
        if (getResourceHandleValCount() > 0) {
          hash = (37 * hash) + RESOURCE_HANDLE_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getResourceHandleValList().hashCode();
        }
        if (getVariantValCount() > 0) {
          hash = (37 * hash) + VARIANT_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getVariantValList().hashCode();
        }
        if (getUint32ValCount() > 0) {
          hash = (37 * hash) + UINT32_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getUint32ValList().hashCode();
        }
        if (getUint64ValCount() > 0) {
          hash = (37 * hash) + UINT64_VAL_FIELD_NUMBER;
          hash = (53 * hash) + getUint64ValList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.core.graph.TensorProtos.TensorProto parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.TensorProtos.TensorProto 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.TensorProtos.TensorProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.TensorProtos.TensorProto 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.TensorProtos.TensorProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.TensorProtos.TensorProto 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.TensorProtos.TensorProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.graph.TensorProtos.TensorProto 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.TensorProtos.TensorProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.graph.TensorProtos.TensorProto 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.TensorProtos.TensorProto 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.TensorProtos.TensorProto 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.TensorProtos.TensorProto 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>
       * Protocol buffer representing a tensor.
       * </pre>
       *
       * Protobuf type {@code angel.TensorProto}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.TensorProto)
          com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_TensorProto_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_TensorProto_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.graph.TensorProtos.TensorProto.class, com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder.class);
        }
  
        // Construct using com.tencent.angel.core.graph.TensorProtos.TensorProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getResourceHandleValFieldBuilder();
            getVariantValFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          dtype_ = 0;
  
          if (tensorShapeBuilder_ == null) {
            tensorShape_ = null;
          } else {
            tensorShape_ = null;
            tensorShapeBuilder_ = null;
          }
          versionNumber_ = 0;
  
          tensorContent_ = com.google.protobuf.ByteString.EMPTY;
  
          halfVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          floatVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          doubleVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          intVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          stringVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          scomplexVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          int64Val_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          boolVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          dcomplexVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          if (resourceHandleValBuilder_ == null) {
            resourceHandleVal_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            resourceHandleValBuilder_.clear();
          }
          if (variantValBuilder_ == null) {
            variantVal_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            variantValBuilder_.clear();
          }
          uint32Val_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
          uint64Val_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00010000);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_TensorProto_descriptor;
        }
  
        public com.tencent.angel.core.graph.TensorProtos.TensorProto getDefaultInstanceForType() {
          return com.tencent.angel.core.graph.TensorProtos.TensorProto.getDefaultInstance();
        }
  
        public com.tencent.angel.core.graph.TensorProtos.TensorProto build() {
          com.tencent.angel.core.graph.TensorProtos.TensorProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.core.graph.TensorProtos.TensorProto buildPartial() {
          com.tencent.angel.core.graph.TensorProtos.TensorProto result = new com.tencent.angel.core.graph.TensorProtos.TensorProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          result.dtype_ = dtype_;
          if (tensorShapeBuilder_ == null) {
            result.tensorShape_ = tensorShape_;
          } else {
            result.tensorShape_ = tensorShapeBuilder_.build();
          }
          result.versionNumber_ = versionNumber_;
          result.tensorContent_ = tensorContent_;
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            halfVal_ = java.util.Collections.unmodifiableList(halfVal_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.halfVal_ = halfVal_;
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            floatVal_ = java.util.Collections.unmodifiableList(floatVal_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.floatVal_ = floatVal_;
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            doubleVal_ = java.util.Collections.unmodifiableList(doubleVal_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.doubleVal_ = doubleVal_;
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            intVal_ = java.util.Collections.unmodifiableList(intVal_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.intVal_ = intVal_;
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            stringVal_ = java.util.Collections.unmodifiableList(stringVal_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.stringVal_ = stringVal_;
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            scomplexVal_ = java.util.Collections.unmodifiableList(scomplexVal_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.scomplexVal_ = scomplexVal_;
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            int64Val_ = java.util.Collections.unmodifiableList(int64Val_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.int64Val_ = int64Val_;
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            boolVal_ = java.util.Collections.unmodifiableList(boolVal_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.boolVal_ = boolVal_;
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            dcomplexVal_ = java.util.Collections.unmodifiableList(dcomplexVal_);
            bitField0_ = (bitField0_ & ~0x00001000);
          }
          result.dcomplexVal_ = dcomplexVal_;
          if (resourceHandleValBuilder_ == null) {
            if (((bitField0_ & 0x00002000) == 0x00002000)) {
              resourceHandleVal_ = java.util.Collections.unmodifiableList(resourceHandleVal_);
              bitField0_ = (bitField0_ & ~0x00002000);
            }
            result.resourceHandleVal_ = resourceHandleVal_;
          } else {
            result.resourceHandleVal_ = resourceHandleValBuilder_.build();
          }
          if (variantValBuilder_ == null) {
            if (((bitField0_ & 0x00004000) == 0x00004000)) {
              variantVal_ = java.util.Collections.unmodifiableList(variantVal_);
              bitField0_ = (bitField0_ & ~0x00004000);
            }
            result.variantVal_ = variantVal_;
          } else {
            result.variantVal_ = variantValBuilder_.build();
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            uint32Val_ = java.util.Collections.unmodifiableList(uint32Val_);
            bitField0_ = (bitField0_ & ~0x00008000);
          }
          result.uint32Val_ = uint32Val_;
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            uint64Val_ = java.util.Collections.unmodifiableList(uint64Val_);
            bitField0_ = (bitField0_ & ~0x00010000);
          }
          result.uint64Val_ = uint64Val_;
          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.TensorProtos.TensorProto) {
            return mergeFrom((com.tencent.angel.core.graph.TensorProtos.TensorProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.core.graph.TensorProtos.TensorProto other) {
          if (other == com.tencent.angel.core.graph.TensorProtos.TensorProto.getDefaultInstance()) return this;
          if (other.dtype_ != 0) {
            setDtypeValue(other.getDtypeValue());
          }
          if (other.hasTensorShape()) {
            mergeTensorShape(other.getTensorShape());
          }
          if (other.getVersionNumber() != 0) {
            setVersionNumber(other.getVersionNumber());
          }
          if (other.getTensorContent() != com.google.protobuf.ByteString.EMPTY) {
            setTensorContent(other.getTensorContent());
          }
          if (!other.halfVal_.isEmpty()) {
            if (halfVal_.isEmpty()) {
              halfVal_ = other.halfVal_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureHalfValIsMutable();
              halfVal_.addAll(other.halfVal_);
            }
            onChanged();
          }
          if (!other.floatVal_.isEmpty()) {
            if (floatVal_.isEmpty()) {
              floatVal_ = other.floatVal_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureFloatValIsMutable();
              floatVal_.addAll(other.floatVal_);
            }
            onChanged();
          }
          if (!other.doubleVal_.isEmpty()) {
            if (doubleVal_.isEmpty()) {
              doubleVal_ = other.doubleVal_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureDoubleValIsMutable();
              doubleVal_.addAll(other.doubleVal_);
            }
            onChanged();
          }
          if (!other.intVal_.isEmpty()) {
            if (intVal_.isEmpty()) {
              intVal_ = other.intVal_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureIntValIsMutable();
              intVal_.addAll(other.intVal_);
            }
            onChanged();
          }
          if (!other.stringVal_.isEmpty()) {
            if (stringVal_.isEmpty()) {
              stringVal_ = other.stringVal_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureStringValIsMutable();
              stringVal_.addAll(other.stringVal_);
            }
            onChanged();
          }
          if (!other.scomplexVal_.isEmpty()) {
            if (scomplexVal_.isEmpty()) {
              scomplexVal_ = other.scomplexVal_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureScomplexValIsMutable();
              scomplexVal_.addAll(other.scomplexVal_);
            }
            onChanged();
          }
          if (!other.int64Val_.isEmpty()) {
            if (int64Val_.isEmpty()) {
              int64Val_ = other.int64Val_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureInt64ValIsMutable();
              int64Val_.addAll(other.int64Val_);
            }
            onChanged();
          }
          if (!other.boolVal_.isEmpty()) {
            if (boolVal_.isEmpty()) {
              boolVal_ = other.boolVal_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureBoolValIsMutable();
              boolVal_.addAll(other.boolVal_);
            }
            onChanged();
          }
          if (!other.dcomplexVal_.isEmpty()) {
            if (dcomplexVal_.isEmpty()) {
              dcomplexVal_ = other.dcomplexVal_;
              bitField0_ = (bitField0_ & ~0x00001000);
            } else {
              ensureDcomplexValIsMutable();
              dcomplexVal_.addAll(other.dcomplexVal_);
            }
            onChanged();
          }
          if (resourceHandleValBuilder_ == null) {
            if (!other.resourceHandleVal_.isEmpty()) {
              if (resourceHandleVal_.isEmpty()) {
                resourceHandleVal_ = other.resourceHandleVal_;
                bitField0_ = (bitField0_ & ~0x00002000);
              } else {
                ensureResourceHandleValIsMutable();
                resourceHandleVal_.addAll(other.resourceHandleVal_);
              }
              onChanged();
            }
          } else {
            if (!other.resourceHandleVal_.isEmpty()) {
              if (resourceHandleValBuilder_.isEmpty()) {
                resourceHandleValBuilder_.dispose();
                resourceHandleValBuilder_ = null;
                resourceHandleVal_ = other.resourceHandleVal_;
                bitField0_ = (bitField0_ & ~0x00002000);
                resourceHandleValBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getResourceHandleValFieldBuilder() : null;
              } else {
                resourceHandleValBuilder_.addAllMessages(other.resourceHandleVal_);
              }
            }
          }
          if (variantValBuilder_ == null) {
            if (!other.variantVal_.isEmpty()) {
              if (variantVal_.isEmpty()) {
                variantVal_ = other.variantVal_;
                bitField0_ = (bitField0_ & ~0x00004000);
              } else {
                ensureVariantValIsMutable();
                variantVal_.addAll(other.variantVal_);
              }
              onChanged();
            }
          } else {
            if (!other.variantVal_.isEmpty()) {
              if (variantValBuilder_.isEmpty()) {
                variantValBuilder_.dispose();
                variantValBuilder_ = null;
                variantVal_ = other.variantVal_;
                bitField0_ = (bitField0_ & ~0x00004000);
                variantValBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getVariantValFieldBuilder() : null;
              } else {
                variantValBuilder_.addAllMessages(other.variantVal_);
              }
            }
          }
          if (!other.uint32Val_.isEmpty()) {
            if (uint32Val_.isEmpty()) {
              uint32Val_ = other.uint32Val_;
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              ensureUint32ValIsMutable();
              uint32Val_.addAll(other.uint32Val_);
            }
            onChanged();
          }
          if (!other.uint64Val_.isEmpty()) {
            if (uint64Val_.isEmpty()) {
              uint64Val_ = other.uint64Val_;
              bitField0_ = (bitField0_ & ~0x00010000);
            } else {
              ensureUint64ValIsMutable();
              uint64Val_.addAll(other.uint64Val_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.tencent.angel.core.graph.TensorProtos.TensorProto parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.core.graph.TensorProtos.TensorProto) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int dtype_ = 0;
        /**
         * <code>.angel.DataType dtype = 1;</code>
         */
        public int getDtypeValue() {
          return dtype_;
        }
        /**
         * <code>.angel.DataType dtype = 1;</code>
         */
        public Builder setDtypeValue(int value) {
          dtype_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.angel.DataType dtype = 1;</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 = 1;</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 = 1;</code>
         */
        public Builder clearDtype() {
          
          dtype_ = 0;
          onChanged();
          return this;
        }
  
        private com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto tensorShape_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder> tensorShapeBuilder_;
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        public boolean hasTensorShape() {
          return tensorShapeBuilder_ != null || tensorShape_ != null;
        }
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto getTensorShape() {
          if (tensorShapeBuilder_ == null) {
            return tensorShape_ == null ? com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : tensorShape_;
          } else {
            return tensorShapeBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        public Builder setTensorShape(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto value) {
          if (tensorShapeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            tensorShape_ = value;
            onChanged();
          } else {
            tensorShapeBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        public Builder setTensorShape(
            com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder builderForValue) {
          if (tensorShapeBuilder_ == null) {
            tensorShape_ = builderForValue.build();
            onChanged();
          } else {
            tensorShapeBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        public Builder mergeTensorShape(com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto value) {
          if (tensorShapeBuilder_ == null) {
            if (tensorShape_ != null) {
              tensorShape_ =
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.newBuilder(tensorShape_).mergeFrom(value).buildPartial();
            } else {
              tensorShape_ = value;
            }
            onChanged();
          } else {
            tensorShapeBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        public Builder clearTensorShape() {
          if (tensorShapeBuilder_ == null) {
            tensorShape_ = null;
            onChanged();
          } else {
            tensorShape_ = null;
            tensorShapeBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder getTensorShapeBuilder() {
          
          onChanged();
          return getTensorShapeFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        public com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder getTensorShapeOrBuilder() {
          if (tensorShapeBuilder_ != null) {
            return tensorShapeBuilder_.getMessageOrBuilder();
          } else {
            return tensorShape_ == null ?
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.getDefaultInstance() : tensorShape_;
          }
        }
        /**
         * <pre>
         * Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
         * </pre>
         *
         * <code>.angel.TensorShapeProto tensor_shape = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder> 
            getTensorShapeFieldBuilder() {
          if (tensorShapeBuilder_ == null) {
            tensorShapeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProto.Builder, com.tencent.angel.serving.apis.common.TensorShapeProtos.TensorShapeProtoOrBuilder>(
                    getTensorShape(),
                    getParentForChildren(),
                    isClean());
            tensorShape_ = null;
          }
          return tensorShapeBuilder_;
        }
  
        private int versionNumber_ ;
        /**
         * <pre>
         * Version number.
         * In version 0, if the "repeated xxx" representations contain only one
         * element, that element is repeated to fill the shape.  This makes it easy
         * to represent a constant Tensor with a single value.
         * </pre>
         *
         * <code>int32 version_number = 3;</code>
         */
        public int getVersionNumber() {
          return versionNumber_;
        }
        /**
         * <pre>
         * Version number.
         * In version 0, if the "repeated xxx" representations contain only one
         * element, that element is repeated to fill the shape.  This makes it easy
         * to represent a constant Tensor with a single value.
         * </pre>
         *
         * <code>int32 version_number = 3;</code>
         */
        public Builder setVersionNumber(int value) {
          
          versionNumber_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Version number.
         * In version 0, if the "repeated xxx" representations contain only one
         * element, that element is repeated to fill the shape.  This makes it easy
         * to represent a constant Tensor with a single value.
         * </pre>
         *
         * <code>int32 version_number = 3;</code>
         */
        public Builder clearVersionNumber() {
          
          versionNumber_ = 0;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString tensorContent_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <pre>
         * Serialized raw tensor content from either Tensor::AsProtoTensorContent or
         * memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation
         * can be used for all tensor types. The purpose of this representation is to
         * reduce serialization overhead during RPC call by avoiding serialization of
         * many repeated small items.
         * </pre>
         *
         * <code>bytes tensor_content = 4;</code>
         */
        public com.google.protobuf.ByteString getTensorContent() {
          return tensorContent_;
        }
        /**
         * <pre>
         * Serialized raw tensor content from either Tensor::AsProtoTensorContent or
         * memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation
         * can be used for all tensor types. The purpose of this representation is to
         * reduce serialization overhead during RPC call by avoiding serialization of
         * many repeated small items.
         * </pre>
         *
         * <code>bytes tensor_content = 4;</code>
         */
        public Builder setTensorContent(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    
          tensorContent_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Serialized raw tensor content from either Tensor::AsProtoTensorContent or
         * memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation
         * can be used for all tensor types. The purpose of this representation is to
         * reduce serialization overhead during RPC call by avoiding serialization of
         * many repeated small items.
         * </pre>
         *
         * <code>bytes tensor_content = 4;</code>
         */
        public Builder clearTensorContent() {
          
          tensorContent_ = getDefaultInstance().getTensorContent();
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> halfVal_ = java.util.Collections.emptyList();
        private void ensureHalfValIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            halfVal_ = new java.util.ArrayList<java.lang.Integer>(halfVal_);
            bitField0_ |= 0x00000010;
           }
        }
        /**
         * <pre>
         * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
         * have some pointless zero padding for each value here.
         * </pre>
         *
         * <code>repeated int32 half_val = 13 [packed = true];</code>
         */
        public java.util.List<java.lang.Integer>
            getHalfValList() {
          return java.util.Collections.unmodifiableList(halfVal_);
        }
        /**
         * <pre>
         * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
         * have some pointless zero padding for each value here.
         * </pre>
         *
         * <code>repeated int32 half_val = 13 [packed = true];</code>
         */
        public int getHalfValCount() {
          return halfVal_.size();
        }
        /**
         * <pre>
         * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
         * have some pointless zero padding for each value here.
         * </pre>
         *
         * <code>repeated int32 half_val = 13 [packed = true];</code>
         */
        public int getHalfVal(int index) {
          return halfVal_.get(index);
        }
        /**
         * <pre>
         * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
         * have some pointless zero padding for each value here.
         * </pre>
         *
         * <code>repeated int32 half_val = 13 [packed = true];</code>
         */
        public Builder setHalfVal(
            int index, int value) {
          ensureHalfValIsMutable();
          halfVal_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
         * have some pointless zero padding for each value here.
         * </pre>
         *
         * <code>repeated int32 half_val = 13 [packed = true];</code>
         */
        public Builder addHalfVal(int value) {
          ensureHalfValIsMutable();
          halfVal_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
         * have some pointless zero padding for each value here.
         * </pre>
         *
         * <code>repeated int32 half_val = 13 [packed = true];</code>
         */
        public Builder addAllHalfVal(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureHalfValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, halfVal_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
         * have some pointless zero padding for each value here.
         * </pre>
         *
         * <code>repeated int32 half_val = 13 [packed = true];</code>
         */
        public Builder clearHalfVal() {
          halfVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Float> floatVal_ = java.util.Collections.emptyList();
        private void ensureFloatValIsMutable() {
          if (!((bitField0_ & 0x00000020) == 0x00000020)) {
            floatVal_ = new java.util.ArrayList<java.lang.Float>(floatVal_);
            bitField0_ |= 0x00000020;
           }
        }
        /**
         * <pre>
         * DT_FLOAT.
         * </pre>
         *
         * <code>repeated float float_val = 5 [packed = true];</code>
         */
        public java.util.List<java.lang.Float>
            getFloatValList() {
          return java.util.Collections.unmodifiableList(floatVal_);
        }
        /**
         * <pre>
         * DT_FLOAT.
         * </pre>
         *
         * <code>repeated float float_val = 5 [packed = true];</code>
         */
        public int getFloatValCount() {
          return floatVal_.size();
        }
        /**
         * <pre>
         * DT_FLOAT.
         * </pre>
         *
         * <code>repeated float float_val = 5 [packed = true];</code>
         */
        public float getFloatVal(int index) {
          return floatVal_.get(index);
        }
        /**
         * <pre>
         * DT_FLOAT.
         * </pre>
         *
         * <code>repeated float float_val = 5 [packed = true];</code>
         */
        public Builder setFloatVal(
            int index, float value) {
          ensureFloatValIsMutable();
          floatVal_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_FLOAT.
         * </pre>
         *
         * <code>repeated float float_val = 5 [packed = true];</code>
         */
        public Builder addFloatVal(float value) {
          ensureFloatValIsMutable();
          floatVal_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_FLOAT.
         * </pre>
         *
         * <code>repeated float float_val = 5 [packed = true];</code>
         */
        public Builder addAllFloatVal(
            java.lang.Iterable<? extends java.lang.Float> values) {
          ensureFloatValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, floatVal_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_FLOAT.
         * </pre>
         *
         * <code>repeated float float_val = 5 [packed = true];</code>
         */
        public Builder clearFloatVal() {
          floatVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Double> doubleVal_ = java.util.Collections.emptyList();
        private void ensureDoubleValIsMutable() {
          if (!((bitField0_ & 0x00000040) == 0x00000040)) {
            doubleVal_ = new java.util.ArrayList<java.lang.Double>(doubleVal_);
            bitField0_ |= 0x00000040;
           }
        }
        /**
         * <pre>
         * DT_DOUBLE.
         * </pre>
         *
         * <code>repeated double double_val = 6 [packed = true];</code>
         */
        public java.util.List<java.lang.Double>
            getDoubleValList() {
          return java.util.Collections.unmodifiableList(doubleVal_);
        }
        /**
         * <pre>
         * DT_DOUBLE.
         * </pre>
         *
         * <code>repeated double double_val = 6 [packed = true];</code>
         */
        public int getDoubleValCount() {
          return doubleVal_.size();
        }
        /**
         * <pre>
         * DT_DOUBLE.
         * </pre>
         *
         * <code>repeated double double_val = 6 [packed = true];</code>
         */
        public double getDoubleVal(int index) {
          return doubleVal_.get(index);
        }
        /**
         * <pre>
         * DT_DOUBLE.
         * </pre>
         *
         * <code>repeated double double_val = 6 [packed = true];</code>
         */
        public Builder setDoubleVal(
            int index, double value) {
          ensureDoubleValIsMutable();
          doubleVal_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_DOUBLE.
         * </pre>
         *
         * <code>repeated double double_val = 6 [packed = true];</code>
         */
        public Builder addDoubleVal(double value) {
          ensureDoubleValIsMutable();
          doubleVal_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_DOUBLE.
         * </pre>
         *
         * <code>repeated double double_val = 6 [packed = true];</code>
         */
        public Builder addAllDoubleVal(
            java.lang.Iterable<? extends java.lang.Double> values) {
          ensureDoubleValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, doubleVal_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_DOUBLE.
         * </pre>
         *
         * <code>repeated double double_val = 6 [packed = true];</code>
         */
        public Builder clearDoubleVal() {
          doubleVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> intVal_ = java.util.Collections.emptyList();
        private void ensureIntValIsMutable() {
          if (!((bitField0_ & 0x00000080) == 0x00000080)) {
            intVal_ = new java.util.ArrayList<java.lang.Integer>(intVal_);
            bitField0_ |= 0x00000080;
           }
        }
        /**
         * <pre>
         * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
         * </pre>
         *
         * <code>repeated int32 int_val = 7 [packed = true];</code>
         */
        public java.util.List<java.lang.Integer>
            getIntValList() {
          return java.util.Collections.unmodifiableList(intVal_);
        }
        /**
         * <pre>
         * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
         * </pre>
         *
         * <code>repeated int32 int_val = 7 [packed = true];</code>
         */
        public int getIntValCount() {
          return intVal_.size();
        }
        /**
         * <pre>
         * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
         * </pre>
         *
         * <code>repeated int32 int_val = 7 [packed = true];</code>
         */
        public int getIntVal(int index) {
          return intVal_.get(index);
        }
        /**
         * <pre>
         * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
         * </pre>
         *
         * <code>repeated int32 int_val = 7 [packed = true];</code>
         */
        public Builder setIntVal(
            int index, int value) {
          ensureIntValIsMutable();
          intVal_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
         * </pre>
         *
         * <code>repeated int32 int_val = 7 [packed = true];</code>
         */
        public Builder addIntVal(int value) {
          ensureIntValIsMutable();
          intVal_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
         * </pre>
         *
         * <code>repeated int32 int_val = 7 [packed = true];</code>
         */
        public Builder addAllIntVal(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureIntValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, intVal_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
         * </pre>
         *
         * <code>repeated int32 int_val = 7 [packed = true];</code>
         */
        public Builder clearIntVal() {
          intVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
          return this;
        }
  
        private java.util.List<com.google.protobuf.ByteString> stringVal_ = java.util.Collections.emptyList();
        private void ensureStringValIsMutable() {
          if (!((bitField0_ & 0x00000100) == 0x00000100)) {
            stringVal_ = new java.util.ArrayList<com.google.protobuf.ByteString>(stringVal_);
            bitField0_ |= 0x00000100;
           }
        }
        /**
         * <pre>
         * DT_STRING
         * </pre>
         *
         * <code>repeated bytes string_val = 8;</code>
         */
        public java.util.List<com.google.protobuf.ByteString>
            getStringValList() {
          return java.util.Collections.unmodifiableList(stringVal_);
        }
        /**
         * <pre>
         * DT_STRING
         * </pre>
         *
         * <code>repeated bytes string_val = 8;</code>
         */
        public int getStringValCount() {
          return stringVal_.size();
        }
        /**
         * <pre>
         * DT_STRING
         * </pre>
         *
         * <code>repeated bytes string_val = 8;</code>
         */
        public com.google.protobuf.ByteString getStringVal(int index) {
          return stringVal_.get(index);
        }
        /**
         * <pre>
         * DT_STRING
         * </pre>
         *
         * <code>repeated bytes string_val = 8;</code>
         */
        public Builder setStringVal(
            int index, com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureStringValIsMutable();
          stringVal_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_STRING
         * </pre>
         *
         * <code>repeated bytes string_val = 8;</code>
         */
        public Builder addStringVal(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureStringValIsMutable();
          stringVal_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_STRING
         * </pre>
         *
         * <code>repeated bytes string_val = 8;</code>
         */
        public Builder addAllStringVal(
            java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
          ensureStringValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, stringVal_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_STRING
         * </pre>
         *
         * <code>repeated bytes string_val = 8;</code>
         */
        public Builder clearStringVal() {
          stringVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Float> scomplexVal_ = java.util.Collections.emptyList();
        private void ensureScomplexValIsMutable() {
          if (!((bitField0_ & 0x00000200) == 0x00000200)) {
            scomplexVal_ = new java.util.ArrayList<java.lang.Float>(scomplexVal_);
            bitField0_ |= 0x00000200;
           }
        }
        /**
         * <pre>
         * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
         * and imaginary parts of i-th single precision complex.
         * </pre>
         *
         * <code>repeated float scomplex_val = 9 [packed = true];</code>
         */
        public java.util.List<java.lang.Float>
            getScomplexValList() {
          return java.util.Collections.unmodifiableList(scomplexVal_);
        }
        /**
         * <pre>
         * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
         * and imaginary parts of i-th single precision complex.
         * </pre>
         *
         * <code>repeated float scomplex_val = 9 [packed = true];</code>
         */
        public int getScomplexValCount() {
          return scomplexVal_.size();
        }
        /**
         * <pre>
         * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
         * and imaginary parts of i-th single precision complex.
         * </pre>
         *
         * <code>repeated float scomplex_val = 9 [packed = true];</code>
         */
        public float getScomplexVal(int index) {
          return scomplexVal_.get(index);
        }
        /**
         * <pre>
         * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
         * and imaginary parts of i-th single precision complex.
         * </pre>
         *
         * <code>repeated float scomplex_val = 9 [packed = true];</code>
         */
        public Builder setScomplexVal(
            int index, float value) {
          ensureScomplexValIsMutable();
          scomplexVal_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
         * and imaginary parts of i-th single precision complex.
         * </pre>
         *
         * <code>repeated float scomplex_val = 9 [packed = true];</code>
         */
        public Builder addScomplexVal(float value) {
          ensureScomplexValIsMutable();
          scomplexVal_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
         * and imaginary parts of i-th single precision complex.
         * </pre>
         *
         * <code>repeated float scomplex_val = 9 [packed = true];</code>
         */
        public Builder addAllScomplexVal(
            java.lang.Iterable<? extends java.lang.Float> values) {
          ensureScomplexValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, scomplexVal_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
         * and imaginary parts of i-th single precision complex.
         * </pre>
         *
         * <code>repeated float scomplex_val = 9 [packed = true];</code>
         */
        public Builder clearScomplexVal() {
          scomplexVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Long> int64Val_ = java.util.Collections.emptyList();
        private void ensureInt64ValIsMutable() {
          if (!((bitField0_ & 0x00000400) == 0x00000400)) {
            int64Val_ = new java.util.ArrayList<java.lang.Long>(int64Val_);
            bitField0_ |= 0x00000400;
           }
        }
        /**
         * <pre>
         * DT_INT64
         * </pre>
         *
         * <code>repeated int64 int64_val = 10 [packed = true];</code>
         */
        public java.util.List<java.lang.Long>
            getInt64ValList() {
          return java.util.Collections.unmodifiableList(int64Val_);
        }
        /**
         * <pre>
         * DT_INT64
         * </pre>
         *
         * <code>repeated int64 int64_val = 10 [packed = true];</code>
         */
        public int getInt64ValCount() {
          return int64Val_.size();
        }
        /**
         * <pre>
         * DT_INT64
         * </pre>
         *
         * <code>repeated int64 int64_val = 10 [packed = true];</code>
         */
        public long getInt64Val(int index) {
          return int64Val_.get(index);
        }
        /**
         * <pre>
         * DT_INT64
         * </pre>
         *
         * <code>repeated int64 int64_val = 10 [packed = true];</code>
         */
        public Builder setInt64Val(
            int index, long value) {
          ensureInt64ValIsMutable();
          int64Val_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_INT64
         * </pre>
         *
         * <code>repeated int64 int64_val = 10 [packed = true];</code>
         */
        public Builder addInt64Val(long value) {
          ensureInt64ValIsMutable();
          int64Val_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_INT64
         * </pre>
         *
         * <code>repeated int64 int64_val = 10 [packed = true];</code>
         */
        public Builder addAllInt64Val(
            java.lang.Iterable<? extends java.lang.Long> values) {
          ensureInt64ValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, int64Val_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_INT64
         * </pre>
         *
         * <code>repeated int64 int64_val = 10 [packed = true];</code>
         */
        public Builder clearInt64Val() {
          int64Val_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Boolean> boolVal_ = java.util.Collections.emptyList();
        private void ensureBoolValIsMutable() {
          if (!((bitField0_ & 0x00000800) == 0x00000800)) {
            boolVal_ = new java.util.ArrayList<java.lang.Boolean>(boolVal_);
            bitField0_ |= 0x00000800;
           }
        }
        /**
         * <pre>
         * DT_BOOL
         * </pre>
         *
         * <code>repeated bool bool_val = 11 [packed = true];</code>
         */
        public java.util.List<java.lang.Boolean>
            getBoolValList() {
          return java.util.Collections.unmodifiableList(boolVal_);
        }
        /**
         * <pre>
         * DT_BOOL
         * </pre>
         *
         * <code>repeated bool bool_val = 11 [packed = true];</code>
         */
        public int getBoolValCount() {
          return boolVal_.size();
        }
        /**
         * <pre>
         * DT_BOOL
         * </pre>
         *
         * <code>repeated bool bool_val = 11 [packed = true];</code>
         */
        public boolean getBoolVal(int index) {
          return boolVal_.get(index);
        }
        /**
         * <pre>
         * DT_BOOL
         * </pre>
         *
         * <code>repeated bool bool_val = 11 [packed = true];</code>
         */
        public Builder setBoolVal(
            int index, boolean value) {
          ensureBoolValIsMutable();
          boolVal_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_BOOL
         * </pre>
         *
         * <code>repeated bool bool_val = 11 [packed = true];</code>
         */
        public Builder addBoolVal(boolean value) {
          ensureBoolValIsMutable();
          boolVal_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_BOOL
         * </pre>
         *
         * <code>repeated bool bool_val = 11 [packed = true];</code>
         */
        public Builder addAllBoolVal(
            java.lang.Iterable<? extends java.lang.Boolean> values) {
          ensureBoolValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, boolVal_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_BOOL
         * </pre>
         *
         * <code>repeated bool bool_val = 11 [packed = true];</code>
         */
        public Builder clearBoolVal() {
          boolVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Double> dcomplexVal_ = java.util.Collections.emptyList();
        private void ensureDcomplexValIsMutable() {
          if (!((bitField0_ & 0x00001000) == 0x00001000)) {
            dcomplexVal_ = new java.util.ArrayList<java.lang.Double>(dcomplexVal_);
            bitField0_ |= 0x00001000;
           }
        }
        /**
         * <pre>
         * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
         * and imaginary parts of i-th double precision complex.
         * </pre>
         *
         * <code>repeated double dcomplex_val = 12 [packed = true];</code>
         */
        public java.util.List<java.lang.Double>
            getDcomplexValList() {
          return java.util.Collections.unmodifiableList(dcomplexVal_);
        }
        /**
         * <pre>
         * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
         * and imaginary parts of i-th double precision complex.
         * </pre>
         *
         * <code>repeated double dcomplex_val = 12 [packed = true];</code>
         */
        public int getDcomplexValCount() {
          return dcomplexVal_.size();
        }
        /**
         * <pre>
         * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
         * and imaginary parts of i-th double precision complex.
         * </pre>
         *
         * <code>repeated double dcomplex_val = 12 [packed = true];</code>
         */
        public double getDcomplexVal(int index) {
          return dcomplexVal_.get(index);
        }
        /**
         * <pre>
         * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
         * and imaginary parts of i-th double precision complex.
         * </pre>
         *
         * <code>repeated double dcomplex_val = 12 [packed = true];</code>
         */
        public Builder setDcomplexVal(
            int index, double value) {
          ensureDcomplexValIsMutable();
          dcomplexVal_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
         * and imaginary parts of i-th double precision complex.
         * </pre>
         *
         * <code>repeated double dcomplex_val = 12 [packed = true];</code>
         */
        public Builder addDcomplexVal(double value) {
          ensureDcomplexValIsMutable();
          dcomplexVal_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
         * and imaginary parts of i-th double precision complex.
         * </pre>
         *
         * <code>repeated double dcomplex_val = 12 [packed = true];</code>
         */
        public Builder addAllDcomplexVal(
            java.lang.Iterable<? extends java.lang.Double> values) {
          ensureDcomplexValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, dcomplexVal_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
         * and imaginary parts of i-th double precision complex.
         * </pre>
         *
         * <code>repeated double dcomplex_val = 12 [packed = true];</code>
         */
        public Builder clearDcomplexVal() {
          dcomplexVal_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          onChanged();
          return this;
        }
  
        private java.util.List<com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto> resourceHandleVal_ =
          java.util.Collections.emptyList();
        private void ensureResourceHandleValIsMutable() {
          if (!((bitField0_ & 0x00002000) == 0x00002000)) {
            resourceHandleVal_ = new java.util.ArrayList<com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto>(resourceHandleVal_);
            bitField0_ |= 0x00002000;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder> resourceHandleValBuilder_;
  
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto> getResourceHandleValList() {
          if (resourceHandleValBuilder_ == null) {
            return java.util.Collections.unmodifiableList(resourceHandleVal_);
          } else {
            return resourceHandleValBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public int getResourceHandleValCount() {
          if (resourceHandleValBuilder_ == null) {
            return resourceHandleVal_.size();
          } else {
            return resourceHandleValBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto getResourceHandleVal(int index) {
          if (resourceHandleValBuilder_ == null) {
            return resourceHandleVal_.get(index);
          } else {
            return resourceHandleValBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder setResourceHandleVal(
            int index, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto value) {
          if (resourceHandleValBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResourceHandleValIsMutable();
            resourceHandleVal_.set(index, value);
            onChanged();
          } else {
            resourceHandleValBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder setResourceHandleVal(
            int index, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder builderForValue) {
          if (resourceHandleValBuilder_ == null) {
            ensureResourceHandleValIsMutable();
            resourceHandleVal_.set(index, builderForValue.build());
            onChanged();
          } else {
            resourceHandleValBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder addResourceHandleVal(com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto value) {
          if (resourceHandleValBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResourceHandleValIsMutable();
            resourceHandleVal_.add(value);
            onChanged();
          } else {
            resourceHandleValBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder addResourceHandleVal(
            int index, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto value) {
          if (resourceHandleValBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResourceHandleValIsMutable();
            resourceHandleVal_.add(index, value);
            onChanged();
          } else {
            resourceHandleValBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder addResourceHandleVal(
            com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder builderForValue) {
          if (resourceHandleValBuilder_ == null) {
            ensureResourceHandleValIsMutable();
            resourceHandleVal_.add(builderForValue.build());
            onChanged();
          } else {
            resourceHandleValBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder addResourceHandleVal(
            int index, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder builderForValue) {
          if (resourceHandleValBuilder_ == null) {
            ensureResourceHandleValIsMutable();
            resourceHandleVal_.add(index, builderForValue.build());
            onChanged();
          } else {
            resourceHandleValBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder addAllResourceHandleVal(
            java.lang.Iterable<? extends com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto> values) {
          if (resourceHandleValBuilder_ == null) {
            ensureResourceHandleValIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, resourceHandleVal_);
            onChanged();
          } else {
            resourceHandleValBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder clearResourceHandleVal() {
          if (resourceHandleValBuilder_ == null) {
            resourceHandleVal_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00002000);
            onChanged();
          } else {
            resourceHandleValBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public Builder removeResourceHandleVal(int index) {
          if (resourceHandleValBuilder_ == null) {
            ensureResourceHandleValIsMutable();
            resourceHandleVal_.remove(index);
            onChanged();
          } else {
            resourceHandleValBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder getResourceHandleValBuilder(
            int index) {
          return getResourceHandleValFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder getResourceHandleValOrBuilder(
            int index) {
          if (resourceHandleValBuilder_ == null) {
            return resourceHandleVal_.get(index);  } else {
            return resourceHandleValBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public java.util.List<? extends com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder> 
             getResourceHandleValOrBuilderList() {
          if (resourceHandleValBuilder_ != null) {
            return resourceHandleValBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(resourceHandleVal_);
          }
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder addResourceHandleValBuilder() {
          return getResourceHandleValFieldBuilder().addBuilder(
              com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.getDefaultInstance());
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder addResourceHandleValBuilder(
            int index) {
          return getResourceHandleValFieldBuilder().addBuilder(
              index, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.getDefaultInstance());
        }
        /**
         * <pre>
         * DT_RESOURCE
         * </pre>
         *
         * <code>repeated .angel.ResourceHandleProto resource_handle_val = 14;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder> 
             getResourceHandleValBuilderList() {
          return getResourceHandleValFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder> 
            getResourceHandleValFieldBuilder() {
          if (resourceHandleValBuilder_ == null) {
            resourceHandleValBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProto.Builder, com.tencent.angel.core.graph.ResourceHandleProtos.ResourceHandleProtoOrBuilder>(
                    resourceHandleVal_,
                    ((bitField0_ & 0x00002000) == 0x00002000),
                    getParentForChildren(),
                    isClean());
            resourceHandleVal_ = null;
          }
          return resourceHandleValBuilder_;
        }
  
        private java.util.List<com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto> variantVal_ =
          java.util.Collections.emptyList();
        private void ensureVariantValIsMutable() {
          if (!((bitField0_ & 0x00004000) == 0x00004000)) {
            variantVal_ = new java.util.ArrayList<com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto>(variantVal_);
            bitField0_ |= 0x00004000;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder> variantValBuilder_;
  
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto> getVariantValList() {
          if (variantValBuilder_ == null) {
            return java.util.Collections.unmodifiableList(variantVal_);
          } else {
            return variantValBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public int getVariantValCount() {
          if (variantValBuilder_ == null) {
            return variantVal_.size();
          } else {
            return variantValBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto getVariantVal(int index) {
          if (variantValBuilder_ == null) {
            return variantVal_.get(index);
          } else {
            return variantValBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder setVariantVal(
            int index, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto value) {
          if (variantValBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureVariantValIsMutable();
            variantVal_.set(index, value);
            onChanged();
          } else {
            variantValBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder setVariantVal(
            int index, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder builderForValue) {
          if (variantValBuilder_ == null) {
            ensureVariantValIsMutable();
            variantVal_.set(index, builderForValue.build());
            onChanged();
          } else {
            variantValBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder addVariantVal(com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto value) {
          if (variantValBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureVariantValIsMutable();
            variantVal_.add(value);
            onChanged();
          } else {
            variantValBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder addVariantVal(
            int index, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto value) {
          if (variantValBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureVariantValIsMutable();
            variantVal_.add(index, value);
            onChanged();
          } else {
            variantValBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder addVariantVal(
            com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder builderForValue) {
          if (variantValBuilder_ == null) {
            ensureVariantValIsMutable();
            variantVal_.add(builderForValue.build());
            onChanged();
          } else {
            variantValBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder addVariantVal(
            int index, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder builderForValue) {
          if (variantValBuilder_ == null) {
            ensureVariantValIsMutable();
            variantVal_.add(index, builderForValue.build());
            onChanged();
          } else {
            variantValBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder addAllVariantVal(
            java.lang.Iterable<? extends com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto> values) {
          if (variantValBuilder_ == null) {
            ensureVariantValIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, variantVal_);
            onChanged();
          } else {
            variantValBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder clearVariantVal() {
          if (variantValBuilder_ == null) {
            variantVal_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00004000);
            onChanged();
          } else {
            variantValBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public Builder removeVariantVal(int index) {
          if (variantValBuilder_ == null) {
            ensureVariantValIsMutable();
            variantVal_.remove(index);
            onChanged();
          } else {
            variantValBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder getVariantValBuilder(
            int index) {
          return getVariantValFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder getVariantValOrBuilder(
            int index) {
          if (variantValBuilder_ == null) {
            return variantVal_.get(index);  } else {
            return variantValBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public java.util.List<? extends com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder> 
             getVariantValOrBuilderList() {
          if (variantValBuilder_ != null) {
            return variantValBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(variantVal_);
          }
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder addVariantValBuilder() {
          return getVariantValFieldBuilder().addBuilder(
              com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.getDefaultInstance());
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder addVariantValBuilder(
            int index) {
          return getVariantValFieldBuilder().addBuilder(
              index, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.getDefaultInstance());
        }
        /**
         * <pre>
         * DT_VARIANT
         * </pre>
         *
         * <code>repeated .angel.VariantTensorDataProto variant_val = 15;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder> 
             getVariantValBuilderList() {
          return getVariantValFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder> 
            getVariantValFieldBuilder() {
          if (variantValBuilder_ == null) {
            variantValBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder>(
                    variantVal_,
                    ((bitField0_ & 0x00004000) == 0x00004000),
                    getParentForChildren(),
                    isClean());
            variantVal_ = null;
          }
          return variantValBuilder_;
        }
  
        private java.util.List<java.lang.Integer> uint32Val_ = java.util.Collections.emptyList();
        private void ensureUint32ValIsMutable() {
          if (!((bitField0_ & 0x00008000) == 0x00008000)) {
            uint32Val_ = new java.util.ArrayList<java.lang.Integer>(uint32Val_);
            bitField0_ |= 0x00008000;
           }
        }
        /**
         * <pre>
         * DT_UINT32
         * </pre>
         *
         * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
         */
        public java.util.List<java.lang.Integer>
            getUint32ValList() {
          return java.util.Collections.unmodifiableList(uint32Val_);
        }
        /**
         * <pre>
         * DT_UINT32
         * </pre>
         *
         * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
         */
        public int getUint32ValCount() {
          return uint32Val_.size();
        }
        /**
         * <pre>
         * DT_UINT32
         * </pre>
         *
         * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
         */
        public int getUint32Val(int index) {
          return uint32Val_.get(index);
        }
        /**
         * <pre>
         * DT_UINT32
         * </pre>
         *
         * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
         */
        public Builder setUint32Val(
            int index, int value) {
          ensureUint32ValIsMutable();
          uint32Val_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_UINT32
         * </pre>
         *
         * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
         */
        public Builder addUint32Val(int value) {
          ensureUint32ValIsMutable();
          uint32Val_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_UINT32
         * </pre>
         *
         * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
         */
        public Builder addAllUint32Val(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureUint32ValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, uint32Val_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_UINT32
         * </pre>
         *
         * <code>repeated uint32 uint32_val = 16 [packed = true];</code>
         */
        public Builder clearUint32Val() {
          uint32Val_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Long> uint64Val_ = java.util.Collections.emptyList();
        private void ensureUint64ValIsMutable() {
          if (!((bitField0_ & 0x00010000) == 0x00010000)) {
            uint64Val_ = new java.util.ArrayList<java.lang.Long>(uint64Val_);
            bitField0_ |= 0x00010000;
           }
        }
        /**
         * <pre>
         * DT_UINT64
         * </pre>
         *
         * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
         */
        public java.util.List<java.lang.Long>
            getUint64ValList() {
          return java.util.Collections.unmodifiableList(uint64Val_);
        }
        /**
         * <pre>
         * DT_UINT64
         * </pre>
         *
         * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
         */
        public int getUint64ValCount() {
          return uint64Val_.size();
        }
        /**
         * <pre>
         * DT_UINT64
         * </pre>
         *
         * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
         */
        public long getUint64Val(int index) {
          return uint64Val_.get(index);
        }
        /**
         * <pre>
         * DT_UINT64
         * </pre>
         *
         * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
         */
        public Builder setUint64Val(
            int index, long value) {
          ensureUint64ValIsMutable();
          uint64Val_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_UINT64
         * </pre>
         *
         * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
         */
        public Builder addUint64Val(long value) {
          ensureUint64ValIsMutable();
          uint64Val_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_UINT64
         * </pre>
         *
         * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
         */
        public Builder addAllUint64Val(
            java.lang.Iterable<? extends java.lang.Long> values) {
          ensureUint64ValIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, uint64Val_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DT_UINT64
         * </pre>
         *
         * <code>repeated uint64 uint64_val = 17 [packed = true];</code>
         */
        public Builder clearUint64Val() {
          uint64Val_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00010000);
          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.TensorProto)
      }
  
      // @@protoc_insertion_point(class_scope:angel.TensorProto)
      private static final com.tencent.angel.core.graph.TensorProtos.TensorProto DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.core.graph.TensorProtos.TensorProto();
      }
  
      public static com.tencent.angel.core.graph.TensorProtos.TensorProto getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<TensorProto>
          PARSER = new com.google.protobuf.AbstractParser<TensorProto>() {
        public TensorProto parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new TensorProto(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<TensorProto> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<TensorProto> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.core.graph.TensorProtos.TensorProto getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface VariantTensorDataProtoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.VariantTensorDataProto)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       * Name of the type of objects being serialized.
       * </pre>
       *
       * <code>string type_name = 1;</code>
       */
      java.lang.String getTypeName();
      /**
       * <pre>
       * Name of the type of objects being serialized.
       * </pre>
       *
       * <code>string type_name = 1;</code>
       */
      com.google.protobuf.ByteString
          getTypeNameBytes();
  
      /**
       * <pre>
       * Portions of the object that are not Tensors.
       * </pre>
       *
       * <code>bytes metadata = 2;</code>
       */
      com.google.protobuf.ByteString getMetadata();
  
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      java.util.List<com.tencent.angel.core.graph.TensorProtos.TensorProto> 
          getTensorsList();
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      com.tencent.angel.core.graph.TensorProtos.TensorProto getTensors(int index);
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      int getTensorsCount();
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      java.util.List<? extends com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder> 
          getTensorsOrBuilderList();
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder getTensorsOrBuilder(
          int index);
    }
    /**
     * <pre>
     * Protocol buffer representing the serialization format of DT_VARIANT tensors.
     * </pre>
     *
     * Protobuf type {@code angel.VariantTensorDataProto}
     */
    public  static final class VariantTensorDataProto extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.VariantTensorDataProto)
        VariantTensorDataProtoOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use VariantTensorDataProto.newBuilder() to construct.
      private VariantTensorDataProto(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private VariantTensorDataProto() {
        typeName_ = "";
        metadata_ = com.google.protobuf.ByteString.EMPTY;
        tensors_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private VariantTensorDataProto(
          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();
  
                typeName_ = s;
                break;
              }
              case 18: {
  
                metadata_ = input.readBytes();
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  tensors_ = new java.util.ArrayList<com.tencent.angel.core.graph.TensorProtos.TensorProto>();
                  mutable_bitField0_ |= 0x00000004;
                }
                tensors_.add(
                    input.readMessage(com.tencent.angel.core.graph.TensorProtos.TensorProto.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_ & 0x00000004) == 0x00000004)) {
            tensors_ = java.util.Collections.unmodifiableList(tensors_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_VariantTensorDataProto_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_VariantTensorDataProto_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.class, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder.class);
      }
  
      private int bitField0_;
      public static final int TYPE_NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object typeName_;
      /**
       * <pre>
       * Name of the type of objects being serialized.
       * </pre>
       *
       * <code>string type_name = 1;</code>
       */
      public java.lang.String getTypeName() {
        java.lang.Object ref = typeName_;
        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();
          typeName_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * Name of the type of objects being serialized.
       * </pre>
       *
       * <code>string type_name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTypeNameBytes() {
        java.lang.Object ref = typeName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          typeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int METADATA_FIELD_NUMBER = 2;
      private com.google.protobuf.ByteString metadata_;
      /**
       * <pre>
       * Portions of the object that are not Tensors.
       * </pre>
       *
       * <code>bytes metadata = 2;</code>
       */
      public com.google.protobuf.ByteString getMetadata() {
        return metadata_;
      }
  
      public static final int TENSORS_FIELD_NUMBER = 3;
      private java.util.List<com.tencent.angel.core.graph.TensorProtos.TensorProto> tensors_;
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      public java.util.List<com.tencent.angel.core.graph.TensorProtos.TensorProto> getTensorsList() {
        return tensors_;
      }
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      public java.util.List<? extends com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder> 
          getTensorsOrBuilderList() {
        return tensors_;
      }
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      public int getTensorsCount() {
        return tensors_.size();
      }
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      public com.tencent.angel.core.graph.TensorProtos.TensorProto getTensors(int index) {
        return tensors_.get(index);
      }
      /**
       * <pre>
       * Tensors contained within objects being serialized.
       * </pre>
       *
       * <code>repeated .angel.TensorProto tensors = 3;</code>
       */
      public com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder getTensorsOrBuilder(
          int index) {
        return tensors_.get(index);
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getTypeNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, typeName_);
        }
        if (!metadata_.isEmpty()) {
          output.writeBytes(2, metadata_);
        }
        for (int i = 0; i < tensors_.size(); i++) {
          output.writeMessage(3, tensors_.get(i));
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (!getTypeNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, typeName_);
        }
        if (!metadata_.isEmpty()) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, metadata_);
        }
        for (int i = 0; i < tensors_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, tensors_.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.TensorProtos.VariantTensorDataProto)) {
          return super.equals(obj);
        }
        com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto other = (com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto) obj;
  
        boolean result = true;
        result = result && getTypeName()
            .equals(other.getTypeName());
        result = result && getMetadata()
            .equals(other.getMetadata());
        result = result && getTensorsList()
            .equals(other.getTensorsList());
        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) + TYPE_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getTypeName().hashCode();
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
        if (getTensorsCount() > 0) {
          hash = (37 * hash) + TENSORS_FIELD_NUMBER;
          hash = (53 * hash) + getTensorsList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto 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.TensorProtos.VariantTensorDataProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto 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.TensorProtos.VariantTensorDataProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto 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.TensorProtos.VariantTensorDataProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto 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.TensorProtos.VariantTensorDataProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto 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.TensorProtos.VariantTensorDataProto 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.TensorProtos.VariantTensorDataProto 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.TensorProtos.VariantTensorDataProto 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>
       * Protocol buffer representing the serialization format of DT_VARIANT tensors.
       * </pre>
       *
       * Protobuf type {@code angel.VariantTensorDataProto}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.VariantTensorDataProto)
          com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_VariantTensorDataProto_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_VariantTensorDataProto_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.class, com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.Builder.class);
        }
  
        // Construct using com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getTensorsFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          typeName_ = "";
  
          metadata_ = com.google.protobuf.ByteString.EMPTY;
  
          if (tensorsBuilder_ == null) {
            tensors_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            tensorsBuilder_.clear();
          }
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.core.graph.TensorProtos.internal_static_angel_VariantTensorDataProto_descriptor;
        }
  
        public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto getDefaultInstanceForType() {
          return com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.getDefaultInstance();
        }
  
        public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto build() {
          com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto buildPartial() {
          com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto result = new com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          result.typeName_ = typeName_;
          result.metadata_ = metadata_;
          if (tensorsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              tensors_ = java.util.Collections.unmodifiableList(tensors_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.tensors_ = tensors_;
          } else {
            result.tensors_ = tensorsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto) {
            return mergeFrom((com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto other) {
          if (other == com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto.getDefaultInstance()) return this;
          if (!other.getTypeName().isEmpty()) {
            typeName_ = other.typeName_;
            onChanged();
          }
          if (other.getMetadata() != com.google.protobuf.ByteString.EMPTY) {
            setMetadata(other.getMetadata());
          }
          if (tensorsBuilder_ == null) {
            if (!other.tensors_.isEmpty()) {
              if (tensors_.isEmpty()) {
                tensors_ = other.tensors_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureTensorsIsMutable();
                tensors_.addAll(other.tensors_);
              }
              onChanged();
            }
          } else {
            if (!other.tensors_.isEmpty()) {
              if (tensorsBuilder_.isEmpty()) {
                tensorsBuilder_.dispose();
                tensorsBuilder_ = null;
                tensors_ = other.tensors_;
                bitField0_ = (bitField0_ & ~0x00000004);
                tensorsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getTensorsFieldBuilder() : null;
              } else {
                tensorsBuilder_.addAllMessages(other.tensors_);
              }
            }
          }
          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.TensorProtos.VariantTensorDataProto parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object typeName_ = "";
        /**
         * <pre>
         * Name of the type of objects being serialized.
         * </pre>
         *
         * <code>string type_name = 1;</code>
         */
        public java.lang.String getTypeName() {
          java.lang.Object ref = typeName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            typeName_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Name of the type of objects being serialized.
         * </pre>
         *
         * <code>string type_name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getTypeNameBytes() {
          java.lang.Object ref = typeName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            typeName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Name of the type of objects being serialized.
         * </pre>
         *
         * <code>string type_name = 1;</code>
         */
        public Builder setTypeName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    
          typeName_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Name of the type of objects being serialized.
         * </pre>
         *
         * <code>string type_name = 1;</code>
         */
        public Builder clearTypeName() {
          
          typeName_ = getDefaultInstance().getTypeName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Name of the type of objects being serialized.
         * </pre>
         *
         * <code>string type_name = 1;</code>
         */
        public Builder setTypeNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
          
          typeName_ = value;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString metadata_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <pre>
         * Portions of the object that are not Tensors.
         * </pre>
         *
         * <code>bytes metadata = 2;</code>
         */
        public com.google.protobuf.ByteString getMetadata() {
          return metadata_;
        }
        /**
         * <pre>
         * Portions of the object that are not Tensors.
         * </pre>
         *
         * <code>bytes metadata = 2;</code>
         */
        public Builder setMetadata(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    
          metadata_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Portions of the object that are not Tensors.
         * </pre>
         *
         * <code>bytes metadata = 2;</code>
         */
        public Builder clearMetadata() {
          
          metadata_ = getDefaultInstance().getMetadata();
          onChanged();
          return this;
        }
  
        private java.util.List<com.tencent.angel.core.graph.TensorProtos.TensorProto> tensors_ =
          java.util.Collections.emptyList();
        private void ensureTensorsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            tensors_ = new java.util.ArrayList<com.tencent.angel.core.graph.TensorProtos.TensorProto>(tensors_);
            bitField0_ |= 0x00000004;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.graph.TensorProtos.TensorProto, com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder, com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder> tensorsBuilder_;
  
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.TensorProtos.TensorProto> getTensorsList() {
          if (tensorsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(tensors_);
          } else {
            return tensorsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public int getTensorsCount() {
          if (tensorsBuilder_ == null) {
            return tensors_.size();
          } else {
            return tensorsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.TensorProto getTensors(int index) {
          if (tensorsBuilder_ == null) {
            return tensors_.get(index);
          } else {
            return tensorsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder setTensors(
            int index, com.tencent.angel.core.graph.TensorProtos.TensorProto value) {
          if (tensorsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTensorsIsMutable();
            tensors_.set(index, value);
            onChanged();
          } else {
            tensorsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder setTensors(
            int index, com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder builderForValue) {
          if (tensorsBuilder_ == null) {
            ensureTensorsIsMutable();
            tensors_.set(index, builderForValue.build());
            onChanged();
          } else {
            tensorsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder addTensors(com.tencent.angel.core.graph.TensorProtos.TensorProto value) {
          if (tensorsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTensorsIsMutable();
            tensors_.add(value);
            onChanged();
          } else {
            tensorsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder addTensors(
            int index, com.tencent.angel.core.graph.TensorProtos.TensorProto value) {
          if (tensorsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTensorsIsMutable();
            tensors_.add(index, value);
            onChanged();
          } else {
            tensorsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder addTensors(
            com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder builderForValue) {
          if (tensorsBuilder_ == null) {
            ensureTensorsIsMutable();
            tensors_.add(builderForValue.build());
            onChanged();
          } else {
            tensorsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder addTensors(
            int index, com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder builderForValue) {
          if (tensorsBuilder_ == null) {
            ensureTensorsIsMutable();
            tensors_.add(index, builderForValue.build());
            onChanged();
          } else {
            tensorsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder addAllTensors(
            java.lang.Iterable<? extends com.tencent.angel.core.graph.TensorProtos.TensorProto> values) {
          if (tensorsBuilder_ == null) {
            ensureTensorsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, tensors_);
            onChanged();
          } else {
            tensorsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder clearTensors() {
          if (tensorsBuilder_ == null) {
            tensors_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            tensorsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public Builder removeTensors(int index) {
          if (tensorsBuilder_ == null) {
            ensureTensorsIsMutable();
            tensors_.remove(index);
            onChanged();
          } else {
            tensorsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder getTensorsBuilder(
            int index) {
          return getTensorsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder getTensorsOrBuilder(
            int index) {
          if (tensorsBuilder_ == null) {
            return tensors_.get(index);  } else {
            return tensorsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public java.util.List<? extends com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder> 
             getTensorsOrBuilderList() {
          if (tensorsBuilder_ != null) {
            return tensorsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(tensors_);
          }
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder addTensorsBuilder() {
          return getTensorsFieldBuilder().addBuilder(
              com.tencent.angel.core.graph.TensorProtos.TensorProto.getDefaultInstance());
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder addTensorsBuilder(
            int index) {
          return getTensorsFieldBuilder().addBuilder(
              index, com.tencent.angel.core.graph.TensorProtos.TensorProto.getDefaultInstance());
        }
        /**
         * <pre>
         * Tensors contained within objects being serialized.
         * </pre>
         *
         * <code>repeated .angel.TensorProto tensors = 3;</code>
         */
        public java.util.List<com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder> 
             getTensorsBuilderList() {
          return getTensorsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.tencent.angel.core.graph.TensorProtos.TensorProto, com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder, com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder> 
            getTensorsFieldBuilder() {
          if (tensorsBuilder_ == null) {
            tensorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.tencent.angel.core.graph.TensorProtos.TensorProto, com.tencent.angel.core.graph.TensorProtos.TensorProto.Builder, com.tencent.angel.core.graph.TensorProtos.TensorProtoOrBuilder>(
                    tensors_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            tensors_ = null;
          }
          return tensorsBuilder_;
        }
        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.VariantTensorDataProto)
      }
  
      // @@protoc_insertion_point(class_scope:angel.VariantTensorDataProto)
      private static final com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto();
      }
  
      public static com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<VariantTensorDataProto>
          PARSER = new com.google.protobuf.AbstractParser<VariantTensorDataProto>() {
        public VariantTensorDataProto parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new VariantTensorDataProto(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<VariantTensorDataProto> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<VariantTensorDataProto> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.core.graph.TensorProtos.VariantTensorDataProto getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_TensorProto_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_TensorProto_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_VariantTensorDataProto_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_VariantTensorDataProto_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\027core/graph/tensor.proto\022\005angel\032 core/g" +
        "raph/resource_handle.proto\032\036apis/common/" +
        "tensor_shape.proto\032\027apis/common/types.pr" +
        "oto\"\370\003\n\013TensorProto\022\036\n\005dtype\030\001 \001(\0162\017.ang" +
        "el.DataType\022-\n\014tensor_shape\030\002 \001(\0132\027.ange" +
        "l.TensorShapeProto\022\026\n\016version_number\030\003 \001" +
        "(\005\022\026\n\016tensor_content\030\004 \001(\014\022\024\n\010half_val\030\r" +
        " \003(\005B\002\020\001\022\025\n\tfloat_val\030\005 \003(\002B\002\020\001\022\026\n\ndoubl" +
        "e_val\030\006 \003(\001B\002\020\001\022\023\n\007int_val\030\007 \003(\005B\002\020\001\022\022\n\n" +
        "string_val\030\010 \003(\014\022\030\n\014scomplex_val\030\t \003(\002B\002" +
        "\020\001\022\025\n\tint64_val\030\n \003(\003B\002\020\001\022\024\n\010bool_val\030\013 " +
        "\003(\010B\002\020\001\022\030\n\014dcomplex_val\030\014 \003(\001B\002\020\001\0227\n\023res" +
        "ource_handle_val\030\016 \003(\0132\032.angel.ResourceH" +
        "andleProto\0222\n\013variant_val\030\017 \003(\0132\035.angel." +
        "VariantTensorDataProto\022\026\n\nuint32_val\030\020 \003" +
        "(\rB\002\020\001\022\026\n\nuint64_val\030\021 \003(\004B\002\020\001\"b\n\026Varian" +
        "tTensorDataProto\022\021\n\ttype_name\030\001 \001(\t\022\020\n\010m" +
        "etadata\030\002 \001(\014\022#\n\007tensors\030\003 \003(\0132\022.angel.T" +
        "ensorProtoB.\n\034com.tencent.angel.core.gra" +
        "phB\014TensorProtosP\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.core.graph.ResourceHandleProtos.getDescriptor(),
            com.tencent.angel.serving.apis.common.TensorShapeProtos.getDescriptor(),
            com.tencent.angel.serving.apis.common.TypesProtos.getDescriptor(),
          }, assigner);
      internal_static_angel_TensorProto_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_angel_TensorProto_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_TensorProto_descriptor,
          new java.lang.String[] { "Dtype", "TensorShape", "VersionNumber", "TensorContent", "HalfVal", "FloatVal", "DoubleVal", "IntVal", "StringVal", "ScomplexVal", "Int64Val", "BoolVal", "DcomplexVal", "ResourceHandleVal", "VariantVal", "Uint32Val", "Uint64Val", });
      internal_static_angel_VariantTensorDataProto_descriptor =
        getDescriptor().getMessageTypes().get(1);
      internal_static_angel_VariantTensorDataProto_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_VariantTensorDataProto_descriptor,
          new java.lang.String[] { "TypeName", "Metadata", "Tensors", });
      com.tencent.angel.core.graph.ResourceHandleProtos.getDescriptor();
      com.tencent.angel.serving.apis.common.TensorShapeProtos.getDescriptor();
      com.tencent.angel.serving.apis.common.TypesProtos.getDescriptor();
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  