code: function DescriptorProto(properties) {
                  this.field = [];
                  this.extension = [];
                  this.nestedType = [];
                  this.enumType = [];
                  this.extensionRange = [];
                  this.oneofDecl = [];
                  this.reservedRange = [];
                  this.reservedName = [];
                  if (properties)
                      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                          if (properties[keys[i]] != null)
                              this[keys[i]] = properties[keys[i]];
              }
docs: Properties of a DescriptorProto.
  @memberof google.protobuf
  @interface IDescriptorProto
  @property {string|null} [name] DescriptorProto name
  @property {Array.<google.protobuf.IFieldDescriptorProto>|null} [field] DescriptorProto field
  @property {Array.<google.protobuf.IFieldDescriptorProto>|null} [extension] DescriptorProto extension
  @property {Array.<google.protobuf.IDescriptorProto>|null} [nestedType] DescriptorProto nestedType
  @property {Array.<google.protobuf.IEnumDescriptorProto>|null} [enumType] DescriptorProto enumType
  @property {Array.<google.protobuf.DescriptorProto.IExtensionRange>|null} [extensionRange] DescriptorProto extensionRange
  @property {Array.<google.protobuf.IOneofDescriptorProto>|null} [oneofDecl] DescriptorProto oneofDecl
  @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options
  @property {Array.<google.protobuf.DescriptorProto.IReservedRange>|null} [reservedRange] DescriptorProto reservedRange
  @property {Array.<string>|null} [reservedName] DescriptorProto reservedName
   
  Constructs a new DescriptorProto.
  @memberof google.protobuf
  @classdesc Represents a DescriptorProto.
  @implements IDescriptorProto
  @constructor
  @param {google.protobuf.IDescriptorProto=} [properties] Properties to set