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

package org.tensorflow.proto.framework;

/**
 * Protobuf type {@code tensorflow.TrackableObjectGraph}
 */
public  final class TrackableObjectGraph extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:tensorflow.TrackableObjectGraph)
    TrackableObjectGraphOrBuilder {
private static final long serialVersionUID = 0L;
  // Use TrackableObjectGraph.newBuilder() to construct.
  private TrackableObjectGraph(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private TrackableObjectGraph() {
    nodes_ = java.util.Collections.emptyList();
  }

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

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet
  getUnknownFields() {
    return this.unknownFields;
  }
  private TrackableObjectGraph(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new java.lang.NullPointerException();
    }
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          case 10: {
            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
              nodes_ = new java.util.ArrayList<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject>();
              mutable_bitField0_ |= 0x00000001;
            }
            nodes_.add(
                input.readMessage(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.parser(), extensionRegistry));
            break;
          }
          default: {
            if (!parseUnknownField(
                input, unknownFields, extensionRegistry, tag)) {
              done = true;
            }
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00000001) != 0)) {
        nodes_ = java.util.Collections.unmodifiableList(nodes_);
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            org.tensorflow.proto.framework.TrackableObjectGraph.class, org.tensorflow.proto.framework.TrackableObjectGraph.Builder.class);
  }

  public interface TrackableObjectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tensorflow.TrackableObjectGraph.TrackableObject)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference> 
        getChildrenList();
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference getChildren(int index);
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    int getChildrenCount();
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder> 
        getChildrenOrBuilderList();
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder getChildrenOrBuilder(
        int index);

    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor> 
        getAttributesList();
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor getAttributes(int index);
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    int getAttributesCount();
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder> 
        getAttributesOrBuilderList();
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder getAttributesOrBuilder(
        int index);

    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference> 
        getSlotVariablesList();
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference getSlotVariables(int index);
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    int getSlotVariablesCount();
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder> 
        getSlotVariablesOrBuilderList();
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder getSlotVariablesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code tensorflow.TrackableObjectGraph.TrackableObject}
   */
  public  static final class TrackableObject extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tensorflow.TrackableObjectGraph.TrackableObject)
      TrackableObjectOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TrackableObject.newBuilder() to construct.
    private TrackableObject(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TrackableObject() {
      children_ = java.util.Collections.emptyList();
      attributes_ = java.util.Collections.emptyList();
      slotVariables_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TrackableObject(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                children_ = new java.util.ArrayList<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference>();
                mutable_bitField0_ |= 0x00000001;
              }
              children_.add(
                  input.readMessage(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.parser(), extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                attributes_ = new java.util.ArrayList<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor>();
                mutable_bitField0_ |= 0x00000002;
              }
              attributes_.add(
                  input.readMessage(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.parser(), extensionRegistry));
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                slotVariables_ = new java.util.ArrayList<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference>();
                mutable_bitField0_ |= 0x00000004;
              }
              slotVariables_.add(
                  input.readMessage(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          children_ = java.util.Collections.unmodifiableList(children_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          attributes_ = java.util.Collections.unmodifiableList(attributes_);
        }
        if (((mutable_bitField0_ & 0x00000004) != 0)) {
          slotVariables_ = java.util.Collections.unmodifiableList(slotVariables_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.class, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder.class);
    }

    public interface ObjectReferenceOrBuilder extends
        // @@protoc_insertion_point(interface_extends:tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * An index into `TrackableObjectGraph.nodes`, indicating the object
       * being referenced.
       * </pre>
       *
       * <code>int32 node_id = 1;</code>
       */
      int getNodeId();

      /**
       * <pre>
       * A user-provided name for the edge.
       * </pre>
       *
       * <code>string local_name = 2;</code>
       */
      java.lang.String getLocalName();
      /**
       * <pre>
       * A user-provided name for the edge.
       * </pre>
       *
       * <code>string local_name = 2;</code>
       */
      com.google.protobuf.ByteString
          getLocalNameBytes();
    }
    /**
     * Protobuf type {@code tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference}
     */
    public  static final class ObjectReference extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference)
        ObjectReferenceOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ObjectReference.newBuilder() to construct.
      private ObjectReference(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ObjectReference() {
        localName_ = "";
      }

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

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

                nodeId_ = input.readInt32();
                break;
              }
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();

                localName_ = s;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_ObjectReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_ObjectReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.class, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder.class);
      }

      public static final int NODE_ID_FIELD_NUMBER = 1;
      private int nodeId_;
      /**
       * <pre>
       * An index into `TrackableObjectGraph.nodes`, indicating the object
       * being referenced.
       * </pre>
       *
       * <code>int32 node_id = 1;</code>
       */
      public int getNodeId() {
        return nodeId_;
      }

      public static final int LOCAL_NAME_FIELD_NUMBER = 2;
      private volatile java.lang.Object localName_;
      /**
       * <pre>
       * A user-provided name for the edge.
       * </pre>
       *
       * <code>string local_name = 2;</code>
       */
      public java.lang.String getLocalName() {
        java.lang.Object ref = localName_;
        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();
          localName_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * A user-provided name for the edge.
       * </pre>
       *
       * <code>string local_name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getLocalNameBytes() {
        java.lang.Object ref = localName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          localName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (nodeId_ != 0) {
          output.writeInt32(1, nodeId_);
        }
        if (!getLocalNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, localName_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (nodeId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, nodeId_);
        }
        if (!getLocalNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, localName_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getNodeId()
            != other.getNodeId()) return false;
        if (!getLocalName()
            .equals(other.getLocalName())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + NODE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getNodeId();
        hash = (37 * hash) + LOCAL_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getLocalName().hashCode();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference)
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_ObjectReference_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_ObjectReference_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.class, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder.class);
        }

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

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

          localName_ = "";

          return this;
        }

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

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

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

        @java.lang.Override
        public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference buildPartial() {
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference result = new org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference(this);
          result.nodeId_ = nodeId_;
          result.localName_ = localName_;
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference other) {
          if (other == org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.getDefaultInstance()) return this;
          if (other.getNodeId() != 0) {
            setNodeId(other.getNodeId());
          }
          if (!other.getLocalName().isEmpty()) {
            localName_ = other.localName_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private int nodeId_ ;
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the object
         * being referenced.
         * </pre>
         *
         * <code>int32 node_id = 1;</code>
         */
        public int getNodeId() {
          return nodeId_;
        }
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the object
         * being referenced.
         * </pre>
         *
         * <code>int32 node_id = 1;</code>
         */
        public Builder setNodeId(int value) {
          
          nodeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the object
         * being referenced.
         * </pre>
         *
         * <code>int32 node_id = 1;</code>
         */
        public Builder clearNodeId() {
          
          nodeId_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object localName_ = "";
        /**
         * <pre>
         * A user-provided name for the edge.
         * </pre>
         *
         * <code>string local_name = 2;</code>
         */
        public java.lang.String getLocalName() {
          java.lang.Object ref = localName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            localName_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * A user-provided name for the edge.
         * </pre>
         *
         * <code>string local_name = 2;</code>
         */
        public com.google.protobuf.ByteString
            getLocalNameBytes() {
          java.lang.Object ref = localName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            localName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * A user-provided name for the edge.
         * </pre>
         *
         * <code>string local_name = 2;</code>
         */
        public Builder setLocalName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          localName_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * A user-provided name for the edge.
         * </pre>
         *
         * <code>string local_name = 2;</code>
         */
        public Builder clearLocalName() {
          
          localName_ = getDefaultInstance().getLocalName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * A user-provided name for the edge.
         * </pre>
         *
         * <code>string local_name = 2;</code>
         */
        public Builder setLocalNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          localName_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference)
      }

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

      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

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

    }

    public interface SerializedTensorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * A name for the Tensor. Simple variables have only one
       * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
       * be restored on object creation as an optimization.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      java.lang.String getName();
      /**
       * <pre>
       * A name for the Tensor. Simple variables have only one
       * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
       * be restored on object creation as an optimization.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <pre>
       * The full name of the variable/tensor, if applicable. Used to allow
       * name-based loading of checkpoints which were saved using an
       * object-based API. Should match the checkpoint key which would have been
       * assigned by tf.train.Saver.
       * </pre>
       *
       * <code>string full_name = 2;</code>
       */
      java.lang.String getFullName();
      /**
       * <pre>
       * The full name of the variable/tensor, if applicable. Used to allow
       * name-based loading of checkpoints which were saved using an
       * object-based API. Should match the checkpoint key which would have been
       * assigned by tf.train.Saver.
       * </pre>
       *
       * <code>string full_name = 2;</code>
       */
      com.google.protobuf.ByteString
          getFullNameBytes();

      /**
       * <pre>
       * The generated name of the Tensor in the checkpoint.
       * </pre>
       *
       * <code>string checkpoint_key = 3;</code>
       */
      java.lang.String getCheckpointKey();
      /**
       * <pre>
       * The generated name of the Tensor in the checkpoint.
       * </pre>
       *
       * <code>string checkpoint_key = 3;</code>
       */
      com.google.protobuf.ByteString
          getCheckpointKeyBytes();

      /**
       * <pre>
       * Whether checkpoints should be considered as matching even without this
       * value restored. Used for non-critical values which don't affect the
       * TensorFlow graph, such as layer configurations.
       * </pre>
       *
       * <code>bool optional_restore = 4;</code>
       */
      boolean getOptionalRestore();
    }
    /**
     * Protobuf type {@code tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor}
     */
    public  static final class SerializedTensor extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor)
        SerializedTensorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SerializedTensor.newBuilder() to construct.
      private SerializedTensor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SerializedTensor() {
        name_ = "";
        fullName_ = "";
        checkpointKey_ = "";
      }

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

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

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

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

                checkpointKey_ = s;
                break;
              }
              case 32: {

                optionalRestore_ = input.readBool();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_SerializedTensor_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_SerializedTensor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.class, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder.class);
      }

      public static final int NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object name_;
      /**
       * <pre>
       * A name for the Tensor. Simple variables have only one
       * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
       * be restored on object creation as an optimization.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * A name for the Tensor. Simple variables have only one
       * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
       * be restored on object creation as an optimization.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int FULL_NAME_FIELD_NUMBER = 2;
      private volatile java.lang.Object fullName_;
      /**
       * <pre>
       * The full name of the variable/tensor, if applicable. Used to allow
       * name-based loading of checkpoints which were saved using an
       * object-based API. Should match the checkpoint key which would have been
       * assigned by tf.train.Saver.
       * </pre>
       *
       * <code>string full_name = 2;</code>
       */
      public java.lang.String getFullName() {
        java.lang.Object ref = fullName_;
        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();
          fullName_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * The full name of the variable/tensor, if applicable. Used to allow
       * name-based loading of checkpoints which were saved using an
       * object-based API. Should match the checkpoint key which would have been
       * assigned by tf.train.Saver.
       * </pre>
       *
       * <code>string full_name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getFullNameBytes() {
        java.lang.Object ref = fullName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fullName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int CHECKPOINT_KEY_FIELD_NUMBER = 3;
      private volatile java.lang.Object checkpointKey_;
      /**
       * <pre>
       * The generated name of the Tensor in the checkpoint.
       * </pre>
       *
       * <code>string checkpoint_key = 3;</code>
       */
      public java.lang.String getCheckpointKey() {
        java.lang.Object ref = checkpointKey_;
        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();
          checkpointKey_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * The generated name of the Tensor in the checkpoint.
       * </pre>
       *
       * <code>string checkpoint_key = 3;</code>
       */
      public com.google.protobuf.ByteString
          getCheckpointKeyBytes() {
        java.lang.Object ref = checkpointKey_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          checkpointKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int OPTIONAL_RESTORE_FIELD_NUMBER = 4;
      private boolean optionalRestore_;
      /**
       * <pre>
       * Whether checkpoints should be considered as matching even without this
       * value restored. Used for non-critical values which don't affect the
       * TensorFlow graph, such as layer configurations.
       * </pre>
       *
       * <code>bool optional_restore = 4;</code>
       */
      public boolean getOptionalRestore() {
        return optionalRestore_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (!getFullNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, fullName_);
        }
        if (!getCheckpointKeyBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, checkpointKey_);
        }
        if (optionalRestore_ != false) {
          output.writeBool(4, optionalRestore_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (!getFullNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, fullName_);
        }
        if (!getCheckpointKeyBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, checkpointKey_);
        }
        if (optionalRestore_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, optionalRestore_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getName()
            .equals(other.getName())) return false;
        if (!getFullName()
            .equals(other.getFullName())) return false;
        if (!getCheckpointKey()
            .equals(other.getCheckpointKey())) return false;
        if (getOptionalRestore()
            != other.getOptionalRestore()) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + FULL_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getFullName().hashCode();
        hash = (37 * hash) + CHECKPOINT_KEY_FIELD_NUMBER;
        hash = (53 * hash) + getCheckpointKey().hashCode();
        hash = (37 * hash) + OPTIONAL_RESTORE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptionalRestore());
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor)
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_SerializedTensor_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_SerializedTensor_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.class, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder.class);
        }

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

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

          fullName_ = "";

          checkpointKey_ = "";

          optionalRestore_ = false;

          return this;
        }

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

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

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

        @java.lang.Override
        public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor buildPartial() {
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor result = new org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor(this);
          result.name_ = name_;
          result.fullName_ = fullName_;
          result.checkpointKey_ = checkpointKey_;
          result.optionalRestore_ = optionalRestore_;
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor other) {
          if (other == org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (!other.getFullName().isEmpty()) {
            fullName_ = other.fullName_;
            onChanged();
          }
          if (!other.getCheckpointKey().isEmpty()) {
            checkpointKey_ = other.checkpointKey_;
            onChanged();
          }
          if (other.getOptionalRestore() != false) {
            setOptionalRestore(other.getOptionalRestore());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private java.lang.Object name_ = "";
        /**
         * <pre>
         * A name for the Tensor. Simple variables have only one
         * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
         * be restored on object creation as an optimization.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * A name for the Tensor. Simple variables have only one
         * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
         * be restored on object creation as an optimization.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * A name for the Tensor. Simple variables have only one
         * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
         * be restored on object creation as an optimization.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * A name for the Tensor. Simple variables have only one
         * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
         * be restored on object creation as an optimization.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public Builder clearName() {
          
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * A name for the Tensor. Simple variables have only one
         * `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
         * be restored on object creation as an optimization.
         * </pre>
         *
         * <code>string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          name_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object fullName_ = "";
        /**
         * <pre>
         * The full name of the variable/tensor, if applicable. Used to allow
         * name-based loading of checkpoints which were saved using an
         * object-based API. Should match the checkpoint key which would have been
         * assigned by tf.train.Saver.
         * </pre>
         *
         * <code>string full_name = 2;</code>
         */
        public java.lang.String getFullName() {
          java.lang.Object ref = fullName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            fullName_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The full name of the variable/tensor, if applicable. Used to allow
         * name-based loading of checkpoints which were saved using an
         * object-based API. Should match the checkpoint key which would have been
         * assigned by tf.train.Saver.
         * </pre>
         *
         * <code>string full_name = 2;</code>
         */
        public com.google.protobuf.ByteString
            getFullNameBytes() {
          java.lang.Object ref = fullName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            fullName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The full name of the variable/tensor, if applicable. Used to allow
         * name-based loading of checkpoints which were saved using an
         * object-based API. Should match the checkpoint key which would have been
         * assigned by tf.train.Saver.
         * </pre>
         *
         * <code>string full_name = 2;</code>
         */
        public Builder setFullName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          fullName_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The full name of the variable/tensor, if applicable. Used to allow
         * name-based loading of checkpoints which were saved using an
         * object-based API. Should match the checkpoint key which would have been
         * assigned by tf.train.Saver.
         * </pre>
         *
         * <code>string full_name = 2;</code>
         */
        public Builder clearFullName() {
          
          fullName_ = getDefaultInstance().getFullName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The full name of the variable/tensor, if applicable. Used to allow
         * name-based loading of checkpoints which were saved using an
         * object-based API. Should match the checkpoint key which would have been
         * assigned by tf.train.Saver.
         * </pre>
         *
         * <code>string full_name = 2;</code>
         */
        public Builder setFullNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          fullName_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object checkpointKey_ = "";
        /**
         * <pre>
         * The generated name of the Tensor in the checkpoint.
         * </pre>
         *
         * <code>string checkpoint_key = 3;</code>
         */
        public java.lang.String getCheckpointKey() {
          java.lang.Object ref = checkpointKey_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            checkpointKey_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The generated name of the Tensor in the checkpoint.
         * </pre>
         *
         * <code>string checkpoint_key = 3;</code>
         */
        public com.google.protobuf.ByteString
            getCheckpointKeyBytes() {
          java.lang.Object ref = checkpointKey_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            checkpointKey_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The generated name of the Tensor in the checkpoint.
         * </pre>
         *
         * <code>string checkpoint_key = 3;</code>
         */
        public Builder setCheckpointKey(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          checkpointKey_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The generated name of the Tensor in the checkpoint.
         * </pre>
         *
         * <code>string checkpoint_key = 3;</code>
         */
        public Builder clearCheckpointKey() {
          
          checkpointKey_ = getDefaultInstance().getCheckpointKey();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The generated name of the Tensor in the checkpoint.
         * </pre>
         *
         * <code>string checkpoint_key = 3;</code>
         */
        public Builder setCheckpointKeyBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          checkpointKey_ = value;
          onChanged();
          return this;
        }

        private boolean optionalRestore_ ;
        /**
         * <pre>
         * Whether checkpoints should be considered as matching even without this
         * value restored. Used for non-critical values which don't affect the
         * TensorFlow graph, such as layer configurations.
         * </pre>
         *
         * <code>bool optional_restore = 4;</code>
         */
        public boolean getOptionalRestore() {
          return optionalRestore_;
        }
        /**
         * <pre>
         * Whether checkpoints should be considered as matching even without this
         * value restored. Used for non-critical values which don't affect the
         * TensorFlow graph, such as layer configurations.
         * </pre>
         *
         * <code>bool optional_restore = 4;</code>
         */
        public Builder setOptionalRestore(boolean value) {
          
          optionalRestore_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Whether checkpoints should be considered as matching even without this
         * value restored. Used for non-critical values which don't affect the
         * TensorFlow graph, such as layer configurations.
         * </pre>
         *
         * <code>bool optional_restore = 4;</code>
         */
        public Builder clearOptionalRestore() {
          
          optionalRestore_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor)
      }

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

      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

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

    }

    public interface SlotVariableReferenceOrBuilder extends
        // @@protoc_insertion_point(interface_extends:tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * An index into `TrackableObjectGraph.nodes`, indicating the
       * variable object this slot was created for.
       * </pre>
       *
       * <code>int32 original_variable_node_id = 1;</code>
       */
      int getOriginalVariableNodeId();

      /**
       * <pre>
       * The name of the slot (e.g. "m"/"v").
       * </pre>
       *
       * <code>string slot_name = 2;</code>
       */
      java.lang.String getSlotName();
      /**
       * <pre>
       * The name of the slot (e.g. "m"/"v").
       * </pre>
       *
       * <code>string slot_name = 2;</code>
       */
      com.google.protobuf.ByteString
          getSlotNameBytes();

      /**
       * <pre>
       * An index into `TrackableObjectGraph.nodes`, indicating the
       * `Object` with the value of the slot variable.
       * </pre>
       *
       * <code>int32 slot_variable_node_id = 3;</code>
       */
      int getSlotVariableNodeId();
    }
    /**
     * Protobuf type {@code tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference}
     */
    public  static final class SlotVariableReference extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference)
        SlotVariableReferenceOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SlotVariableReference.newBuilder() to construct.
      private SlotVariableReference(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SlotVariableReference() {
        slotName_ = "";
      }

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

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

                originalVariableNodeId_ = input.readInt32();
                break;
              }
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();

                slotName_ = s;
                break;
              }
              case 24: {

                slotVariableNodeId_ = input.readInt32();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_SlotVariableReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_SlotVariableReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.class, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder.class);
      }

      public static final int ORIGINAL_VARIABLE_NODE_ID_FIELD_NUMBER = 1;
      private int originalVariableNodeId_;
      /**
       * <pre>
       * An index into `TrackableObjectGraph.nodes`, indicating the
       * variable object this slot was created for.
       * </pre>
       *
       * <code>int32 original_variable_node_id = 1;</code>
       */
      public int getOriginalVariableNodeId() {
        return originalVariableNodeId_;
      }

      public static final int SLOT_NAME_FIELD_NUMBER = 2;
      private volatile java.lang.Object slotName_;
      /**
       * <pre>
       * The name of the slot (e.g. "m"/"v").
       * </pre>
       *
       * <code>string slot_name = 2;</code>
       */
      public java.lang.String getSlotName() {
        java.lang.Object ref = slotName_;
        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();
          slotName_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * The name of the slot (e.g. "m"/"v").
       * </pre>
       *
       * <code>string slot_name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSlotNameBytes() {
        java.lang.Object ref = slotName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          slotName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SLOT_VARIABLE_NODE_ID_FIELD_NUMBER = 3;
      private int slotVariableNodeId_;
      /**
       * <pre>
       * An index into `TrackableObjectGraph.nodes`, indicating the
       * `Object` with the value of the slot variable.
       * </pre>
       *
       * <code>int32 slot_variable_node_id = 3;</code>
       */
      public int getSlotVariableNodeId() {
        return slotVariableNodeId_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (originalVariableNodeId_ != 0) {
          output.writeInt32(1, originalVariableNodeId_);
        }
        if (!getSlotNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, slotName_);
        }
        if (slotVariableNodeId_ != 0) {
          output.writeInt32(3, slotVariableNodeId_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (originalVariableNodeId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, originalVariableNodeId_);
        }
        if (!getSlotNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, slotName_);
        }
        if (slotVariableNodeId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, slotVariableNodeId_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getOriginalVariableNodeId()
            != other.getOriginalVariableNodeId()) return false;
        if (!getSlotName()
            .equals(other.getSlotName())) return false;
        if (getSlotVariableNodeId()
            != other.getSlotVariableNodeId()) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + ORIGINAL_VARIABLE_NODE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getOriginalVariableNodeId();
        hash = (37 * hash) + SLOT_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getSlotName().hashCode();
        hash = (37 * hash) + SLOT_VARIABLE_NODE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getSlotVariableNodeId();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference)
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_SlotVariableReference_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_SlotVariableReference_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.class, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder.class);
        }

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

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

          slotName_ = "";

          slotVariableNodeId_ = 0;

          return this;
        }

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

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

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

        @java.lang.Override
        public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference buildPartial() {
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference result = new org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference(this);
          result.originalVariableNodeId_ = originalVariableNodeId_;
          result.slotName_ = slotName_;
          result.slotVariableNodeId_ = slotVariableNodeId_;
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference other) {
          if (other == org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.getDefaultInstance()) return this;
          if (other.getOriginalVariableNodeId() != 0) {
            setOriginalVariableNodeId(other.getOriginalVariableNodeId());
          }
          if (!other.getSlotName().isEmpty()) {
            slotName_ = other.slotName_;
            onChanged();
          }
          if (other.getSlotVariableNodeId() != 0) {
            setSlotVariableNodeId(other.getSlotVariableNodeId());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private int originalVariableNodeId_ ;
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the
         * variable object this slot was created for.
         * </pre>
         *
         * <code>int32 original_variable_node_id = 1;</code>
         */
        public int getOriginalVariableNodeId() {
          return originalVariableNodeId_;
        }
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the
         * variable object this slot was created for.
         * </pre>
         *
         * <code>int32 original_variable_node_id = 1;</code>
         */
        public Builder setOriginalVariableNodeId(int value) {
          
          originalVariableNodeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the
         * variable object this slot was created for.
         * </pre>
         *
         * <code>int32 original_variable_node_id = 1;</code>
         */
        public Builder clearOriginalVariableNodeId() {
          
          originalVariableNodeId_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object slotName_ = "";
        /**
         * <pre>
         * The name of the slot (e.g. "m"/"v").
         * </pre>
         *
         * <code>string slot_name = 2;</code>
         */
        public java.lang.String getSlotName() {
          java.lang.Object ref = slotName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            slotName_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The name of the slot (e.g. "m"/"v").
         * </pre>
         *
         * <code>string slot_name = 2;</code>
         */
        public com.google.protobuf.ByteString
            getSlotNameBytes() {
          java.lang.Object ref = slotName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            slotName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The name of the slot (e.g. "m"/"v").
         * </pre>
         *
         * <code>string slot_name = 2;</code>
         */
        public Builder setSlotName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          slotName_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The name of the slot (e.g. "m"/"v").
         * </pre>
         *
         * <code>string slot_name = 2;</code>
         */
        public Builder clearSlotName() {
          
          slotName_ = getDefaultInstance().getSlotName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The name of the slot (e.g. "m"/"v").
         * </pre>
         *
         * <code>string slot_name = 2;</code>
         */
        public Builder setSlotNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          slotName_ = value;
          onChanged();
          return this;
        }

        private int slotVariableNodeId_ ;
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the
         * `Object` with the value of the slot variable.
         * </pre>
         *
         * <code>int32 slot_variable_node_id = 3;</code>
         */
        public int getSlotVariableNodeId() {
          return slotVariableNodeId_;
        }
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the
         * `Object` with the value of the slot variable.
         * </pre>
         *
         * <code>int32 slot_variable_node_id = 3;</code>
         */
        public Builder setSlotVariableNodeId(int value) {
          
          slotVariableNodeId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * An index into `TrackableObjectGraph.nodes`, indicating the
         * `Object` with the value of the slot variable.
         * </pre>
         *
         * <code>int32 slot_variable_node_id = 3;</code>
         */
        public Builder clearSlotVariableNodeId() {
          
          slotVariableNodeId_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference)
      }

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

      public static org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

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

    }

    public static final int CHILDREN_FIELD_NUMBER = 1;
    private java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference> children_;
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference> getChildrenList() {
      return children_;
    }
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder> 
        getChildrenOrBuilderList() {
      return children_;
    }
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    public int getChildrenCount() {
      return children_.size();
    }
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference getChildren(int index) {
      return children_.get(index);
    }
    /**
     * <pre>
     * Objects which this object depends on.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder getChildrenOrBuilder(
        int index) {
      return children_.get(index);
    }

    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
    private java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor> attributes_;
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor> getAttributesList() {
      return attributes_;
    }
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder> 
        getAttributesOrBuilderList() {
      return attributes_;
    }
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    public int getAttributesCount() {
      return attributes_.size();
    }
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor getAttributes(int index) {
      return attributes_.get(index);
    }
    /**
     * <pre>
     * Serialized data specific to this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder getAttributesOrBuilder(
        int index) {
      return attributes_.get(index);
    }

    public static final int SLOT_VARIABLES_FIELD_NUMBER = 3;
    private java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference> slotVariables_;
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference> getSlotVariablesList() {
      return slotVariables_;
    }
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder> 
        getSlotVariablesOrBuilderList() {
      return slotVariables_;
    }
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    public int getSlotVariablesCount() {
      return slotVariables_.size();
    }
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference getSlotVariables(int index) {
      return slotVariables_.get(index);
    }
    /**
     * <pre>
     * Slot variables owned by this object.
     * </pre>
     *
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder getSlotVariablesOrBuilder(
        int index) {
      return slotVariables_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < children_.size(); i++) {
        output.writeMessage(1, children_.get(i));
      }
      for (int i = 0; i < attributes_.size(); i++) {
        output.writeMessage(2, attributes_.get(i));
      }
      for (int i = 0; i < slotVariables_.size(); i++) {
        output.writeMessage(3, slotVariables_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < children_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, children_.get(i));
      }
      for (int i = 0; i < attributes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, attributes_.get(i));
      }
      for (int i = 0; i < slotVariables_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, slotVariables_.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 org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject)) {
        return super.equals(obj);
      }
      org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject other = (org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject) obj;

      if (!getChildrenList()
          .equals(other.getChildrenList())) return false;
      if (!getAttributesList()
          .equals(other.getAttributesList())) return false;
      if (!getSlotVariablesList()
          .equals(other.getSlotVariablesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getChildrenCount() > 0) {
        hash = (37 * hash) + CHILDREN_FIELD_NUMBER;
        hash = (53 * hash) + getChildrenList().hashCode();
      }
      if (getAttributesCount() > 0) {
        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
        hash = (53 * hash) + getAttributesList().hashCode();
      }
      if (getSlotVariablesCount() > 0) {
        hash = (37 * hash) + SLOT_VARIABLES_FIELD_NUMBER;
        hash = (53 * hash) + getSlotVariablesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tensorflow.TrackableObjectGraph.TrackableObject}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tensorflow.TrackableObjectGraph.TrackableObject)
        org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObjectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_TrackableObject_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.class, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getChildrenFieldBuilder();
          getAttributesFieldBuilder();
          getSlotVariablesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (childrenBuilder_ == null) {
          children_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          childrenBuilder_.clear();
        }
        if (attributesBuilder_ == null) {
          attributes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          attributesBuilder_.clear();
        }
        if (slotVariablesBuilder_ == null) {
          slotVariables_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          slotVariablesBuilder_.clear();
        }
        return this;
      }

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

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

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

      @java.lang.Override
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject buildPartial() {
        org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject result = new org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject(this);
        int from_bitField0_ = bitField0_;
        if (childrenBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            children_ = java.util.Collections.unmodifiableList(children_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.children_ = children_;
        } else {
          result.children_ = childrenBuilder_.build();
        }
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            attributes_ = java.util.Collections.unmodifiableList(attributes_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        if (slotVariablesBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            slotVariables_ = java.util.Collections.unmodifiableList(slotVariables_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.slotVariables_ = slotVariables_;
        } else {
          result.slotVariables_ = slotVariablesBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject other) {
        if (other == org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.getDefaultInstance()) return this;
        if (childrenBuilder_ == null) {
          if (!other.children_.isEmpty()) {
            if (children_.isEmpty()) {
              children_ = other.children_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureChildrenIsMutable();
              children_.addAll(other.children_);
            }
            onChanged();
          }
        } else {
          if (!other.children_.isEmpty()) {
            if (childrenBuilder_.isEmpty()) {
              childrenBuilder_.dispose();
              childrenBuilder_ = null;
              children_ = other.children_;
              bitField0_ = (bitField0_ & ~0x00000001);
              childrenBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getChildrenFieldBuilder() : null;
            } else {
              childrenBuilder_.addAllMessages(other.children_);
            }
          }
        }
        if (attributesBuilder_ == null) {
          if (!other.attributes_.isEmpty()) {
            if (attributes_.isEmpty()) {
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAttributesIsMutable();
              attributes_.addAll(other.attributes_);
            }
            onChanged();
          }
        } else {
          if (!other.attributes_.isEmpty()) {
            if (attributesBuilder_.isEmpty()) {
              attributesBuilder_.dispose();
              attributesBuilder_ = null;
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00000002);
              attributesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttributesFieldBuilder() : null;
            } else {
              attributesBuilder_.addAllMessages(other.attributes_);
            }
          }
        }
        if (slotVariablesBuilder_ == null) {
          if (!other.slotVariables_.isEmpty()) {
            if (slotVariables_.isEmpty()) {
              slotVariables_ = other.slotVariables_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureSlotVariablesIsMutable();
              slotVariables_.addAll(other.slotVariables_);
            }
            onChanged();
          }
        } else {
          if (!other.slotVariables_.isEmpty()) {
            if (slotVariablesBuilder_.isEmpty()) {
              slotVariablesBuilder_.dispose();
              slotVariablesBuilder_ = null;
              slotVariables_ = other.slotVariables_;
              bitField0_ = (bitField0_ & ~0x00000004);
              slotVariablesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSlotVariablesFieldBuilder() : null;
            } else {
              slotVariablesBuilder_.addAllMessages(other.slotVariables_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference> children_ =
        java.util.Collections.emptyList();
      private void ensureChildrenIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          children_ = new java.util.ArrayList<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference>(children_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder> childrenBuilder_;

      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference> getChildrenList() {
        if (childrenBuilder_ == null) {
          return java.util.Collections.unmodifiableList(children_);
        } else {
          return childrenBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public int getChildrenCount() {
        if (childrenBuilder_ == null) {
          return children_.size();
        } else {
          return childrenBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference getChildren(int index) {
        if (childrenBuilder_ == null) {
          return children_.get(index);
        } else {
          return childrenBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder setChildren(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference value) {
        if (childrenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenIsMutable();
          children_.set(index, value);
          onChanged();
        } else {
          childrenBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder setChildren(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder builderForValue) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          children_.set(index, builderForValue.build());
          onChanged();
        } else {
          childrenBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder addChildren(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference value) {
        if (childrenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenIsMutable();
          children_.add(value);
          onChanged();
        } else {
          childrenBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder addChildren(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference value) {
        if (childrenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenIsMutable();
          children_.add(index, value);
          onChanged();
        } else {
          childrenBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder addChildren(
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder builderForValue) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          children_.add(builderForValue.build());
          onChanged();
        } else {
          childrenBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder addChildren(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder builderForValue) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          children_.add(index, builderForValue.build());
          onChanged();
        } else {
          childrenBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder addAllChildren(
          java.lang.Iterable<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference> values) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, children_);
          onChanged();
        } else {
          childrenBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder clearChildren() {
        if (childrenBuilder_ == null) {
          children_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          childrenBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public Builder removeChildren(int index) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          children_.remove(index);
          onChanged();
        } else {
          childrenBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder getChildrenBuilder(
          int index) {
        return getChildrenFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder getChildrenOrBuilder(
          int index) {
        if (childrenBuilder_ == null) {
          return children_.get(index);  } else {
          return childrenBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder> 
           getChildrenOrBuilderList() {
        if (childrenBuilder_ != null) {
          return childrenBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(children_);
        }
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder addChildrenBuilder() {
        return getChildrenFieldBuilder().addBuilder(
            org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder addChildrenBuilder(
          int index) {
        return getChildrenFieldBuilder().addBuilder(
            index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * Objects which this object depends on.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.ObjectReference children = 1;</code>
       */
      public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder> 
           getChildrenBuilderList() {
        return getChildrenFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder> 
          getChildrenFieldBuilder() {
        if (childrenBuilder_ == null) {
          childrenBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReference.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.ObjectReferenceOrBuilder>(
                  children_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          children_ = null;
        }
        return childrenBuilder_;
      }

      private java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor> attributes_ =
        java.util.Collections.emptyList();
      private void ensureAttributesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          attributes_ = new java.util.ArrayList<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor>(attributes_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder> attributesBuilder_;

      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor> getAttributesList() {
        if (attributesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(attributes_);
        } else {
          return attributesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public int getAttributesCount() {
        if (attributesBuilder_ == null) {
          return attributes_.size();
        } else {
          return attributesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor getAttributes(int index) {
        if (attributesBuilder_ == null) {
          return attributes_.get(index);
        } else {
          return attributesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder setAttributes(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributesIsMutable();
          attributes_.set(index, value);
          onChanged();
        } else {
          attributesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder setAttributes(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          ensureAttributesIsMutable();
          attributes_.set(index, builderForValue.build());
          onChanged();
        } else {
          attributesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder addAttributes(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributesIsMutable();
          attributes_.add(value);
          onChanged();
        } else {
          attributesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder addAttributes(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor value) {
        if (attributesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributesIsMutable();
          attributes_.add(index, value);
          onChanged();
        } else {
          attributesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder addAttributes(
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          ensureAttributesIsMutable();
          attributes_.add(builderForValue.build());
          onChanged();
        } else {
          attributesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder addAttributes(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder builderForValue) {
        if (attributesBuilder_ == null) {
          ensureAttributesIsMutable();
          attributes_.add(index, builderForValue.build());
          onChanged();
        } else {
          attributesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder addAllAttributes(
          java.lang.Iterable<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor> values) {
        if (attributesBuilder_ == null) {
          ensureAttributesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, attributes_);
          onChanged();
        } else {
          attributesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder clearAttributes() {
        if (attributesBuilder_ == null) {
          attributes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          attributesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public Builder removeAttributes(int index) {
        if (attributesBuilder_ == null) {
          ensureAttributesIsMutable();
          attributes_.remove(index);
          onChanged();
        } else {
          attributesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder getAttributesBuilder(
          int index) {
        return getAttributesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder getAttributesOrBuilder(
          int index) {
        if (attributesBuilder_ == null) {
          return attributes_.get(index);  } else {
          return attributesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder> 
           getAttributesOrBuilderList() {
        if (attributesBuilder_ != null) {
          return attributesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(attributes_);
        }
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder addAttributesBuilder() {
        return getAttributesFieldBuilder().addBuilder(
            org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.getDefaultInstance());
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder addAttributesBuilder(
          int index) {
        return getAttributesFieldBuilder().addBuilder(
            index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.getDefaultInstance());
      }
      /**
       * <pre>
       * Serialized data specific to this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SerializedTensor attributes = 2;</code>
       */
      public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder> 
           getAttributesBuilderList() {
        return getAttributesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder> 
          getAttributesFieldBuilder() {
        if (attributesBuilder_ == null) {
          attributesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensor.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SerializedTensorOrBuilder>(
                  attributes_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          attributes_ = null;
        }
        return attributesBuilder_;
      }

      private java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference> slotVariables_ =
        java.util.Collections.emptyList();
      private void ensureSlotVariablesIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          slotVariables_ = new java.util.ArrayList<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference>(slotVariables_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder> slotVariablesBuilder_;

      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference> getSlotVariablesList() {
        if (slotVariablesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(slotVariables_);
        } else {
          return slotVariablesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public int getSlotVariablesCount() {
        if (slotVariablesBuilder_ == null) {
          return slotVariables_.size();
        } else {
          return slotVariablesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference getSlotVariables(int index) {
        if (slotVariablesBuilder_ == null) {
          return slotVariables_.get(index);
        } else {
          return slotVariablesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder setSlotVariables(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference value) {
        if (slotVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlotVariablesIsMutable();
          slotVariables_.set(index, value);
          onChanged();
        } else {
          slotVariablesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder setSlotVariables(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder builderForValue) {
        if (slotVariablesBuilder_ == null) {
          ensureSlotVariablesIsMutable();
          slotVariables_.set(index, builderForValue.build());
          onChanged();
        } else {
          slotVariablesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder addSlotVariables(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference value) {
        if (slotVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlotVariablesIsMutable();
          slotVariables_.add(value);
          onChanged();
        } else {
          slotVariablesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder addSlotVariables(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference value) {
        if (slotVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlotVariablesIsMutable();
          slotVariables_.add(index, value);
          onChanged();
        } else {
          slotVariablesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder addSlotVariables(
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder builderForValue) {
        if (slotVariablesBuilder_ == null) {
          ensureSlotVariablesIsMutable();
          slotVariables_.add(builderForValue.build());
          onChanged();
        } else {
          slotVariablesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder addSlotVariables(
          int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder builderForValue) {
        if (slotVariablesBuilder_ == null) {
          ensureSlotVariablesIsMutable();
          slotVariables_.add(index, builderForValue.build());
          onChanged();
        } else {
          slotVariablesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder addAllSlotVariables(
          java.lang.Iterable<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference> values) {
        if (slotVariablesBuilder_ == null) {
          ensureSlotVariablesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, slotVariables_);
          onChanged();
        } else {
          slotVariablesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder clearSlotVariables() {
        if (slotVariablesBuilder_ == null) {
          slotVariables_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          slotVariablesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public Builder removeSlotVariables(int index) {
        if (slotVariablesBuilder_ == null) {
          ensureSlotVariablesIsMutable();
          slotVariables_.remove(index);
          onChanged();
        } else {
          slotVariablesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder getSlotVariablesBuilder(
          int index) {
        return getSlotVariablesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder getSlotVariablesOrBuilder(
          int index) {
        if (slotVariablesBuilder_ == null) {
          return slotVariables_.get(index);  } else {
          return slotVariablesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder> 
           getSlotVariablesOrBuilderList() {
        if (slotVariablesBuilder_ != null) {
          return slotVariablesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(slotVariables_);
        }
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder addSlotVariablesBuilder() {
        return getSlotVariablesFieldBuilder().addBuilder(
            org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.getDefaultInstance());
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder addSlotVariablesBuilder(
          int index) {
        return getSlotVariablesFieldBuilder().addBuilder(
            index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.getDefaultInstance());
      }
      /**
       * <pre>
       * Slot variables owned by this object.
       * </pre>
       *
       * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject.SlotVariableReference slot_variables = 3;</code>
       */
      public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder> 
           getSlotVariablesBuilderList() {
        return getSlotVariablesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder> 
          getSlotVariablesFieldBuilder() {
        if (slotVariablesBuilder_ == null) {
          slotVariablesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReference.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.SlotVariableReferenceOrBuilder>(
                  slotVariables_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          slotVariables_ = null;
        }
        return slotVariablesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:tensorflow.TrackableObjectGraph.TrackableObject)
    }

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

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

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

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

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

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

  }

  public static final int NODES_FIELD_NUMBER = 1;
  private java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject> nodes_;
  /**
   * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
   */
  public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject> getNodesList() {
    return nodes_;
  }
  /**
   * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
   */
  public java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObjectOrBuilder> 
      getNodesOrBuilderList() {
    return nodes_;
  }
  /**
   * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
   */
  public int getNodesCount() {
    return nodes_.size();
  }
  /**
   * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
   */
  public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject getNodes(int index) {
    return nodes_.get(index);
  }
  /**
   * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
   */
  public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObjectOrBuilder getNodesOrBuilder(
      int index) {
    return nodes_.get(index);
  }

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

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    for (int i = 0; i < nodes_.size(); i++) {
      output.writeMessage(1, nodes_.get(i));
    }
    unknownFields.writeTo(output);
  }

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

    size = 0;
    for (int i = 0; i < nodes_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1, nodes_.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 org.tensorflow.proto.framework.TrackableObjectGraph)) {
      return super.equals(obj);
    }
    org.tensorflow.proto.framework.TrackableObjectGraph other = (org.tensorflow.proto.framework.TrackableObjectGraph) obj;

    if (!getNodesList()
        .equals(other.getNodesList())) return false;
    if (!unknownFields.equals(other.unknownFields)) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (getNodesCount() > 0) {
      hash = (37 * hash) + NODES_FIELD_NUMBER;
      hash = (53 * hash) + getNodesList().hashCode();
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

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

  @java.lang.Override
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(org.tensorflow.proto.framework.TrackableObjectGraph prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * Protobuf type {@code tensorflow.TrackableObjectGraph}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:tensorflow.TrackableObjectGraph)
      org.tensorflow.proto.framework.TrackableObjectGraphOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.TrackableObjectGraphProtos.internal_static_tensorflow_TrackableObjectGraph_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.TrackableObjectGraph.class, org.tensorflow.proto.framework.TrackableObjectGraph.Builder.class);
    }

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

    private Builder(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getNodesFieldBuilder();
      }
    }
    @java.lang.Override
    public Builder clear() {
      super.clear();
      if (nodesBuilder_ == null) {
        nodes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
      } else {
        nodesBuilder_.clear();
      }
      return this;
    }

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

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

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

    @java.lang.Override
    public org.tensorflow.proto.framework.TrackableObjectGraph buildPartial() {
      org.tensorflow.proto.framework.TrackableObjectGraph result = new org.tensorflow.proto.framework.TrackableObjectGraph(this);
      int from_bitField0_ = bitField0_;
      if (nodesBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0)) {
          nodes_ = java.util.Collections.unmodifiableList(nodes_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.nodes_ = nodes_;
      } else {
        result.nodes_ = nodesBuilder_.build();
      }
      onBuilt();
      return result;
    }

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

    public Builder mergeFrom(org.tensorflow.proto.framework.TrackableObjectGraph other) {
      if (other == org.tensorflow.proto.framework.TrackableObjectGraph.getDefaultInstance()) return this;
      if (nodesBuilder_ == null) {
        if (!other.nodes_.isEmpty()) {
          if (nodes_.isEmpty()) {
            nodes_ = other.nodes_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureNodesIsMutable();
            nodes_.addAll(other.nodes_);
          }
          onChanged();
        }
      } else {
        if (!other.nodes_.isEmpty()) {
          if (nodesBuilder_.isEmpty()) {
            nodesBuilder_.dispose();
            nodesBuilder_ = null;
            nodes_ = other.nodes_;
            bitField0_ = (bitField0_ & ~0x00000001);
            nodesBuilder_ = 
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getNodesFieldBuilder() : null;
          } else {
            nodesBuilder_.addAllMessages(other.nodes_);
          }
        }
      }
      this.mergeUnknownFields(other.unknownFields);
      onChanged();
      return this;
    }

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

    @java.lang.Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      org.tensorflow.proto.framework.TrackableObjectGraph parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (org.tensorflow.proto.framework.TrackableObjectGraph) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int bitField0_;

    private java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject> nodes_ =
      java.util.Collections.emptyList();
    private void ensureNodesIsMutable() {
      if (!((bitField0_ & 0x00000001) != 0)) {
        nodes_ = new java.util.ArrayList<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject>(nodes_);
        bitField0_ |= 0x00000001;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObjectOrBuilder> nodesBuilder_;

    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject> getNodesList() {
      if (nodesBuilder_ == null) {
        return java.util.Collections.unmodifiableList(nodes_);
      } else {
        return nodesBuilder_.getMessageList();
      }
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public int getNodesCount() {
      if (nodesBuilder_ == null) {
        return nodes_.size();
      } else {
        return nodesBuilder_.getCount();
      }
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject getNodes(int index) {
      if (nodesBuilder_ == null) {
        return nodes_.get(index);
      } else {
        return nodesBuilder_.getMessage(index);
      }
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder setNodes(
        int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject value) {
      if (nodesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNodesIsMutable();
        nodes_.set(index, value);
        onChanged();
      } else {
        nodesBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder setNodes(
        int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder builderForValue) {
      if (nodesBuilder_ == null) {
        ensureNodesIsMutable();
        nodes_.set(index, builderForValue.build());
        onChanged();
      } else {
        nodesBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder addNodes(org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject value) {
      if (nodesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNodesIsMutable();
        nodes_.add(value);
        onChanged();
      } else {
        nodesBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder addNodes(
        int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject value) {
      if (nodesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNodesIsMutable();
        nodes_.add(index, value);
        onChanged();
      } else {
        nodesBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder addNodes(
        org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder builderForValue) {
      if (nodesBuilder_ == null) {
        ensureNodesIsMutable();
        nodes_.add(builderForValue.build());
        onChanged();
      } else {
        nodesBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder addNodes(
        int index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder builderForValue) {
      if (nodesBuilder_ == null) {
        ensureNodesIsMutable();
        nodes_.add(index, builderForValue.build());
        onChanged();
      } else {
        nodesBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder addAllNodes(
        java.lang.Iterable<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject> values) {
      if (nodesBuilder_ == null) {
        ensureNodesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, nodes_);
        onChanged();
      } else {
        nodesBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder clearNodes() {
      if (nodesBuilder_ == null) {
        nodes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
      } else {
        nodesBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public Builder removeNodes(int index) {
      if (nodesBuilder_ == null) {
        ensureNodesIsMutable();
        nodes_.remove(index);
        onChanged();
      } else {
        nodesBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder getNodesBuilder(
        int index) {
      return getNodesFieldBuilder().getBuilder(index);
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObjectOrBuilder getNodesOrBuilder(
        int index) {
      if (nodesBuilder_ == null) {
        return nodes_.get(index);  } else {
        return nodesBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObjectOrBuilder> 
         getNodesOrBuilderList() {
      if (nodesBuilder_ != null) {
        return nodesBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(nodes_);
      }
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder addNodesBuilder() {
      return getNodesFieldBuilder().addBuilder(
          org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.getDefaultInstance());
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder addNodesBuilder(
        int index) {
      return getNodesFieldBuilder().addBuilder(
          index, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.getDefaultInstance());
    }
    /**
     * <code>repeated .tensorflow.TrackableObjectGraph.TrackableObject nodes = 1;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder> 
         getNodesBuilderList() {
      return getNodesFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObjectOrBuilder> 
        getNodesFieldBuilder() {
      if (nodesBuilder_ == null) {
        nodesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObject.Builder, org.tensorflow.proto.framework.TrackableObjectGraph.TrackableObjectOrBuilder>(
                nodes_,
                ((bitField0_ & 0x00000001) != 0),
                getParentForChildren(),
                isClean());
        nodes_ = null;
      }
      return nodesBuilder_;
    }
    @java.lang.Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

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


    // @@protoc_insertion_point(builder_scope:tensorflow.TrackableObjectGraph)
  }

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

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

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

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

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

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

}

