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

package org.tensorflow.proto.framework;

/**
 * <pre>
 * Metadata output (i.e., non-Tensor) for a single Run() call.
 * </pre>
 *
 * Protobuf type {@code tensorflow.RunMetadata}
 */
public  final class RunMetadata extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:tensorflow.RunMetadata)
    RunMetadataOrBuilder {
private static final long serialVersionUID = 0L;
  // Use RunMetadata.newBuilder() to construct.
  private RunMetadata(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private RunMetadata() {
    partitionGraphs_ = java.util.Collections.emptyList();
    functionGraphs_ = java.util.Collections.emptyList();
  }

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

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

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

            break;
          }
          case 26: {
            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
              partitionGraphs_ = new java.util.ArrayList<org.tensorflow.proto.framework.GraphDef>();
              mutable_bitField0_ |= 0x00000001;
            }
            partitionGraphs_.add(
                input.readMessage(org.tensorflow.proto.framework.GraphDef.parser(), extensionRegistry));
            break;
          }
          case 34: {
            if (!((mutable_bitField0_ & 0x00000002) != 0)) {
              functionGraphs_ = new java.util.ArrayList<org.tensorflow.proto.framework.RunMetadata.FunctionGraphs>();
              mutable_bitField0_ |= 0x00000002;
            }
            functionGraphs_.add(
                input.readMessage(org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.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)) {
        partitionGraphs_ = java.util.Collections.unmodifiableList(partitionGraphs_);
      }
      if (((mutable_bitField0_ & 0x00000002) != 0)) {
        functionGraphs_ = java.util.Collections.unmodifiableList(functionGraphs_);
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return org.tensorflow.proto.framework.ConfigProtos.internal_static_tensorflow_RunMetadata_descriptor;
  }

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

  public interface FunctionGraphsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tensorflow.RunMetadata.FunctionGraphs)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    java.util.List<org.tensorflow.proto.framework.GraphDef> 
        getPartitionGraphsList();
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    org.tensorflow.proto.framework.GraphDef getPartitionGraphs(int index);
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    int getPartitionGraphsCount();
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    java.util.List<? extends org.tensorflow.proto.framework.GraphDefOrBuilder> 
        getPartitionGraphsOrBuilderList();
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    org.tensorflow.proto.framework.GraphDefOrBuilder getPartitionGraphsOrBuilder(
        int index);

    /**
     * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
     */
    boolean hasPreOptimizationGraph();
    /**
     * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
     */
    org.tensorflow.proto.framework.GraphDef getPreOptimizationGraph();
    /**
     * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
     */
    org.tensorflow.proto.framework.GraphDefOrBuilder getPreOptimizationGraphOrBuilder();

    /**
     * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
     */
    boolean hasPostOptimizationGraph();
    /**
     * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
     */
    org.tensorflow.proto.framework.GraphDef getPostOptimizationGraph();
    /**
     * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
     */
    org.tensorflow.proto.framework.GraphDefOrBuilder getPostOptimizationGraphOrBuilder();
  }
  /**
   * Protobuf type {@code tensorflow.RunMetadata.FunctionGraphs}
   */
  public  static final class FunctionGraphs extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tensorflow.RunMetadata.FunctionGraphs)
      FunctionGraphsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FunctionGraphs.newBuilder() to construct.
    private FunctionGraphs(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FunctionGraphs() {
      partitionGraphs_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FunctionGraphs(
        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)) {
                partitionGraphs_ = new java.util.ArrayList<org.tensorflow.proto.framework.GraphDef>();
                mutable_bitField0_ |= 0x00000001;
              }
              partitionGraphs_.add(
                  input.readMessage(org.tensorflow.proto.framework.GraphDef.parser(), extensionRegistry));
              break;
            }
            case 18: {
              org.tensorflow.proto.framework.GraphDef.Builder subBuilder = null;
              if (preOptimizationGraph_ != null) {
                subBuilder = preOptimizationGraph_.toBuilder();
              }
              preOptimizationGraph_ = input.readMessage(org.tensorflow.proto.framework.GraphDef.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(preOptimizationGraph_);
                preOptimizationGraph_ = subBuilder.buildPartial();
              }

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

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.ConfigProtos.internal_static_tensorflow_RunMetadata_FunctionGraphs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.class, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder.class);
    }

    public static final int PARTITION_GRAPHS_FIELD_NUMBER = 1;
    private java.util.List<org.tensorflow.proto.framework.GraphDef> partitionGraphs_;
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.GraphDef> getPartitionGraphsList() {
      return partitionGraphs_;
    }
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.GraphDefOrBuilder> 
        getPartitionGraphsOrBuilderList() {
      return partitionGraphs_;
    }
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    public int getPartitionGraphsCount() {
      return partitionGraphs_.size();
    }
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    public org.tensorflow.proto.framework.GraphDef getPartitionGraphs(int index) {
      return partitionGraphs_.get(index);
    }
    /**
     * <pre>
     * TODO(nareshmodi): Include some sort of function/cache-key identifier?
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
     */
    public org.tensorflow.proto.framework.GraphDefOrBuilder getPartitionGraphsOrBuilder(
        int index) {
      return partitionGraphs_.get(index);
    }

    public static final int PRE_OPTIMIZATION_GRAPH_FIELD_NUMBER = 2;
    private org.tensorflow.proto.framework.GraphDef preOptimizationGraph_;
    /**
     * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
     */
    public boolean hasPreOptimizationGraph() {
      return preOptimizationGraph_ != null;
    }
    /**
     * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
     */
    public org.tensorflow.proto.framework.GraphDef getPreOptimizationGraph() {
      return preOptimizationGraph_ == null ? org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : preOptimizationGraph_;
    }
    /**
     * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
     */
    public org.tensorflow.proto.framework.GraphDefOrBuilder getPreOptimizationGraphOrBuilder() {
      return getPreOptimizationGraph();
    }

    public static final int POST_OPTIMIZATION_GRAPH_FIELD_NUMBER = 3;
    private org.tensorflow.proto.framework.GraphDef postOptimizationGraph_;
    /**
     * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
     */
    public boolean hasPostOptimizationGraph() {
      return postOptimizationGraph_ != null;
    }
    /**
     * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
     */
    public org.tensorflow.proto.framework.GraphDef getPostOptimizationGraph() {
      return postOptimizationGraph_ == null ? org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : postOptimizationGraph_;
    }
    /**
     * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
     */
    public org.tensorflow.proto.framework.GraphDefOrBuilder getPostOptimizationGraphOrBuilder() {
      return getPostOptimizationGraph();
    }

    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 < partitionGraphs_.size(); i++) {
        output.writeMessage(1, partitionGraphs_.get(i));
      }
      if (preOptimizationGraph_ != null) {
        output.writeMessage(2, getPreOptimizationGraph());
      }
      if (postOptimizationGraph_ != null) {
        output.writeMessage(3, getPostOptimizationGraph());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < partitionGraphs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, partitionGraphs_.get(i));
      }
      if (preOptimizationGraph_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPreOptimizationGraph());
      }
      if (postOptimizationGraph_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getPostOptimizationGraph());
      }
      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.RunMetadata.FunctionGraphs)) {
        return super.equals(obj);
      }
      org.tensorflow.proto.framework.RunMetadata.FunctionGraphs other = (org.tensorflow.proto.framework.RunMetadata.FunctionGraphs) obj;

      if (!getPartitionGraphsList()
          .equals(other.getPartitionGraphsList())) return false;
      if (hasPreOptimizationGraph() != other.hasPreOptimizationGraph()) return false;
      if (hasPreOptimizationGraph()) {
        if (!getPreOptimizationGraph()
            .equals(other.getPreOptimizationGraph())) return false;
      }
      if (hasPostOptimizationGraph() != other.hasPostOptimizationGraph()) return false;
      if (hasPostOptimizationGraph()) {
        if (!getPostOptimizationGraph()
            .equals(other.getPostOptimizationGraph())) 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 (getPartitionGraphsCount() > 0) {
        hash = (37 * hash) + PARTITION_GRAPHS_FIELD_NUMBER;
        hash = (53 * hash) + getPartitionGraphsList().hashCode();
      }
      if (hasPreOptimizationGraph()) {
        hash = (37 * hash) + PRE_OPTIMIZATION_GRAPH_FIELD_NUMBER;
        hash = (53 * hash) + getPreOptimizationGraph().hashCode();
      }
      if (hasPostOptimizationGraph()) {
        hash = (37 * hash) + POST_OPTIMIZATION_GRAPH_FIELD_NUMBER;
        hash = (53 * hash) + getPostOptimizationGraph().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tensorflow.proto.framework.RunMetadata.FunctionGraphs parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.RunMetadata.FunctionGraphs 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.RunMetadata.FunctionGraphs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.RunMetadata.FunctionGraphs 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.RunMetadata.FunctionGraphs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.RunMetadata.FunctionGraphs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.RunMetadata.FunctionGraphs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.RunMetadata.FunctionGraphs 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.RunMetadata.FunctionGraphs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.RunMetadata.FunctionGraphs 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.RunMetadata.FunctionGraphs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.RunMetadata.FunctionGraphs 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.RunMetadata.FunctionGraphs 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.RunMetadata.FunctionGraphs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tensorflow.RunMetadata.FunctionGraphs)
        org.tensorflow.proto.framework.RunMetadata.FunctionGraphsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.ConfigProtos.internal_static_tensorflow_RunMetadata_FunctionGraphs_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.ConfigProtos.internal_static_tensorflow_RunMetadata_FunctionGraphs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.class, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPartitionGraphsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (partitionGraphsBuilder_ == null) {
          partitionGraphs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          partitionGraphsBuilder_.clear();
        }
        if (preOptimizationGraphBuilder_ == null) {
          preOptimizationGraph_ = null;
        } else {
          preOptimizationGraph_ = null;
          preOptimizationGraphBuilder_ = null;
        }
        if (postOptimizationGraphBuilder_ == null) {
          postOptimizationGraph_ = null;
        } else {
          postOptimizationGraph_ = null;
          postOptimizationGraphBuilder_ = null;
        }
        return this;
      }

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

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

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

      @java.lang.Override
      public org.tensorflow.proto.framework.RunMetadata.FunctionGraphs buildPartial() {
        org.tensorflow.proto.framework.RunMetadata.FunctionGraphs result = new org.tensorflow.proto.framework.RunMetadata.FunctionGraphs(this);
        int from_bitField0_ = bitField0_;
        if (partitionGraphsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            partitionGraphs_ = java.util.Collections.unmodifiableList(partitionGraphs_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.partitionGraphs_ = partitionGraphs_;
        } else {
          result.partitionGraphs_ = partitionGraphsBuilder_.build();
        }
        if (preOptimizationGraphBuilder_ == null) {
          result.preOptimizationGraph_ = preOptimizationGraph_;
        } else {
          result.preOptimizationGraph_ = preOptimizationGraphBuilder_.build();
        }
        if (postOptimizationGraphBuilder_ == null) {
          result.postOptimizationGraph_ = postOptimizationGraph_;
        } else {
          result.postOptimizationGraph_ = postOptimizationGraphBuilder_.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.RunMetadata.FunctionGraphs) {
          return mergeFrom((org.tensorflow.proto.framework.RunMetadata.FunctionGraphs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tensorflow.proto.framework.RunMetadata.FunctionGraphs other) {
        if (other == org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.getDefaultInstance()) return this;
        if (partitionGraphsBuilder_ == null) {
          if (!other.partitionGraphs_.isEmpty()) {
            if (partitionGraphs_.isEmpty()) {
              partitionGraphs_ = other.partitionGraphs_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePartitionGraphsIsMutable();
              partitionGraphs_.addAll(other.partitionGraphs_);
            }
            onChanged();
          }
        } else {
          if (!other.partitionGraphs_.isEmpty()) {
            if (partitionGraphsBuilder_.isEmpty()) {
              partitionGraphsBuilder_.dispose();
              partitionGraphsBuilder_ = null;
              partitionGraphs_ = other.partitionGraphs_;
              bitField0_ = (bitField0_ & ~0x00000001);
              partitionGraphsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPartitionGraphsFieldBuilder() : null;
            } else {
              partitionGraphsBuilder_.addAllMessages(other.partitionGraphs_);
            }
          }
        }
        if (other.hasPreOptimizationGraph()) {
          mergePreOptimizationGraph(other.getPreOptimizationGraph());
        }
        if (other.hasPostOptimizationGraph()) {
          mergePostOptimizationGraph(other.getPostOptimizationGraph());
        }
        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.RunMetadata.FunctionGraphs parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.tensorflow.proto.framework.RunMetadata.FunctionGraphs) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> partitionGraphsBuilder_;

      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public java.util.List<org.tensorflow.proto.framework.GraphDef> getPartitionGraphsList() {
        if (partitionGraphsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(partitionGraphs_);
        } else {
          return partitionGraphsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public int getPartitionGraphsCount() {
        if (partitionGraphsBuilder_ == null) {
          return partitionGraphs_.size();
        } else {
          return partitionGraphsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public org.tensorflow.proto.framework.GraphDef getPartitionGraphs(int index) {
        if (partitionGraphsBuilder_ == null) {
          return partitionGraphs_.get(index);
        } else {
          return partitionGraphsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder setPartitionGraphs(
          int index, org.tensorflow.proto.framework.GraphDef value) {
        if (partitionGraphsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionGraphsIsMutable();
          partitionGraphs_.set(index, value);
          onChanged();
        } else {
          partitionGraphsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder setPartitionGraphs(
          int index, org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
        if (partitionGraphsBuilder_ == null) {
          ensurePartitionGraphsIsMutable();
          partitionGraphs_.set(index, builderForValue.build());
          onChanged();
        } else {
          partitionGraphsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder addPartitionGraphs(org.tensorflow.proto.framework.GraphDef value) {
        if (partitionGraphsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionGraphsIsMutable();
          partitionGraphs_.add(value);
          onChanged();
        } else {
          partitionGraphsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder addPartitionGraphs(
          int index, org.tensorflow.proto.framework.GraphDef value) {
        if (partitionGraphsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionGraphsIsMutable();
          partitionGraphs_.add(index, value);
          onChanged();
        } else {
          partitionGraphsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder addPartitionGraphs(
          org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
        if (partitionGraphsBuilder_ == null) {
          ensurePartitionGraphsIsMutable();
          partitionGraphs_.add(builderForValue.build());
          onChanged();
        } else {
          partitionGraphsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder addPartitionGraphs(
          int index, org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
        if (partitionGraphsBuilder_ == null) {
          ensurePartitionGraphsIsMutable();
          partitionGraphs_.add(index, builderForValue.build());
          onChanged();
        } else {
          partitionGraphsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder addAllPartitionGraphs(
          java.lang.Iterable<? extends org.tensorflow.proto.framework.GraphDef> values) {
        if (partitionGraphsBuilder_ == null) {
          ensurePartitionGraphsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, partitionGraphs_);
          onChanged();
        } else {
          partitionGraphsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder clearPartitionGraphs() {
        if (partitionGraphsBuilder_ == null) {
          partitionGraphs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          partitionGraphsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public Builder removePartitionGraphs(int index) {
        if (partitionGraphsBuilder_ == null) {
          ensurePartitionGraphsIsMutable();
          partitionGraphs_.remove(index);
          onChanged();
        } else {
          partitionGraphsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public org.tensorflow.proto.framework.GraphDef.Builder getPartitionGraphsBuilder(
          int index) {
        return getPartitionGraphsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public org.tensorflow.proto.framework.GraphDefOrBuilder getPartitionGraphsOrBuilder(
          int index) {
        if (partitionGraphsBuilder_ == null) {
          return partitionGraphs_.get(index);  } else {
          return partitionGraphsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public java.util.List<? extends org.tensorflow.proto.framework.GraphDefOrBuilder> 
           getPartitionGraphsOrBuilderList() {
        if (partitionGraphsBuilder_ != null) {
          return partitionGraphsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(partitionGraphs_);
        }
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public org.tensorflow.proto.framework.GraphDef.Builder addPartitionGraphsBuilder() {
        return getPartitionGraphsFieldBuilder().addBuilder(
            org.tensorflow.proto.framework.GraphDef.getDefaultInstance());
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public org.tensorflow.proto.framework.GraphDef.Builder addPartitionGraphsBuilder(
          int index) {
        return getPartitionGraphsFieldBuilder().addBuilder(
            index, org.tensorflow.proto.framework.GraphDef.getDefaultInstance());
      }
      /**
       * <pre>
       * TODO(nareshmodi): Include some sort of function/cache-key identifier?
       * </pre>
       *
       * <code>repeated .tensorflow.GraphDef partition_graphs = 1;</code>
       */
      public java.util.List<org.tensorflow.proto.framework.GraphDef.Builder> 
           getPartitionGraphsBuilderList() {
        return getPartitionGraphsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> 
          getPartitionGraphsFieldBuilder() {
        if (partitionGraphsBuilder_ == null) {
          partitionGraphsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder>(
                  partitionGraphs_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          partitionGraphs_ = null;
        }
        return partitionGraphsBuilder_;
      }

      private org.tensorflow.proto.framework.GraphDef preOptimizationGraph_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> preOptimizationGraphBuilder_;
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      public boolean hasPreOptimizationGraph() {
        return preOptimizationGraphBuilder_ != null || preOptimizationGraph_ != null;
      }
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      public org.tensorflow.proto.framework.GraphDef getPreOptimizationGraph() {
        if (preOptimizationGraphBuilder_ == null) {
          return preOptimizationGraph_ == null ? org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : preOptimizationGraph_;
        } else {
          return preOptimizationGraphBuilder_.getMessage();
        }
      }
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      public Builder setPreOptimizationGraph(org.tensorflow.proto.framework.GraphDef value) {
        if (preOptimizationGraphBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          preOptimizationGraph_ = value;
          onChanged();
        } else {
          preOptimizationGraphBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      public Builder setPreOptimizationGraph(
          org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
        if (preOptimizationGraphBuilder_ == null) {
          preOptimizationGraph_ = builderForValue.build();
          onChanged();
        } else {
          preOptimizationGraphBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      public Builder mergePreOptimizationGraph(org.tensorflow.proto.framework.GraphDef value) {
        if (preOptimizationGraphBuilder_ == null) {
          if (preOptimizationGraph_ != null) {
            preOptimizationGraph_ =
              org.tensorflow.proto.framework.GraphDef.newBuilder(preOptimizationGraph_).mergeFrom(value).buildPartial();
          } else {
            preOptimizationGraph_ = value;
          }
          onChanged();
        } else {
          preOptimizationGraphBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      public Builder clearPreOptimizationGraph() {
        if (preOptimizationGraphBuilder_ == null) {
          preOptimizationGraph_ = null;
          onChanged();
        } else {
          preOptimizationGraph_ = null;
          preOptimizationGraphBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      public org.tensorflow.proto.framework.GraphDef.Builder getPreOptimizationGraphBuilder() {
        
        onChanged();
        return getPreOptimizationGraphFieldBuilder().getBuilder();
      }
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      public org.tensorflow.proto.framework.GraphDefOrBuilder getPreOptimizationGraphOrBuilder() {
        if (preOptimizationGraphBuilder_ != null) {
          return preOptimizationGraphBuilder_.getMessageOrBuilder();
        } else {
          return preOptimizationGraph_ == null ?
              org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : preOptimizationGraph_;
        }
      }
      /**
       * <code>.tensorflow.GraphDef pre_optimization_graph = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> 
          getPreOptimizationGraphFieldBuilder() {
        if (preOptimizationGraphBuilder_ == null) {
          preOptimizationGraphBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder>(
                  getPreOptimizationGraph(),
                  getParentForChildren(),
                  isClean());
          preOptimizationGraph_ = null;
        }
        return preOptimizationGraphBuilder_;
      }

      private org.tensorflow.proto.framework.GraphDef postOptimizationGraph_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> postOptimizationGraphBuilder_;
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      public boolean hasPostOptimizationGraph() {
        return postOptimizationGraphBuilder_ != null || postOptimizationGraph_ != null;
      }
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      public org.tensorflow.proto.framework.GraphDef getPostOptimizationGraph() {
        if (postOptimizationGraphBuilder_ == null) {
          return postOptimizationGraph_ == null ? org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : postOptimizationGraph_;
        } else {
          return postOptimizationGraphBuilder_.getMessage();
        }
      }
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      public Builder setPostOptimizationGraph(org.tensorflow.proto.framework.GraphDef value) {
        if (postOptimizationGraphBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          postOptimizationGraph_ = value;
          onChanged();
        } else {
          postOptimizationGraphBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      public Builder setPostOptimizationGraph(
          org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
        if (postOptimizationGraphBuilder_ == null) {
          postOptimizationGraph_ = builderForValue.build();
          onChanged();
        } else {
          postOptimizationGraphBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      public Builder mergePostOptimizationGraph(org.tensorflow.proto.framework.GraphDef value) {
        if (postOptimizationGraphBuilder_ == null) {
          if (postOptimizationGraph_ != null) {
            postOptimizationGraph_ =
              org.tensorflow.proto.framework.GraphDef.newBuilder(postOptimizationGraph_).mergeFrom(value).buildPartial();
          } else {
            postOptimizationGraph_ = value;
          }
          onChanged();
        } else {
          postOptimizationGraphBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      public Builder clearPostOptimizationGraph() {
        if (postOptimizationGraphBuilder_ == null) {
          postOptimizationGraph_ = null;
          onChanged();
        } else {
          postOptimizationGraph_ = null;
          postOptimizationGraphBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      public org.tensorflow.proto.framework.GraphDef.Builder getPostOptimizationGraphBuilder() {
        
        onChanged();
        return getPostOptimizationGraphFieldBuilder().getBuilder();
      }
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      public org.tensorflow.proto.framework.GraphDefOrBuilder getPostOptimizationGraphOrBuilder() {
        if (postOptimizationGraphBuilder_ != null) {
          return postOptimizationGraphBuilder_.getMessageOrBuilder();
        } else {
          return postOptimizationGraph_ == null ?
              org.tensorflow.proto.framework.GraphDef.getDefaultInstance() : postOptimizationGraph_;
        }
      }
      /**
       * <code>.tensorflow.GraphDef post_optimization_graph = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> 
          getPostOptimizationGraphFieldBuilder() {
        if (postOptimizationGraphBuilder_ == null) {
          postOptimizationGraphBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder>(
                  getPostOptimizationGraph(),
                  getParentForChildren(),
                  isClean());
          postOptimizationGraph_ = null;
        }
        return postOptimizationGraphBuilder_;
      }
      @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.RunMetadata.FunctionGraphs)
    }

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

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

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

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

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

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

  }

  public static final int STEP_STATS_FIELD_NUMBER = 1;
  private org.tensorflow.proto.framework.StepStats stepStats_;
  /**
   * <pre>
   * Statistics traced for this step. Populated if tracing is turned on via the
   * "RunOptions" proto.
   * EXPERIMENTAL: The format and set of events may change in future versions.
   * </pre>
   *
   * <code>.tensorflow.StepStats step_stats = 1;</code>
   */
  public boolean hasStepStats() {
    return stepStats_ != null;
  }
  /**
   * <pre>
   * Statistics traced for this step. Populated if tracing is turned on via the
   * "RunOptions" proto.
   * EXPERIMENTAL: The format and set of events may change in future versions.
   * </pre>
   *
   * <code>.tensorflow.StepStats step_stats = 1;</code>
   */
  public org.tensorflow.proto.framework.StepStats getStepStats() {
    return stepStats_ == null ? org.tensorflow.proto.framework.StepStats.getDefaultInstance() : stepStats_;
  }
  /**
   * <pre>
   * Statistics traced for this step. Populated if tracing is turned on via the
   * "RunOptions" proto.
   * EXPERIMENTAL: The format and set of events may change in future versions.
   * </pre>
   *
   * <code>.tensorflow.StepStats step_stats = 1;</code>
   */
  public org.tensorflow.proto.framework.StepStatsOrBuilder getStepStatsOrBuilder() {
    return getStepStats();
  }

  public static final int COST_GRAPH_FIELD_NUMBER = 2;
  private org.tensorflow.proto.framework.CostGraphDef costGraph_;
  /**
   * <pre>
   * The cost graph for the computation defined by the run call.
   * </pre>
   *
   * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
   */
  public boolean hasCostGraph() {
    return costGraph_ != null;
  }
  /**
   * <pre>
   * The cost graph for the computation defined by the run call.
   * </pre>
   *
   * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
   */
  public org.tensorflow.proto.framework.CostGraphDef getCostGraph() {
    return costGraph_ == null ? org.tensorflow.proto.framework.CostGraphDef.getDefaultInstance() : costGraph_;
  }
  /**
   * <pre>
   * The cost graph for the computation defined by the run call.
   * </pre>
   *
   * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
   */
  public org.tensorflow.proto.framework.CostGraphDefOrBuilder getCostGraphOrBuilder() {
    return getCostGraph();
  }

  public static final int PARTITION_GRAPHS_FIELD_NUMBER = 3;
  private java.util.List<org.tensorflow.proto.framework.GraphDef> partitionGraphs_;
  /**
   * <pre>
   * Graphs of the partitions executed by executors.
   * </pre>
   *
   * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
   */
  public java.util.List<org.tensorflow.proto.framework.GraphDef> getPartitionGraphsList() {
    return partitionGraphs_;
  }
  /**
   * <pre>
   * Graphs of the partitions executed by executors.
   * </pre>
   *
   * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
   */
  public java.util.List<? extends org.tensorflow.proto.framework.GraphDefOrBuilder> 
      getPartitionGraphsOrBuilderList() {
    return partitionGraphs_;
  }
  /**
   * <pre>
   * Graphs of the partitions executed by executors.
   * </pre>
   *
   * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
   */
  public int getPartitionGraphsCount() {
    return partitionGraphs_.size();
  }
  /**
   * <pre>
   * Graphs of the partitions executed by executors.
   * </pre>
   *
   * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
   */
  public org.tensorflow.proto.framework.GraphDef getPartitionGraphs(int index) {
    return partitionGraphs_.get(index);
  }
  /**
   * <pre>
   * Graphs of the partitions executed by executors.
   * </pre>
   *
   * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
   */
  public org.tensorflow.proto.framework.GraphDefOrBuilder getPartitionGraphsOrBuilder(
      int index) {
    return partitionGraphs_.get(index);
  }

  public static final int FUNCTION_GRAPHS_FIELD_NUMBER = 4;
  private java.util.List<org.tensorflow.proto.framework.RunMetadata.FunctionGraphs> functionGraphs_;
  /**
   * <pre>
   * This is only populated for graphs that are run as functions in TensorFlow
   * V2. There will be an entry below for each function that is traced.
   * The main use cases of the post_optimization_graph and the partition_graphs
   * is to give the caller insight into the graphs that were actually run by the
   * runtime. Additional information (such as those in step_stats) will match
   * these graphs.
   * We also include the pre_optimization_graph since it is usually easier to
   * read, and is helpful in situations where the caller wants to get a high
   * level idea of what the built graph looks like (since the various graph
   * optimization passes might change the structure of the graph significantly).
   * </pre>
   *
   * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
   */
  public java.util.List<org.tensorflow.proto.framework.RunMetadata.FunctionGraphs> getFunctionGraphsList() {
    return functionGraphs_;
  }
  /**
   * <pre>
   * This is only populated for graphs that are run as functions in TensorFlow
   * V2. There will be an entry below for each function that is traced.
   * The main use cases of the post_optimization_graph and the partition_graphs
   * is to give the caller insight into the graphs that were actually run by the
   * runtime. Additional information (such as those in step_stats) will match
   * these graphs.
   * We also include the pre_optimization_graph since it is usually easier to
   * read, and is helpful in situations where the caller wants to get a high
   * level idea of what the built graph looks like (since the various graph
   * optimization passes might change the structure of the graph significantly).
   * </pre>
   *
   * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
   */
  public java.util.List<? extends org.tensorflow.proto.framework.RunMetadata.FunctionGraphsOrBuilder> 
      getFunctionGraphsOrBuilderList() {
    return functionGraphs_;
  }
  /**
   * <pre>
   * This is only populated for graphs that are run as functions in TensorFlow
   * V2. There will be an entry below for each function that is traced.
   * The main use cases of the post_optimization_graph and the partition_graphs
   * is to give the caller insight into the graphs that were actually run by the
   * runtime. Additional information (such as those in step_stats) will match
   * these graphs.
   * We also include the pre_optimization_graph since it is usually easier to
   * read, and is helpful in situations where the caller wants to get a high
   * level idea of what the built graph looks like (since the various graph
   * optimization passes might change the structure of the graph significantly).
   * </pre>
   *
   * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
   */
  public int getFunctionGraphsCount() {
    return functionGraphs_.size();
  }
  /**
   * <pre>
   * This is only populated for graphs that are run as functions in TensorFlow
   * V2. There will be an entry below for each function that is traced.
   * The main use cases of the post_optimization_graph and the partition_graphs
   * is to give the caller insight into the graphs that were actually run by the
   * runtime. Additional information (such as those in step_stats) will match
   * these graphs.
   * We also include the pre_optimization_graph since it is usually easier to
   * read, and is helpful in situations where the caller wants to get a high
   * level idea of what the built graph looks like (since the various graph
   * optimization passes might change the structure of the graph significantly).
   * </pre>
   *
   * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
   */
  public org.tensorflow.proto.framework.RunMetadata.FunctionGraphs getFunctionGraphs(int index) {
    return functionGraphs_.get(index);
  }
  /**
   * <pre>
   * This is only populated for graphs that are run as functions in TensorFlow
   * V2. There will be an entry below for each function that is traced.
   * The main use cases of the post_optimization_graph and the partition_graphs
   * is to give the caller insight into the graphs that were actually run by the
   * runtime. Additional information (such as those in step_stats) will match
   * these graphs.
   * We also include the pre_optimization_graph since it is usually easier to
   * read, and is helpful in situations where the caller wants to get a high
   * level idea of what the built graph looks like (since the various graph
   * optimization passes might change the structure of the graph significantly).
   * </pre>
   *
   * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
   */
  public org.tensorflow.proto.framework.RunMetadata.FunctionGraphsOrBuilder getFunctionGraphsOrBuilder(
      int index) {
    return functionGraphs_.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 {
    if (stepStats_ != null) {
      output.writeMessage(1, getStepStats());
    }
    if (costGraph_ != null) {
      output.writeMessage(2, getCostGraph());
    }
    for (int i = 0; i < partitionGraphs_.size(); i++) {
      output.writeMessage(3, partitionGraphs_.get(i));
    }
    for (int i = 0; i < functionGraphs_.size(); i++) {
      output.writeMessage(4, functionGraphs_.get(i));
    }
    unknownFields.writeTo(output);
  }

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

    size = 0;
    if (stepStats_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1, getStepStats());
    }
    if (costGraph_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(2, getCostGraph());
    }
    for (int i = 0; i < partitionGraphs_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(3, partitionGraphs_.get(i));
    }
    for (int i = 0; i < functionGraphs_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, functionGraphs_.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.RunMetadata)) {
      return super.equals(obj);
    }
    org.tensorflow.proto.framework.RunMetadata other = (org.tensorflow.proto.framework.RunMetadata) obj;

    if (hasStepStats() != other.hasStepStats()) return false;
    if (hasStepStats()) {
      if (!getStepStats()
          .equals(other.getStepStats())) return false;
    }
    if (hasCostGraph() != other.hasCostGraph()) return false;
    if (hasCostGraph()) {
      if (!getCostGraph()
          .equals(other.getCostGraph())) return false;
    }
    if (!getPartitionGraphsList()
        .equals(other.getPartitionGraphsList())) return false;
    if (!getFunctionGraphsList()
        .equals(other.getFunctionGraphsList())) 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 (hasStepStats()) {
      hash = (37 * hash) + STEP_STATS_FIELD_NUMBER;
      hash = (53 * hash) + getStepStats().hashCode();
    }
    if (hasCostGraph()) {
      hash = (37 * hash) + COST_GRAPH_FIELD_NUMBER;
      hash = (53 * hash) + getCostGraph().hashCode();
    }
    if (getPartitionGraphsCount() > 0) {
      hash = (37 * hash) + PARTITION_GRAPHS_FIELD_NUMBER;
      hash = (53 * hash) + getPartitionGraphsList().hashCode();
    }
    if (getFunctionGraphsCount() > 0) {
      hash = (37 * hash) + FUNCTION_GRAPHS_FIELD_NUMBER;
      hash = (53 * hash) + getFunctionGraphsList().hashCode();
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static org.tensorflow.proto.framework.RunMetadata parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.RunMetadata 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.RunMetadata parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.RunMetadata 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.RunMetadata parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.RunMetadata parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.RunMetadata parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.RunMetadata 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.RunMetadata parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.RunMetadata 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.RunMetadata parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.RunMetadata 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.RunMetadata prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * <pre>
   * Metadata output (i.e., non-Tensor) for a single Run() call.
   * </pre>
   *
   * Protobuf type {@code tensorflow.RunMetadata}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:tensorflow.RunMetadata)
      org.tensorflow.proto.framework.RunMetadataOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.ConfigProtos.internal_static_tensorflow_RunMetadata_descriptor;
    }

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

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

    private Builder(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getPartitionGraphsFieldBuilder();
        getFunctionGraphsFieldBuilder();
      }
    }
    @java.lang.Override
    public Builder clear() {
      super.clear();
      if (stepStatsBuilder_ == null) {
        stepStats_ = null;
      } else {
        stepStats_ = null;
        stepStatsBuilder_ = null;
      }
      if (costGraphBuilder_ == null) {
        costGraph_ = null;
      } else {
        costGraph_ = null;
        costGraphBuilder_ = null;
      }
      if (partitionGraphsBuilder_ == null) {
        partitionGraphs_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
      } else {
        partitionGraphsBuilder_.clear();
      }
      if (functionGraphsBuilder_ == null) {
        functionGraphs_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
      } else {
        functionGraphsBuilder_.clear();
      }
      return this;
    }

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

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

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

    @java.lang.Override
    public org.tensorflow.proto.framework.RunMetadata buildPartial() {
      org.tensorflow.proto.framework.RunMetadata result = new org.tensorflow.proto.framework.RunMetadata(this);
      int from_bitField0_ = bitField0_;
      if (stepStatsBuilder_ == null) {
        result.stepStats_ = stepStats_;
      } else {
        result.stepStats_ = stepStatsBuilder_.build();
      }
      if (costGraphBuilder_ == null) {
        result.costGraph_ = costGraph_;
      } else {
        result.costGraph_ = costGraphBuilder_.build();
      }
      if (partitionGraphsBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0)) {
          partitionGraphs_ = java.util.Collections.unmodifiableList(partitionGraphs_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.partitionGraphs_ = partitionGraphs_;
      } else {
        result.partitionGraphs_ = partitionGraphsBuilder_.build();
      }
      if (functionGraphsBuilder_ == null) {
        if (((bitField0_ & 0x00000002) != 0)) {
          functionGraphs_ = java.util.Collections.unmodifiableList(functionGraphs_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.functionGraphs_ = functionGraphs_;
      } else {
        result.functionGraphs_ = functionGraphsBuilder_.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.RunMetadata) {
        return mergeFrom((org.tensorflow.proto.framework.RunMetadata)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(org.tensorflow.proto.framework.RunMetadata other) {
      if (other == org.tensorflow.proto.framework.RunMetadata.getDefaultInstance()) return this;
      if (other.hasStepStats()) {
        mergeStepStats(other.getStepStats());
      }
      if (other.hasCostGraph()) {
        mergeCostGraph(other.getCostGraph());
      }
      if (partitionGraphsBuilder_ == null) {
        if (!other.partitionGraphs_.isEmpty()) {
          if (partitionGraphs_.isEmpty()) {
            partitionGraphs_ = other.partitionGraphs_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensurePartitionGraphsIsMutable();
            partitionGraphs_.addAll(other.partitionGraphs_);
          }
          onChanged();
        }
      } else {
        if (!other.partitionGraphs_.isEmpty()) {
          if (partitionGraphsBuilder_.isEmpty()) {
            partitionGraphsBuilder_.dispose();
            partitionGraphsBuilder_ = null;
            partitionGraphs_ = other.partitionGraphs_;
            bitField0_ = (bitField0_ & ~0x00000001);
            partitionGraphsBuilder_ = 
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getPartitionGraphsFieldBuilder() : null;
          } else {
            partitionGraphsBuilder_.addAllMessages(other.partitionGraphs_);
          }
        }
      }
      if (functionGraphsBuilder_ == null) {
        if (!other.functionGraphs_.isEmpty()) {
          if (functionGraphs_.isEmpty()) {
            functionGraphs_ = other.functionGraphs_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureFunctionGraphsIsMutable();
            functionGraphs_.addAll(other.functionGraphs_);
          }
          onChanged();
        }
      } else {
        if (!other.functionGraphs_.isEmpty()) {
          if (functionGraphsBuilder_.isEmpty()) {
            functionGraphsBuilder_.dispose();
            functionGraphsBuilder_ = null;
            functionGraphs_ = other.functionGraphs_;
            bitField0_ = (bitField0_ & ~0x00000002);
            functionGraphsBuilder_ = 
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getFunctionGraphsFieldBuilder() : null;
          } else {
            functionGraphsBuilder_.addAllMessages(other.functionGraphs_);
          }
        }
      }
      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.RunMetadata parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (org.tensorflow.proto.framework.RunMetadata) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int bitField0_;

    private org.tensorflow.proto.framework.StepStats stepStats_;
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.StepStats, org.tensorflow.proto.framework.StepStats.Builder, org.tensorflow.proto.framework.StepStatsOrBuilder> stepStatsBuilder_;
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    public boolean hasStepStats() {
      return stepStatsBuilder_ != null || stepStats_ != null;
    }
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    public org.tensorflow.proto.framework.StepStats getStepStats() {
      if (stepStatsBuilder_ == null) {
        return stepStats_ == null ? org.tensorflow.proto.framework.StepStats.getDefaultInstance() : stepStats_;
      } else {
        return stepStatsBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    public Builder setStepStats(org.tensorflow.proto.framework.StepStats value) {
      if (stepStatsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        stepStats_ = value;
        onChanged();
      } else {
        stepStatsBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    public Builder setStepStats(
        org.tensorflow.proto.framework.StepStats.Builder builderForValue) {
      if (stepStatsBuilder_ == null) {
        stepStats_ = builderForValue.build();
        onChanged();
      } else {
        stepStatsBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    public Builder mergeStepStats(org.tensorflow.proto.framework.StepStats value) {
      if (stepStatsBuilder_ == null) {
        if (stepStats_ != null) {
          stepStats_ =
            org.tensorflow.proto.framework.StepStats.newBuilder(stepStats_).mergeFrom(value).buildPartial();
        } else {
          stepStats_ = value;
        }
        onChanged();
      } else {
        stepStatsBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    public Builder clearStepStats() {
      if (stepStatsBuilder_ == null) {
        stepStats_ = null;
        onChanged();
      } else {
        stepStats_ = null;
        stepStatsBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    public org.tensorflow.proto.framework.StepStats.Builder getStepStatsBuilder() {
      
      onChanged();
      return getStepStatsFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    public org.tensorflow.proto.framework.StepStatsOrBuilder getStepStatsOrBuilder() {
      if (stepStatsBuilder_ != null) {
        return stepStatsBuilder_.getMessageOrBuilder();
      } else {
        return stepStats_ == null ?
            org.tensorflow.proto.framework.StepStats.getDefaultInstance() : stepStats_;
      }
    }
    /**
     * <pre>
     * Statistics traced for this step. Populated if tracing is turned on via the
     * "RunOptions" proto.
     * EXPERIMENTAL: The format and set of events may change in future versions.
     * </pre>
     *
     * <code>.tensorflow.StepStats step_stats = 1;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.StepStats, org.tensorflow.proto.framework.StepStats.Builder, org.tensorflow.proto.framework.StepStatsOrBuilder> 
        getStepStatsFieldBuilder() {
      if (stepStatsBuilder_ == null) {
        stepStatsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            org.tensorflow.proto.framework.StepStats, org.tensorflow.proto.framework.StepStats.Builder, org.tensorflow.proto.framework.StepStatsOrBuilder>(
                getStepStats(),
                getParentForChildren(),
                isClean());
        stepStats_ = null;
      }
      return stepStatsBuilder_;
    }

    private org.tensorflow.proto.framework.CostGraphDef costGraph_;
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.CostGraphDef, org.tensorflow.proto.framework.CostGraphDef.Builder, org.tensorflow.proto.framework.CostGraphDefOrBuilder> costGraphBuilder_;
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    public boolean hasCostGraph() {
      return costGraphBuilder_ != null || costGraph_ != null;
    }
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    public org.tensorflow.proto.framework.CostGraphDef getCostGraph() {
      if (costGraphBuilder_ == null) {
        return costGraph_ == null ? org.tensorflow.proto.framework.CostGraphDef.getDefaultInstance() : costGraph_;
      } else {
        return costGraphBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    public Builder setCostGraph(org.tensorflow.proto.framework.CostGraphDef value) {
      if (costGraphBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        costGraph_ = value;
        onChanged();
      } else {
        costGraphBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    public Builder setCostGraph(
        org.tensorflow.proto.framework.CostGraphDef.Builder builderForValue) {
      if (costGraphBuilder_ == null) {
        costGraph_ = builderForValue.build();
        onChanged();
      } else {
        costGraphBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    public Builder mergeCostGraph(org.tensorflow.proto.framework.CostGraphDef value) {
      if (costGraphBuilder_ == null) {
        if (costGraph_ != null) {
          costGraph_ =
            org.tensorflow.proto.framework.CostGraphDef.newBuilder(costGraph_).mergeFrom(value).buildPartial();
        } else {
          costGraph_ = value;
        }
        onChanged();
      } else {
        costGraphBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    public Builder clearCostGraph() {
      if (costGraphBuilder_ == null) {
        costGraph_ = null;
        onChanged();
      } else {
        costGraph_ = null;
        costGraphBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    public org.tensorflow.proto.framework.CostGraphDef.Builder getCostGraphBuilder() {
      
      onChanged();
      return getCostGraphFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    public org.tensorflow.proto.framework.CostGraphDefOrBuilder getCostGraphOrBuilder() {
      if (costGraphBuilder_ != null) {
        return costGraphBuilder_.getMessageOrBuilder();
      } else {
        return costGraph_ == null ?
            org.tensorflow.proto.framework.CostGraphDef.getDefaultInstance() : costGraph_;
      }
    }
    /**
     * <pre>
     * The cost graph for the computation defined by the run call.
     * </pre>
     *
     * <code>.tensorflow.CostGraphDef cost_graph = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        org.tensorflow.proto.framework.CostGraphDef, org.tensorflow.proto.framework.CostGraphDef.Builder, org.tensorflow.proto.framework.CostGraphDefOrBuilder> 
        getCostGraphFieldBuilder() {
      if (costGraphBuilder_ == null) {
        costGraphBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            org.tensorflow.proto.framework.CostGraphDef, org.tensorflow.proto.framework.CostGraphDef.Builder, org.tensorflow.proto.framework.CostGraphDefOrBuilder>(
                getCostGraph(),
                getParentForChildren(),
                isClean());
        costGraph_ = null;
      }
      return costGraphBuilder_;
    }

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

    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> partitionGraphsBuilder_;

    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.GraphDef> getPartitionGraphsList() {
      if (partitionGraphsBuilder_ == null) {
        return java.util.Collections.unmodifiableList(partitionGraphs_);
      } else {
        return partitionGraphsBuilder_.getMessageList();
      }
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public int getPartitionGraphsCount() {
      if (partitionGraphsBuilder_ == null) {
        return partitionGraphs_.size();
      } else {
        return partitionGraphsBuilder_.getCount();
      }
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public org.tensorflow.proto.framework.GraphDef getPartitionGraphs(int index) {
      if (partitionGraphsBuilder_ == null) {
        return partitionGraphs_.get(index);
      } else {
        return partitionGraphsBuilder_.getMessage(index);
      }
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder setPartitionGraphs(
        int index, org.tensorflow.proto.framework.GraphDef value) {
      if (partitionGraphsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePartitionGraphsIsMutable();
        partitionGraphs_.set(index, value);
        onChanged();
      } else {
        partitionGraphsBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder setPartitionGraphs(
        int index, org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
      if (partitionGraphsBuilder_ == null) {
        ensurePartitionGraphsIsMutable();
        partitionGraphs_.set(index, builderForValue.build());
        onChanged();
      } else {
        partitionGraphsBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder addPartitionGraphs(org.tensorflow.proto.framework.GraphDef value) {
      if (partitionGraphsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePartitionGraphsIsMutable();
        partitionGraphs_.add(value);
        onChanged();
      } else {
        partitionGraphsBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder addPartitionGraphs(
        int index, org.tensorflow.proto.framework.GraphDef value) {
      if (partitionGraphsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePartitionGraphsIsMutable();
        partitionGraphs_.add(index, value);
        onChanged();
      } else {
        partitionGraphsBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder addPartitionGraphs(
        org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
      if (partitionGraphsBuilder_ == null) {
        ensurePartitionGraphsIsMutable();
        partitionGraphs_.add(builderForValue.build());
        onChanged();
      } else {
        partitionGraphsBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder addPartitionGraphs(
        int index, org.tensorflow.proto.framework.GraphDef.Builder builderForValue) {
      if (partitionGraphsBuilder_ == null) {
        ensurePartitionGraphsIsMutable();
        partitionGraphs_.add(index, builderForValue.build());
        onChanged();
      } else {
        partitionGraphsBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder addAllPartitionGraphs(
        java.lang.Iterable<? extends org.tensorflow.proto.framework.GraphDef> values) {
      if (partitionGraphsBuilder_ == null) {
        ensurePartitionGraphsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, partitionGraphs_);
        onChanged();
      } else {
        partitionGraphsBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder clearPartitionGraphs() {
      if (partitionGraphsBuilder_ == null) {
        partitionGraphs_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
      } else {
        partitionGraphsBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public Builder removePartitionGraphs(int index) {
      if (partitionGraphsBuilder_ == null) {
        ensurePartitionGraphsIsMutable();
        partitionGraphs_.remove(index);
        onChanged();
      } else {
        partitionGraphsBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public org.tensorflow.proto.framework.GraphDef.Builder getPartitionGraphsBuilder(
        int index) {
      return getPartitionGraphsFieldBuilder().getBuilder(index);
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public org.tensorflow.proto.framework.GraphDefOrBuilder getPartitionGraphsOrBuilder(
        int index) {
      if (partitionGraphsBuilder_ == null) {
        return partitionGraphs_.get(index);  } else {
        return partitionGraphsBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.GraphDefOrBuilder> 
         getPartitionGraphsOrBuilderList() {
      if (partitionGraphsBuilder_ != null) {
        return partitionGraphsBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(partitionGraphs_);
      }
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public org.tensorflow.proto.framework.GraphDef.Builder addPartitionGraphsBuilder() {
      return getPartitionGraphsFieldBuilder().addBuilder(
          org.tensorflow.proto.framework.GraphDef.getDefaultInstance());
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public org.tensorflow.proto.framework.GraphDef.Builder addPartitionGraphsBuilder(
        int index) {
      return getPartitionGraphsFieldBuilder().addBuilder(
          index, org.tensorflow.proto.framework.GraphDef.getDefaultInstance());
    }
    /**
     * <pre>
     * Graphs of the partitions executed by executors.
     * </pre>
     *
     * <code>repeated .tensorflow.GraphDef partition_graphs = 3;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.GraphDef.Builder> 
         getPartitionGraphsBuilderList() {
      return getPartitionGraphsFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder> 
        getPartitionGraphsFieldBuilder() {
      if (partitionGraphsBuilder_ == null) {
        partitionGraphsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            org.tensorflow.proto.framework.GraphDef, org.tensorflow.proto.framework.GraphDef.Builder, org.tensorflow.proto.framework.GraphDefOrBuilder>(
                partitionGraphs_,
                ((bitField0_ & 0x00000001) != 0),
                getParentForChildren(),
                isClean());
        partitionGraphs_ = null;
      }
      return partitionGraphsBuilder_;
    }

    private java.util.List<org.tensorflow.proto.framework.RunMetadata.FunctionGraphs> functionGraphs_ =
      java.util.Collections.emptyList();
    private void ensureFunctionGraphsIsMutable() {
      if (!((bitField0_ & 0x00000002) != 0)) {
        functionGraphs_ = new java.util.ArrayList<org.tensorflow.proto.framework.RunMetadata.FunctionGraphs>(functionGraphs_);
        bitField0_ |= 0x00000002;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.RunMetadata.FunctionGraphs, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder, org.tensorflow.proto.framework.RunMetadata.FunctionGraphsOrBuilder> functionGraphsBuilder_;

    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.RunMetadata.FunctionGraphs> getFunctionGraphsList() {
      if (functionGraphsBuilder_ == null) {
        return java.util.Collections.unmodifiableList(functionGraphs_);
      } else {
        return functionGraphsBuilder_.getMessageList();
      }
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public int getFunctionGraphsCount() {
      if (functionGraphsBuilder_ == null) {
        return functionGraphs_.size();
      } else {
        return functionGraphsBuilder_.getCount();
      }
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public org.tensorflow.proto.framework.RunMetadata.FunctionGraphs getFunctionGraphs(int index) {
      if (functionGraphsBuilder_ == null) {
        return functionGraphs_.get(index);
      } else {
        return functionGraphsBuilder_.getMessage(index);
      }
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder setFunctionGraphs(
        int index, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs value) {
      if (functionGraphsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionGraphsIsMutable();
        functionGraphs_.set(index, value);
        onChanged();
      } else {
        functionGraphsBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder setFunctionGraphs(
        int index, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder builderForValue) {
      if (functionGraphsBuilder_ == null) {
        ensureFunctionGraphsIsMutable();
        functionGraphs_.set(index, builderForValue.build());
        onChanged();
      } else {
        functionGraphsBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder addFunctionGraphs(org.tensorflow.proto.framework.RunMetadata.FunctionGraphs value) {
      if (functionGraphsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionGraphsIsMutable();
        functionGraphs_.add(value);
        onChanged();
      } else {
        functionGraphsBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder addFunctionGraphs(
        int index, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs value) {
      if (functionGraphsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFunctionGraphsIsMutable();
        functionGraphs_.add(index, value);
        onChanged();
      } else {
        functionGraphsBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder addFunctionGraphs(
        org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder builderForValue) {
      if (functionGraphsBuilder_ == null) {
        ensureFunctionGraphsIsMutable();
        functionGraphs_.add(builderForValue.build());
        onChanged();
      } else {
        functionGraphsBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder addFunctionGraphs(
        int index, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder builderForValue) {
      if (functionGraphsBuilder_ == null) {
        ensureFunctionGraphsIsMutable();
        functionGraphs_.add(index, builderForValue.build());
        onChanged();
      } else {
        functionGraphsBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder addAllFunctionGraphs(
        java.lang.Iterable<? extends org.tensorflow.proto.framework.RunMetadata.FunctionGraphs> values) {
      if (functionGraphsBuilder_ == null) {
        ensureFunctionGraphsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, functionGraphs_);
        onChanged();
      } else {
        functionGraphsBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder clearFunctionGraphs() {
      if (functionGraphsBuilder_ == null) {
        functionGraphs_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
      } else {
        functionGraphsBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public Builder removeFunctionGraphs(int index) {
      if (functionGraphsBuilder_ == null) {
        ensureFunctionGraphsIsMutable();
        functionGraphs_.remove(index);
        onChanged();
      } else {
        functionGraphsBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder getFunctionGraphsBuilder(
        int index) {
      return getFunctionGraphsFieldBuilder().getBuilder(index);
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public org.tensorflow.proto.framework.RunMetadata.FunctionGraphsOrBuilder getFunctionGraphsOrBuilder(
        int index) {
      if (functionGraphsBuilder_ == null) {
        return functionGraphs_.get(index);  } else {
        return functionGraphsBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.RunMetadata.FunctionGraphsOrBuilder> 
         getFunctionGraphsOrBuilderList() {
      if (functionGraphsBuilder_ != null) {
        return functionGraphsBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(functionGraphs_);
      }
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder addFunctionGraphsBuilder() {
      return getFunctionGraphsFieldBuilder().addBuilder(
          org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.getDefaultInstance());
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder addFunctionGraphsBuilder(
        int index) {
      return getFunctionGraphsFieldBuilder().addBuilder(
          index, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.getDefaultInstance());
    }
    /**
     * <pre>
     * This is only populated for graphs that are run as functions in TensorFlow
     * V2. There will be an entry below for each function that is traced.
     * The main use cases of the post_optimization_graph and the partition_graphs
     * is to give the caller insight into the graphs that were actually run by the
     * runtime. Additional information (such as those in step_stats) will match
     * these graphs.
     * We also include the pre_optimization_graph since it is usually easier to
     * read, and is helpful in situations where the caller wants to get a high
     * level idea of what the built graph looks like (since the various graph
     * optimization passes might change the structure of the graph significantly).
     * </pre>
     *
     * <code>repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder> 
         getFunctionGraphsBuilderList() {
      return getFunctionGraphsFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.RunMetadata.FunctionGraphs, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder, org.tensorflow.proto.framework.RunMetadata.FunctionGraphsOrBuilder> 
        getFunctionGraphsFieldBuilder() {
      if (functionGraphsBuilder_ == null) {
        functionGraphsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            org.tensorflow.proto.framework.RunMetadata.FunctionGraphs, org.tensorflow.proto.framework.RunMetadata.FunctionGraphs.Builder, org.tensorflow.proto.framework.RunMetadata.FunctionGraphsOrBuilder>(
                functionGraphs_,
                ((bitField0_ & 0x00000002) != 0),
                getParentForChildren(),
                isClean());
        functionGraphs_ = null;
      }
      return functionGraphsBuilder_;
    }
    @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.RunMetadata)
  }

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

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

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

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

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

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

}

