// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: tensorflow/core/framework/api_def.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Tensorflow {

  /// <summary>Holder for reflection information generated from tensorflow/core/framework/api_def.proto</summary>
  public static partial class ApiDefReflection {

    #region Descriptor
    /// <summary>File descriptor for tensorflow/core/framework/api_def.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static ApiDefReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cid0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL2FwaV9kZWYucHJvdG8SCnRl",
            "bnNvcmZsb3caKnRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsvYXR0cl92YWx1",
            "ZS5wcm90byLhBQoGQXBpRGVmEhUKDWdyYXBoX29wX25hbWUYASABKAkSGwoT",
            "ZGVwcmVjYXRpb25fbWVzc2FnZRgMIAEoCRIbChNkZXByZWNhdGlvbl92ZXJz",
            "aW9uGA0gASgFEjEKCnZpc2liaWxpdHkYAiABKA4yHS50ZW5zb3JmbG93LkFw",
            "aURlZi5WaXNpYmlsaXR5Ei0KCGVuZHBvaW50GAMgAygLMhsudGVuc29yZmxv",
            "dy5BcGlEZWYuRW5kcG9pbnQSJgoGaW5fYXJnGAQgAygLMhYudGVuc29yZmxv",
            "dy5BcGlEZWYuQXJnEicKB291dF9hcmcYBSADKAsyFi50ZW5zb3JmbG93LkFw",
            "aURlZi5BcmcSEQoJYXJnX29yZGVyGAsgAygJEiUKBGF0dHIYBiADKAsyFy50",
            "ZW5zb3JmbG93LkFwaURlZi5BdHRyEg8KB3N1bW1hcnkYByABKAkSEwoLZGVz",
            "Y3JpcHRpb24YCCABKAkSGgoSZGVzY3JpcHRpb25fcHJlZml4GAkgASgJEhoK",
            "EmRlc2NyaXB0aW9uX3N1ZmZpeBgKIAEoCRpJCghFbmRwb2ludBIMCgRuYW1l",
            "GAEgASgJEhIKCmRlcHJlY2F0ZWQYAyABKAgSGwoTZGVwcmVjYXRpb25fdmVy",
            "c2lvbhgEIAEoBRo7CgNBcmcSDAoEbmFtZRgBIAEoCRIRCglyZW5hbWVfdG8Y",
            "AiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkaagoEQXR0chIMCgRuYW1lGAEg",
            "ASgJEhEKCXJlbmFtZV90bxgCIAEoCRIsCg1kZWZhdWx0X3ZhbHVlGAMgASgL",
            "MhUudGVuc29yZmxvdy5BdHRyVmFsdWUSEwoLZGVzY3JpcHRpb24YBCABKAki",
            "RwoKVmlzaWJpbGl0eRIWChJERUZBVUxUX1ZJU0lCSUxJVFkQABILCgdWSVNJ",
            "QkxFEAESCAoEU0tJUBACEgoKBkhJRERFThADIikKB0FwaURlZnMSHgoCb3AY",
            "ASADKAsyEi50ZW5zb3JmbG93LkFwaURlZkJsChhvcmcudGVuc29yZmxvdy5m",
            "cmFtZXdvcmtCDEFwaURlZlByb3Rvc1ABWj1naXRodWIuY29tL3RlbnNvcmZs",
            "b3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3b3Jr+AEB",
            "YgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Tensorflow.AttrValueReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ApiDef), global::Tensorflow.ApiDef.Parser, new[]{ "GraphOpName", "DeprecationMessage", "DeprecationVersion", "Visibility", "Endpoint", "InArg", "OutArg", "ArgOrder", "Attr", "Summary", "Description", "DescriptionPrefix", "DescriptionSuffix" }, null, new[]{ typeof(global::Tensorflow.ApiDef.Types.Visibility) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ApiDef.Types.Endpoint), global::Tensorflow.ApiDef.Types.Endpoint.Parser, new[]{ "Name", "Deprecated", "DeprecationVersion" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ApiDef.Types.Arg), global::Tensorflow.ApiDef.Types.Arg.Parser, new[]{ "Name", "RenameTo", "Description" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ApiDef.Types.Attr), global::Tensorflow.ApiDef.Types.Attr.Parser, new[]{ "Name", "RenameTo", "DefaultValue", "Description" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.ApiDefs), global::Tensorflow.ApiDefs.Parser, new[]{ "Op" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  /// Used to specify and override the default API &amp; behavior in the
  /// generated code for client languages, from what you would get from
  /// the OpDef alone. There will be a set of ApiDefs that are common
  /// to all client languages, and another set per client language.
  /// The per-client-language ApiDefs will inherit values from the
  /// common ApiDefs which it can either replace or modify.
  ///
  /// We separate the API definition from the OpDef so we can evolve the
  /// API while remaining backwards compatible when interpretting old
  /// graphs.  Overrides go in an "api_def.pbtxt" file with a text-format
  /// ApiDefs message.
  ///
  /// WARNING: Be *very* careful changing the API for any existing op --
  /// you can change the semantics of existing code.  These changes may
  /// need to wait until a major release of TensorFlow to avoid breaking
  /// our compatibility promises.
  /// </summary>
  public sealed partial class ApiDef : pb::IMessage<ApiDef> {
    private static readonly pb::MessageParser<ApiDef> _parser = new pb::MessageParser<ApiDef>(() => new ApiDef());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ApiDef> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Tensorflow.ApiDefReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApiDef() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApiDef(ApiDef other) : this() {
      graphOpName_ = other.graphOpName_;
      deprecationMessage_ = other.deprecationMessage_;
      deprecationVersion_ = other.deprecationVersion_;
      visibility_ = other.visibility_;
      endpoint_ = other.endpoint_.Clone();
      inArg_ = other.inArg_.Clone();
      outArg_ = other.outArg_.Clone();
      argOrder_ = other.argOrder_.Clone();
      attr_ = other.attr_.Clone();
      summary_ = other.summary_;
      description_ = other.description_;
      descriptionPrefix_ = other.descriptionPrefix_;
      descriptionSuffix_ = other.descriptionSuffix_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApiDef Clone() {
      return new ApiDef(this);
    }

    /// <summary>Field number for the "graph_op_name" field.</summary>
    public const int GraphOpNameFieldNumber = 1;
    private string graphOpName_ = "";
    /// <summary>
    /// Name of the op (in the OpDef) to specify the API for.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string GraphOpName {
      get { return graphOpName_; }
      set {
        graphOpName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "deprecation_message" field.</summary>
    public const int DeprecationMessageFieldNumber = 12;
    private string deprecationMessage_ = "";
    /// <summary>
    /// If this op is deprecated, set deprecation message to the message
    /// that should be logged when this op is used.
    /// The message should indicate alternative op to use, if any.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string DeprecationMessage {
      get { return deprecationMessage_; }
      set {
        deprecationMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "deprecation_version" field.</summary>
    public const int DeprecationVersionFieldNumber = 13;
    private int deprecationVersion_;
    /// <summary>
    /// Major version when the op will be deleted. For e.g. set this
    /// value to 2 if op API should be removed in TensorFlow 2.0 and
    /// deprecated in versions before that.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int DeprecationVersion {
      get { return deprecationVersion_; }
      set {
        deprecationVersion_ = value;
      }
    }

    /// <summary>Field number for the "visibility" field.</summary>
    public const int VisibilityFieldNumber = 2;
    private global::Tensorflow.ApiDef.Types.Visibility visibility_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Tensorflow.ApiDef.Types.Visibility Visibility {
      get { return visibility_; }
      set {
        visibility_ = value;
      }
    }

    /// <summary>Field number for the "endpoint" field.</summary>
    public const int EndpointFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Tensorflow.ApiDef.Types.Endpoint> _repeated_endpoint_codec
        = pb::FieldCodec.ForMessage(26, global::Tensorflow.ApiDef.Types.Endpoint.Parser);
    private readonly pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Endpoint> endpoint_ = new pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Endpoint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Endpoint> Endpoint {
      get { return endpoint_; }
    }

    /// <summary>Field number for the "in_arg" field.</summary>
    public const int InArgFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Tensorflow.ApiDef.Types.Arg> _repeated_inArg_codec
        = pb::FieldCodec.ForMessage(34, global::Tensorflow.ApiDef.Types.Arg.Parser);
    private readonly pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Arg> inArg_ = new pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Arg>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Arg> InArg {
      get { return inArg_; }
    }

    /// <summary>Field number for the "out_arg" field.</summary>
    public const int OutArgFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Tensorflow.ApiDef.Types.Arg> _repeated_outArg_codec
        = pb::FieldCodec.ForMessage(42, global::Tensorflow.ApiDef.Types.Arg.Parser);
    private readonly pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Arg> outArg_ = new pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Arg>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Arg> OutArg {
      get { return outArg_; }
    }

    /// <summary>Field number for the "arg_order" field.</summary>
    public const int ArgOrderFieldNumber = 11;
    private static readonly pb::FieldCodec<string> _repeated_argOrder_codec
        = pb::FieldCodec.ForString(90);
    private readonly pbc::RepeatedField<string> argOrder_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// List of original in_arg names to specify new argument order.
    /// Length of arg_order should be either empty to keep current order
    /// or match size of in_arg.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> ArgOrder {
      get { return argOrder_; }
    }

    /// <summary>Field number for the "attr" field.</summary>
    public const int AttrFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Tensorflow.ApiDef.Types.Attr> _repeated_attr_codec
        = pb::FieldCodec.ForMessage(50, global::Tensorflow.ApiDef.Types.Attr.Parser);
    private readonly pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Attr> attr_ = new pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Attr>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Tensorflow.ApiDef.Types.Attr> Attr {
      get { return attr_; }
    }

    /// <summary>Field number for the "summary" field.</summary>
    public const int SummaryFieldNumber = 7;
    private string summary_ = "";
    /// <summary>
    /// One-line human-readable description of what the Op does.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Summary {
      get { return summary_; }
      set {
        summary_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description" field.</summary>
    public const int DescriptionFieldNumber = 8;
    private string description_ = "";
    /// <summary>
    /// Additional, longer human-readable description of what the Op does.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Description {
      get { return description_; }
      set {
        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description_prefix" field.</summary>
    public const int DescriptionPrefixFieldNumber = 9;
    private string descriptionPrefix_ = "";
    /// <summary>
    /// Modify an existing/inherited description by adding text to the beginning
    /// or end.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string DescriptionPrefix {
      get { return descriptionPrefix_; }
      set {
        descriptionPrefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description_suffix" field.</summary>
    public const int DescriptionSuffixFieldNumber = 10;
    private string descriptionSuffix_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string DescriptionSuffix {
      get { return descriptionSuffix_; }
      set {
        descriptionSuffix_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ApiDef);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ApiDef other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (GraphOpName != other.GraphOpName) return false;
      if (DeprecationMessage != other.DeprecationMessage) return false;
      if (DeprecationVersion != other.DeprecationVersion) return false;
      if (Visibility != other.Visibility) return false;
      if(!endpoint_.Equals(other.endpoint_)) return false;
      if(!inArg_.Equals(other.inArg_)) return false;
      if(!outArg_.Equals(other.outArg_)) return false;
      if(!argOrder_.Equals(other.argOrder_)) return false;
      if(!attr_.Equals(other.attr_)) return false;
      if (Summary != other.Summary) return false;
      if (Description != other.Description) return false;
      if (DescriptionPrefix != other.DescriptionPrefix) return false;
      if (DescriptionSuffix != other.DescriptionSuffix) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (GraphOpName.Length != 0) hash ^= GraphOpName.GetHashCode();
      if (DeprecationMessage.Length != 0) hash ^= DeprecationMessage.GetHashCode();
      if (DeprecationVersion != 0) hash ^= DeprecationVersion.GetHashCode();
      if (Visibility != 0) hash ^= Visibility.GetHashCode();
      hash ^= endpoint_.GetHashCode();
      hash ^= inArg_.GetHashCode();
      hash ^= outArg_.GetHashCode();
      hash ^= argOrder_.GetHashCode();
      hash ^= attr_.GetHashCode();
      if (Summary.Length != 0) hash ^= Summary.GetHashCode();
      if (Description.Length != 0) hash ^= Description.GetHashCode();
      if (DescriptionPrefix.Length != 0) hash ^= DescriptionPrefix.GetHashCode();
      if (DescriptionSuffix.Length != 0) hash ^= DescriptionSuffix.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (GraphOpName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(GraphOpName);
      }
      if (Visibility != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Visibility);
      }
      endpoint_.WriteTo(output, _repeated_endpoint_codec);
      inArg_.WriteTo(output, _repeated_inArg_codec);
      outArg_.WriteTo(output, _repeated_outArg_codec);
      attr_.WriteTo(output, _repeated_attr_codec);
      if (Summary.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Summary);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Description);
      }
      if (DescriptionPrefix.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(DescriptionPrefix);
      }
      if (DescriptionSuffix.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(DescriptionSuffix);
      }
      argOrder_.WriteTo(output, _repeated_argOrder_codec);
      if (DeprecationMessage.Length != 0) {
        output.WriteRawTag(98);
        output.WriteString(DeprecationMessage);
      }
      if (DeprecationVersion != 0) {
        output.WriteRawTag(104);
        output.WriteInt32(DeprecationVersion);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (GraphOpName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GraphOpName);
      }
      if (DeprecationMessage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DeprecationMessage);
      }
      if (DeprecationVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeprecationVersion);
      }
      if (Visibility != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Visibility);
      }
      size += endpoint_.CalculateSize(_repeated_endpoint_codec);
      size += inArg_.CalculateSize(_repeated_inArg_codec);
      size += outArg_.CalculateSize(_repeated_outArg_codec);
      size += argOrder_.CalculateSize(_repeated_argOrder_codec);
      size += attr_.CalculateSize(_repeated_attr_codec);
      if (Summary.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Summary);
      }
      if (Description.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
      }
      if (DescriptionPrefix.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DescriptionPrefix);
      }
      if (DescriptionSuffix.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DescriptionSuffix);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ApiDef other) {
      if (other == null) {
        return;
      }
      if (other.GraphOpName.Length != 0) {
        GraphOpName = other.GraphOpName;
      }
      if (other.DeprecationMessage.Length != 0) {
        DeprecationMessage = other.DeprecationMessage;
      }
      if (other.DeprecationVersion != 0) {
        DeprecationVersion = other.DeprecationVersion;
      }
      if (other.Visibility != 0) {
        Visibility = other.Visibility;
      }
      endpoint_.Add(other.endpoint_);
      inArg_.Add(other.inArg_);
      outArg_.Add(other.outArg_);
      argOrder_.Add(other.argOrder_);
      attr_.Add(other.attr_);
      if (other.Summary.Length != 0) {
        Summary = other.Summary;
      }
      if (other.Description.Length != 0) {
        Description = other.Description;
      }
      if (other.DescriptionPrefix.Length != 0) {
        DescriptionPrefix = other.DescriptionPrefix;
      }
      if (other.DescriptionSuffix.Length != 0) {
        DescriptionSuffix = other.DescriptionSuffix;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            GraphOpName = input.ReadString();
            break;
          }
          case 16: {
            visibility_ = (global::Tensorflow.ApiDef.Types.Visibility) input.ReadEnum();
            break;
          }
          case 26: {
            endpoint_.AddEntriesFrom(input, _repeated_endpoint_codec);
            break;
          }
          case 34: {
            inArg_.AddEntriesFrom(input, _repeated_inArg_codec);
            break;
          }
          case 42: {
            outArg_.AddEntriesFrom(input, _repeated_outArg_codec);
            break;
          }
          case 50: {
            attr_.AddEntriesFrom(input, _repeated_attr_codec);
            break;
          }
          case 58: {
            Summary = input.ReadString();
            break;
          }
          case 66: {
            Description = input.ReadString();
            break;
          }
          case 74: {
            DescriptionPrefix = input.ReadString();
            break;
          }
          case 82: {
            DescriptionSuffix = input.ReadString();
            break;
          }
          case 90: {
            argOrder_.AddEntriesFrom(input, _repeated_argOrder_codec);
            break;
          }
          case 98: {
            DeprecationMessage = input.ReadString();
            break;
          }
          case 104: {
            DeprecationVersion = input.ReadInt32();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ApiDef message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum Visibility {
        /// <summary>
        /// Normally this is "VISIBLE" unless you are inheriting a
        /// different value from another ApiDef.
        /// </summary>
        [pbr::OriginalName("DEFAULT_VISIBILITY")] DefaultVisibility = 0,
        /// <summary>
        /// Publicly visible in the API.
        /// </summary>
        [pbr::OriginalName("VISIBLE")] Visible = 1,
        /// <summary>
        /// Do not include this op in the generated API. If visibility is
        /// set to 'SKIP', other fields are ignored for this op.
        /// </summary>
        [pbr::OriginalName("SKIP")] Skip = 2,
        /// <summary>
        /// Hide this op by putting it into an internal namespace (or whatever
        /// is appropriate in the target language).
        /// </summary>
        [pbr::OriginalName("HIDDEN")] Hidden = 3,
      }

      /// <summary>
      /// If you specify any endpoint, this will replace all of the
      /// inherited endpoints.  The first endpoint should be the
      /// "canonical" endpoint, and should not be deprecated (unless all
      /// endpoints are deprecated).
      /// </summary>
      public sealed partial class Endpoint : pb::IMessage<Endpoint> {
        private static readonly pb::MessageParser<Endpoint> _parser = new pb::MessageParser<Endpoint>(() => new Endpoint());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<Endpoint> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Tensorflow.ApiDef.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Endpoint() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Endpoint(Endpoint other) : this() {
          name_ = other.name_;
          deprecated_ = other.deprecated_;
          deprecationVersion_ = other.deprecationVersion_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Endpoint Clone() {
          return new Endpoint(this);
        }

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 1;
        private string name_ = "";
        /// <summary>
        /// Name should be either like "CamelCaseName" or
        /// "Package.CamelCaseName". Client-language-specific ApiDefs may
        /// use a snake_case convention instead of CamelCase.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "deprecated" field.</summary>
        public const int DeprecatedFieldNumber = 3;
        private bool deprecated_;
        /// <summary>
        /// Set if this endpoint is deprecated. If set to true, a message suggesting
        /// to use a non-deprecated endpoint instead will be printed. If all
        /// endpoints are deprecated, set deprecation_message in ApiDef instead.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Deprecated {
          get { return deprecated_; }
          set {
            deprecated_ = value;
          }
        }

        /// <summary>Field number for the "deprecation_version" field.</summary>
        public const int DeprecationVersionFieldNumber = 4;
        private int deprecationVersion_;
        /// <summary>
        /// Major version when an endpoint will be deleted. For e.g. set this
        /// value to 2 if endpoint should be removed in TensorFlow 2.0 and
        /// deprecated in versions before that.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int DeprecationVersion {
          get { return deprecationVersion_; }
          set {
            deprecationVersion_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as Endpoint);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(Endpoint other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Name != other.Name) return false;
          if (Deprecated != other.Deprecated) return false;
          if (DeprecationVersion != other.DeprecationVersion) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (Name.Length != 0) hash ^= Name.GetHashCode();
          if (Deprecated != false) hash ^= Deprecated.GetHashCode();
          if (DeprecationVersion != 0) hash ^= DeprecationVersion.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (Name.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Name);
          }
          if (Deprecated != false) {
            output.WriteRawTag(24);
            output.WriteBool(Deprecated);
          }
          if (DeprecationVersion != 0) {
            output.WriteRawTag(32);
            output.WriteInt32(DeprecationVersion);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (Name.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
          }
          if (Deprecated != false) {
            size += 1 + 1;
          }
          if (DeprecationVersion != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeprecationVersion);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(Endpoint other) {
          if (other == null) {
            return;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.Deprecated != false) {
            Deprecated = other.Deprecated;
          }
          if (other.DeprecationVersion != 0) {
            DeprecationVersion = other.DeprecationVersion;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                Name = input.ReadString();
                break;
              }
              case 24: {
                Deprecated = input.ReadBool();
                break;
              }
              case 32: {
                DeprecationVersion = input.ReadInt32();
                break;
              }
            }
          }
        }

      }

      public sealed partial class Arg : pb::IMessage<Arg> {
        private static readonly pb::MessageParser<Arg> _parser = new pb::MessageParser<Arg>(() => new Arg());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<Arg> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Tensorflow.ApiDef.Descriptor.NestedTypes[1]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Arg() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Arg(Arg other) : this() {
          name_ = other.name_;
          renameTo_ = other.renameTo_;
          description_ = other.description_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Arg Clone() {
          return new Arg(this);
        }

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 1;
        private string name_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "rename_to" field.</summary>
        public const int RenameToFieldNumber = 2;
        private string renameTo_ = "";
        /// <summary>
        /// Change the name used to access this arg in the API from what
        /// is used in the GraphDef.  Note that these names in `backticks`
        /// will also be replaced in the summary &amp; description fields.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string RenameTo {
          get { return renameTo_; }
          set {
            renameTo_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "description" field.</summary>
        public const int DescriptionFieldNumber = 3;
        private string description_ = "";
        /// <summary>
        /// Note: this will replace any inherited arg doc. There is no
        /// current way of modifying arg descriptions (other than replacing
        /// them entirely) as can be done with op descriptions.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Description {
          get { return description_; }
          set {
            description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as Arg);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(Arg other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Name != other.Name) return false;
          if (RenameTo != other.RenameTo) return false;
          if (Description != other.Description) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (Name.Length != 0) hash ^= Name.GetHashCode();
          if (RenameTo.Length != 0) hash ^= RenameTo.GetHashCode();
          if (Description.Length != 0) hash ^= Description.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (Name.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Name);
          }
          if (RenameTo.Length != 0) {
            output.WriteRawTag(18);
            output.WriteString(RenameTo);
          }
          if (Description.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(Description);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (Name.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
          }
          if (RenameTo.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(RenameTo);
          }
          if (Description.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(Arg other) {
          if (other == null) {
            return;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.RenameTo.Length != 0) {
            RenameTo = other.RenameTo;
          }
          if (other.Description.Length != 0) {
            Description = other.Description;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                Name = input.ReadString();
                break;
              }
              case 18: {
                RenameTo = input.ReadString();
                break;
              }
              case 26: {
                Description = input.ReadString();
                break;
              }
            }
          }
        }

      }

      /// <summary>
      /// Description of the graph-construction-time configuration of this
      /// Op.  That is to say, this describes the attr fields that will
      /// be specified in the NodeDef.
      /// </summary>
      public sealed partial class Attr : pb::IMessage<Attr> {
        private static readonly pb::MessageParser<Attr> _parser = new pb::MessageParser<Attr>(() => new Attr());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<Attr> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Tensorflow.ApiDef.Descriptor.NestedTypes[2]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Attr() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Attr(Attr other) : this() {
          name_ = other.name_;
          renameTo_ = other.renameTo_;
          defaultValue_ = other.defaultValue_ != null ? other.defaultValue_.Clone() : null;
          description_ = other.description_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Attr Clone() {
          return new Attr(this);
        }

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 1;
        private string name_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "rename_to" field.</summary>
        public const int RenameToFieldNumber = 2;
        private string renameTo_ = "";
        /// <summary>
        /// Change the name used to access this attr in the API from what
        /// is used in the GraphDef.  Note that these names in `backticks`
        /// will also be replaced in the summary &amp; description fields.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string RenameTo {
          get { return renameTo_; }
          set {
            renameTo_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "default_value" field.</summary>
        public const int DefaultValueFieldNumber = 3;
        private global::Tensorflow.AttrValue defaultValue_;
        /// <summary>
        /// Specify a new default value to use for this attr.  This default
        /// will be used when creating new graphs, as opposed to the
        /// default in the OpDef, which will be used when interpreting old
        /// GraphDefs.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Tensorflow.AttrValue DefaultValue {
          get { return defaultValue_; }
          set {
            defaultValue_ = value;
          }
        }

        /// <summary>Field number for the "description" field.</summary>
        public const int DescriptionFieldNumber = 4;
        private string description_ = "";
        /// <summary>
        /// Note: this will replace any inherited attr doc, there is no current
        /// way of modifying attr descriptions as can be done with op descriptions.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Description {
          get { return description_; }
          set {
            description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as Attr);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(Attr other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Name != other.Name) return false;
          if (RenameTo != other.RenameTo) return false;
          if (!object.Equals(DefaultValue, other.DefaultValue)) return false;
          if (Description != other.Description) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (Name.Length != 0) hash ^= Name.GetHashCode();
          if (RenameTo.Length != 0) hash ^= RenameTo.GetHashCode();
          if (defaultValue_ != null) hash ^= DefaultValue.GetHashCode();
          if (Description.Length != 0) hash ^= Description.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (Name.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Name);
          }
          if (RenameTo.Length != 0) {
            output.WriteRawTag(18);
            output.WriteString(RenameTo);
          }
          if (defaultValue_ != null) {
            output.WriteRawTag(26);
            output.WriteMessage(DefaultValue);
          }
          if (Description.Length != 0) {
            output.WriteRawTag(34);
            output.WriteString(Description);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (Name.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
          }
          if (RenameTo.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(RenameTo);
          }
          if (defaultValue_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(DefaultValue);
          }
          if (Description.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(Attr other) {
          if (other == null) {
            return;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.RenameTo.Length != 0) {
            RenameTo = other.RenameTo;
          }
          if (other.defaultValue_ != null) {
            if (defaultValue_ == null) {
              defaultValue_ = new global::Tensorflow.AttrValue();
            }
            DefaultValue.MergeFrom(other.DefaultValue);
          }
          if (other.Description.Length != 0) {
            Description = other.Description;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                Name = input.ReadString();
                break;
              }
              case 18: {
                RenameTo = input.ReadString();
                break;
              }
              case 26: {
                if (defaultValue_ == null) {
                  defaultValue_ = new global::Tensorflow.AttrValue();
                }
                input.ReadMessage(defaultValue_);
                break;
              }
              case 34: {
                Description = input.ReadString();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  public sealed partial class ApiDefs : pb::IMessage<ApiDefs> {
    private static readonly pb::MessageParser<ApiDefs> _parser = new pb::MessageParser<ApiDefs>(() => new ApiDefs());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ApiDefs> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Tensorflow.ApiDefReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApiDefs() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApiDefs(ApiDefs other) : this() {
      op_ = other.op_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApiDefs Clone() {
      return new ApiDefs(this);
    }

    /// <summary>Field number for the "op" field.</summary>
    public const int OpFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Tensorflow.ApiDef> _repeated_op_codec
        = pb::FieldCodec.ForMessage(10, global::Tensorflow.ApiDef.Parser);
    private readonly pbc::RepeatedField<global::Tensorflow.ApiDef> op_ = new pbc::RepeatedField<global::Tensorflow.ApiDef>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Tensorflow.ApiDef> Op {
      get { return op_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ApiDefs);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ApiDefs other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!op_.Equals(other.op_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= op_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      op_.WriteTo(output, _repeated_op_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += op_.CalculateSize(_repeated_op_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ApiDefs other) {
      if (other == null) {
        return;
      }
      op_.Add(other.op_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            op_.AddEntriesFrom(input, _repeated_op_codec);
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
