// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: AssemblyAllTypes.proto

package soot.dotnet.proto;

public final class ProtoAssemblyAllTypes {
  private ProtoAssemblyAllTypes() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code Accessibility}
   */
  public enum Accessibility
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>NONE = 0;</code>
     */
    NONE(0),
    /**
     * <code>PRIVATE = 1;</code>
     */
    PRIVATE(1),
    /**
     * <code>PUBLIC = 2;</code>
     */
    PUBLIC(2),
    /**
     * <code>INTERNAL = 3;</code>
     */
    INTERNAL(3),
    /**
     * <code>PROTECTED = 4;</code>
     */
    PROTECTED(4),
    /**
     * <code>PROTECTED_AND_INTERNAL = 5;</code>
     */
    PROTECTED_AND_INTERNAL(5),
    /**
     * <code>PROTECTED_OR_INTERNAL = 6;</code>
     */
    PROTECTED_OR_INTERNAL(6),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>NONE = 0;</code>
     */
    public static final int NONE_VALUE = 0;
    /**
     * <code>PRIVATE = 1;</code>
     */
    public static final int PRIVATE_VALUE = 1;
    /**
     * <code>PUBLIC = 2;</code>
     */
    public static final int PUBLIC_VALUE = 2;
    /**
     * <code>INTERNAL = 3;</code>
     */
    public static final int INTERNAL_VALUE = 3;
    /**
     * <code>PROTECTED = 4;</code>
     */
    public static final int PROTECTED_VALUE = 4;
    /**
     * <code>PROTECTED_AND_INTERNAL = 5;</code>
     */
    public static final int PROTECTED_AND_INTERNAL_VALUE = 5;
    /**
     * <code>PROTECTED_OR_INTERNAL = 6;</code>
     */
    public static final int PROTECTED_OR_INTERNAL_VALUE = 6;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static Accessibility valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static Accessibility forNumber(int value) {
      switch (value) {
        case 0: return NONE;
        case 1: return PRIVATE;
        case 2: return PUBLIC;
        case 3: return INTERNAL;
        case 4: return PROTECTED;
        case 5: return PROTECTED_AND_INTERNAL;
        case 6: return PROTECTED_OR_INTERNAL;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<Accessibility>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Accessibility> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Accessibility>() {
            public Accessibility findValueByNumber(int number) {
              return Accessibility.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.getDescriptor().getEnumTypes().get(0);
    }

    private static final Accessibility[] VALUES = values();

    public static Accessibility valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private Accessibility(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:Accessibility)
  }

  /**
   * <pre>
   * TYPE
   * </pre>
   *
   * Protobuf enum {@code IlType}
   */
  public enum IlType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>type_unknown = 0;</code>
     */
    type_unknown(0),
    /**
     * <code>type_string = 1;</code>
     */
    type_string(1),
    /**
     * <code>type_int32 = 2;</code>
     */
    type_int32(2),
    /**
     * <code>type_int64 = 3;</code>
     */
    type_int64(3),
    /**
     * <code>type_uint32 = 4;</code>
     */
    type_uint32(4),
    /**
     * <code>type_uint64 = 5;</code>
     */
    type_uint64(5),
    /**
     * <code>type_float = 6;</code>
     */
    type_float(6),
    /**
     * <code>type_double = 7;</code>
     */
    type_double(7),
    /**
     * <code>type_bool = 8;</code>
     */
    type_bool(8),
    /**
     * <code>type_byte = 9;</code>
     */
    type_byte(9),
    /**
     * <code>type_sbyte = 10;</code>
     */
    type_sbyte(10),
    /**
     * <code>type_uint16 = 11;</code>
     */
    type_uint16(11),
    /**
     * <code>type_int16 = 12;</code>
     */
    type_int16(12),
    /**
     * <code>type_char = 13;</code>
     */
    type_char(13),
    /**
     * <code>type_decimal = 14;</code>
     */
    type_decimal(14),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>type_unknown = 0;</code>
     */
    public static final int type_unknown_VALUE = 0;
    /**
     * <code>type_string = 1;</code>
     */
    public static final int type_string_VALUE = 1;
    /**
     * <code>type_int32 = 2;</code>
     */
    public static final int type_int32_VALUE = 2;
    /**
     * <code>type_int64 = 3;</code>
     */
    public static final int type_int64_VALUE = 3;
    /**
     * <code>type_uint32 = 4;</code>
     */
    public static final int type_uint32_VALUE = 4;
    /**
     * <code>type_uint64 = 5;</code>
     */
    public static final int type_uint64_VALUE = 5;
    /**
     * <code>type_float = 6;</code>
     */
    public static final int type_float_VALUE = 6;
    /**
     * <code>type_double = 7;</code>
     */
    public static final int type_double_VALUE = 7;
    /**
     * <code>type_bool = 8;</code>
     */
    public static final int type_bool_VALUE = 8;
    /**
     * <code>type_byte = 9;</code>
     */
    public static final int type_byte_VALUE = 9;
    /**
     * <code>type_sbyte = 10;</code>
     */
    public static final int type_sbyte_VALUE = 10;
    /**
     * <code>type_uint16 = 11;</code>
     */
    public static final int type_uint16_VALUE = 11;
    /**
     * <code>type_int16 = 12;</code>
     */
    public static final int type_int16_VALUE = 12;
    /**
     * <code>type_char = 13;</code>
     */
    public static final int type_char_VALUE = 13;
    /**
     * <code>type_decimal = 14;</code>
     */
    public static final int type_decimal_VALUE = 14;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static IlType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static IlType forNumber(int value) {
      switch (value) {
        case 0: return type_unknown;
        case 1: return type_string;
        case 2: return type_int32;
        case 3: return type_int64;
        case 4: return type_uint32;
        case 5: return type_uint64;
        case 6: return type_float;
        case 7: return type_double;
        case 8: return type_bool;
        case 9: return type_byte;
        case 10: return type_sbyte;
        case 11: return type_uint16;
        case 12: return type_int16;
        case 13: return type_char;
        case 14: return type_decimal;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<IlType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        IlType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<IlType>() {
            public IlType findValueByNumber(int number) {
              return IlType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.getDescriptor().getEnumTypes().get(1);
    }

    private static final IlType[] VALUES = values();

    public static IlType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private IlType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:IlType)
  }

  /**
   * Protobuf enum {@code TypeKindDef}
   */
  public enum TypeKindDef
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>NO_TYPE = 0;</code>
     */
    NO_TYPE(0),
    /**
     * <code>OTHER = 1;</code>
     */
    OTHER(1),
    /**
     * <code>CLASS = 2;</code>
     */
    CLASS(2),
    /**
     * <code>INTERFACE = 3;</code>
     */
    INTERFACE(3),
    /**
     * <code>STRUCT = 4;</code>
     */
    STRUCT(4),
    /**
     * <code>DELEGATE = 5;</code>
     */
    DELEGATE(5),
    /**
     * <code>ENUM = 6;</code>
     */
    ENUM(6),
    /**
     * <code>VOID = 7;</code>
     */
    VOID(7),
    /**
     * <code>UNKNOWN = 8;</code>
     */
    UNKNOWN(8),
    /**
     * <code>NULL = 9;</code>
     */
    NULL(9),
    /**
     * <code>NONE_TYPE = 10;</code>
     */
    NONE_TYPE(10),
    /**
     * <code>DYNAMIC = 11;</code>
     */
    DYNAMIC(11),
    /**
     * <code>UNBOUND_TYPE_ARG = 12;</code>
     */
    UNBOUND_TYPE_ARG(12),
    /**
     * <code>TYPE_PARAMETER = 13;</code>
     */
    TYPE_PARAMETER(13),
    /**
     * <code>ARRAY = 14;</code>
     */
    ARRAY(14),
    /**
     * <code>POINTER = 15;</code>
     */
    POINTER(15),
    /**
     * <code>BY_REF = 16;</code>
     */
    BY_REF(16),
    /**
     * <code>INTERSECTION = 17;</code>
     */
    INTERSECTION(17),
    /**
     * <code>ARG_LIST = 18;</code>
     */
    ARG_LIST(18),
    /**
     * <code>TUPLE = 19;</code>
     */
    TUPLE(19),
    /**
     * <code>MOD_OPT = 20;</code>
     */
    MOD_OPT(20),
    /**
     * <code>MOD_REQ = 21;</code>
     */
    MOD_REQ(21),
    /**
     * <code>N_INT = 22;</code>
     */
    N_INT(22),
    /**
     * <code>N_UINT = 23;</code>
     */
    N_UINT(23),
    /**
     * <code>FUNCTION_POINTER = 24;</code>
     */
    FUNCTION_POINTER(24),
    /**
     * <code>BY_REF_AND_ARRAY = 25;</code>
     */
    BY_REF_AND_ARRAY(25),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>NO_TYPE = 0;</code>
     */
    public static final int NO_TYPE_VALUE = 0;
    /**
     * <code>OTHER = 1;</code>
     */
    public static final int OTHER_VALUE = 1;
    /**
     * <code>CLASS = 2;</code>
     */
    public static final int CLASS_VALUE = 2;
    /**
     * <code>INTERFACE = 3;</code>
     */
    public static final int INTERFACE_VALUE = 3;
    /**
     * <code>STRUCT = 4;</code>
     */
    public static final int STRUCT_VALUE = 4;
    /**
     * <code>DELEGATE = 5;</code>
     */
    public static final int DELEGATE_VALUE = 5;
    /**
     * <code>ENUM = 6;</code>
     */
    public static final int ENUM_VALUE = 6;
    /**
     * <code>VOID = 7;</code>
     */
    public static final int VOID_VALUE = 7;
    /**
     * <code>UNKNOWN = 8;</code>
     */
    public static final int UNKNOWN_VALUE = 8;
    /**
     * <code>NULL = 9;</code>
     */
    public static final int NULL_VALUE = 9;
    /**
     * <code>NONE_TYPE = 10;</code>
     */
    public static final int NONE_TYPE_VALUE = 10;
    /**
     * <code>DYNAMIC = 11;</code>
     */
    public static final int DYNAMIC_VALUE = 11;
    /**
     * <code>UNBOUND_TYPE_ARG = 12;</code>
     */
    public static final int UNBOUND_TYPE_ARG_VALUE = 12;
    /**
     * <code>TYPE_PARAMETER = 13;</code>
     */
    public static final int TYPE_PARAMETER_VALUE = 13;
    /**
     * <code>ARRAY = 14;</code>
     */
    public static final int ARRAY_VALUE = 14;
    /**
     * <code>POINTER = 15;</code>
     */
    public static final int POINTER_VALUE = 15;
    /**
     * <code>BY_REF = 16;</code>
     */
    public static final int BY_REF_VALUE = 16;
    /**
     * <code>INTERSECTION = 17;</code>
     */
    public static final int INTERSECTION_VALUE = 17;
    /**
     * <code>ARG_LIST = 18;</code>
     */
    public static final int ARG_LIST_VALUE = 18;
    /**
     * <code>TUPLE = 19;</code>
     */
    public static final int TUPLE_VALUE = 19;
    /**
     * <code>MOD_OPT = 20;</code>
     */
    public static final int MOD_OPT_VALUE = 20;
    /**
     * <code>MOD_REQ = 21;</code>
     */
    public static final int MOD_REQ_VALUE = 21;
    /**
     * <code>N_INT = 22;</code>
     */
    public static final int N_INT_VALUE = 22;
    /**
     * <code>N_UINT = 23;</code>
     */
    public static final int N_UINT_VALUE = 23;
    /**
     * <code>FUNCTION_POINTER = 24;</code>
     */
    public static final int FUNCTION_POINTER_VALUE = 24;
    /**
     * <code>BY_REF_AND_ARRAY = 25;</code>
     */
    public static final int BY_REF_AND_ARRAY_VALUE = 25;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static TypeKindDef valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static TypeKindDef forNumber(int value) {
      switch (value) {
        case 0: return NO_TYPE;
        case 1: return OTHER;
        case 2: return CLASS;
        case 3: return INTERFACE;
        case 4: return STRUCT;
        case 5: return DELEGATE;
        case 6: return ENUM;
        case 7: return VOID;
        case 8: return UNKNOWN;
        case 9: return NULL;
        case 10: return NONE_TYPE;
        case 11: return DYNAMIC;
        case 12: return UNBOUND_TYPE_ARG;
        case 13: return TYPE_PARAMETER;
        case 14: return ARRAY;
        case 15: return POINTER;
        case 16: return BY_REF;
        case 17: return INTERSECTION;
        case 18: return ARG_LIST;
        case 19: return TUPLE;
        case 20: return MOD_OPT;
        case 21: return MOD_REQ;
        case 22: return N_INT;
        case 23: return N_UINT;
        case 24: return FUNCTION_POINTER;
        case 25: return BY_REF_AND_ARRAY;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<TypeKindDef>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        TypeKindDef> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<TypeKindDef>() {
            public TypeKindDef findValueByNumber(int number) {
              return TypeKindDef.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.getDescriptor().getEnumTypes().get(2);
    }

    private static final TypeKindDef[] VALUES = values();

    public static TypeKindDef valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private TypeKindDef(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:TypeKindDef)
  }

  public interface AssemblyAllTypesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:AssemblyAllTypes)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> 
        getListOfTypesList();
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getListOfTypes(int index);
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    int getListOfTypesCount();
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
        getListOfTypesOrBuilderList();
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getListOfTypesOrBuilder(
        int index);

    /**
     * <code>repeated string all_referenced_module_types = 2;</code>
     * @return A list containing the allReferencedModuleTypes.
     */
    java.util.List<java.lang.String>
        getAllReferencedModuleTypesList();
    /**
     * <code>repeated string all_referenced_module_types = 2;</code>
     * @return The count of allReferencedModuleTypes.
     */
    int getAllReferencedModuleTypesCount();
    /**
     * <code>repeated string all_referenced_module_types = 2;</code>
     * @param index The index of the element to return.
     * @return The allReferencedModuleTypes at the given index.
     */
    java.lang.String getAllReferencedModuleTypes(int index);
    /**
     * <code>repeated string all_referenced_module_types = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the allReferencedModuleTypes at the given index.
     */
    com.google.protobuf.ByteString
        getAllReferencedModuleTypesBytes(int index);
  }
  /**
   * <pre>
   * All types and references of one assembly
   * </pre>
   *
   * Protobuf type {@code AssemblyAllTypes}
   */
  public static final class AssemblyAllTypes extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:AssemblyAllTypes)
      AssemblyAllTypesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AssemblyAllTypes.newBuilder() to construct.
    private AssemblyAllTypes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AssemblyAllTypes() {
      listOfTypes_ = java.util.Collections.emptyList();
      allReferencedModuleTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AssemblyAllTypes_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AssemblyAllTypes_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes.class, soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes.Builder.class);
    }

    public static final int LIST_OF_TYPES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> listOfTypes_;
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> getListOfTypesList() {
      return listOfTypes_;
    }
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
        getListOfTypesOrBuilderList() {
      return listOfTypes_;
    }
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    @java.lang.Override
    public int getListOfTypesCount() {
      return listOfTypes_.size();
    }
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getListOfTypes(int index) {
      return listOfTypes_.get(index);
    }
    /**
     * <code>repeated .TypeDefinition list_of_types = 1;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getListOfTypesOrBuilder(
        int index) {
      return listOfTypes_.get(index);
    }

    public static final int ALL_REFERENCED_MODULE_TYPES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList allReferencedModuleTypes_;
    /**
     * <code>repeated string all_referenced_module_types = 2;</code>
     * @return A list containing the allReferencedModuleTypes.
     */
    public com.google.protobuf.ProtocolStringList
        getAllReferencedModuleTypesList() {
      return allReferencedModuleTypes_;
    }
    /**
     * <code>repeated string all_referenced_module_types = 2;</code>
     * @return The count of allReferencedModuleTypes.
     */
    public int getAllReferencedModuleTypesCount() {
      return allReferencedModuleTypes_.size();
    }
    /**
     * <code>repeated string all_referenced_module_types = 2;</code>
     * @param index The index of the element to return.
     * @return The allReferencedModuleTypes at the given index.
     */
    public java.lang.String getAllReferencedModuleTypes(int index) {
      return allReferencedModuleTypes_.get(index);
    }
    /**
     * <code>repeated string all_referenced_module_types = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the allReferencedModuleTypes at the given index.
     */
    public com.google.protobuf.ByteString
        getAllReferencedModuleTypesBytes(int index) {
      return allReferencedModuleTypes_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < listOfTypes_.size(); i++) {
        output.writeMessage(1, listOfTypes_.get(i));
      }
      for (int i = 0; i < allReferencedModuleTypes_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, allReferencedModuleTypes_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < listOfTypes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, listOfTypes_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < allReferencedModuleTypes_.size(); i++) {
          dataSize += computeStringSizeNoTag(allReferencedModuleTypes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAllReferencedModuleTypesList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes other = (soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes) obj;

      if (!getListOfTypesList()
          .equals(other.getListOfTypesList())) return false;
      if (!getAllReferencedModuleTypesList()
          .equals(other.getAllReferencedModuleTypesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getListOfTypesCount() > 0) {
        hash = (37 * hash) + LIST_OF_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getListOfTypesList().hashCode();
      }
      if (getAllReferencedModuleTypesCount() > 0) {
        hash = (37 * hash) + ALL_REFERENCED_MODULE_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getAllReferencedModuleTypesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes 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 soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes 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 soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes 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(soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes 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>
     * All types and references of one assembly
     * </pre>
     *
     * Protobuf type {@code AssemblyAllTypes}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:AssemblyAllTypes)
        soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AssemblyAllTypes_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AssemblyAllTypes_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes.class, soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (listOfTypesBuilder_ == null) {
          listOfTypes_ = java.util.Collections.emptyList();
        } else {
          listOfTypes_ = null;
          listOfTypesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        allReferencedModuleTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AssemblyAllTypes_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes result = new soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes result) {
        if (listOfTypesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            listOfTypes_ = java.util.Collections.unmodifiableList(listOfTypes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.listOfTypes_ = listOfTypes_;
        } else {
          result.listOfTypes_ = listOfTypesBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          allReferencedModuleTypes_ = allReferencedModuleTypes_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.allReferencedModuleTypes_ = allReferencedModuleTypes_;
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes result) {
        int from_bitField0_ = bitField0_;
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes.getDefaultInstance()) return this;
        if (listOfTypesBuilder_ == null) {
          if (!other.listOfTypes_.isEmpty()) {
            if (listOfTypes_.isEmpty()) {
              listOfTypes_ = other.listOfTypes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureListOfTypesIsMutable();
              listOfTypes_.addAll(other.listOfTypes_);
            }
            onChanged();
          }
        } else {
          if (!other.listOfTypes_.isEmpty()) {
            if (listOfTypesBuilder_.isEmpty()) {
              listOfTypesBuilder_.dispose();
              listOfTypesBuilder_ = null;
              listOfTypes_ = other.listOfTypes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              listOfTypesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getListOfTypesFieldBuilder() : null;
            } else {
              listOfTypesBuilder_.addAllMessages(other.listOfTypes_);
            }
          }
        }
        if (!other.allReferencedModuleTypes_.isEmpty()) {
          if (allReferencedModuleTypes_.isEmpty()) {
            allReferencedModuleTypes_ = other.allReferencedModuleTypes_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureAllReferencedModuleTypesIsMutable();
            allReferencedModuleTypes_.addAll(other.allReferencedModuleTypes_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.parser(),
                        extensionRegistry);
                if (listOfTypesBuilder_ == null) {
                  ensureListOfTypesIsMutable();
                  listOfTypes_.add(m);
                } else {
                  listOfTypesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureAllReferencedModuleTypesIsMutable();
                allReferencedModuleTypes_.add(s);
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> listOfTypes_ =
        java.util.Collections.emptyList();
      private void ensureListOfTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          listOfTypes_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition>(listOfTypes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> listOfTypesBuilder_;

      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> getListOfTypesList() {
        if (listOfTypesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(listOfTypes_);
        } else {
          return listOfTypesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public int getListOfTypesCount() {
        if (listOfTypesBuilder_ == null) {
          return listOfTypes_.size();
        } else {
          return listOfTypesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getListOfTypes(int index) {
        if (listOfTypesBuilder_ == null) {
          return listOfTypes_.get(index);
        } else {
          return listOfTypesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder setListOfTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (listOfTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureListOfTypesIsMutable();
          listOfTypes_.set(index, value);
          onChanged();
        } else {
          listOfTypesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder setListOfTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (listOfTypesBuilder_ == null) {
          ensureListOfTypesIsMutable();
          listOfTypes_.set(index, builderForValue.build());
          onChanged();
        } else {
          listOfTypesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder addListOfTypes(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (listOfTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureListOfTypesIsMutable();
          listOfTypes_.add(value);
          onChanged();
        } else {
          listOfTypesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder addListOfTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (listOfTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureListOfTypesIsMutable();
          listOfTypes_.add(index, value);
          onChanged();
        } else {
          listOfTypesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder addListOfTypes(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (listOfTypesBuilder_ == null) {
          ensureListOfTypesIsMutable();
          listOfTypes_.add(builderForValue.build());
          onChanged();
        } else {
          listOfTypesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder addListOfTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (listOfTypesBuilder_ == null) {
          ensureListOfTypesIsMutable();
          listOfTypes_.add(index, builderForValue.build());
          onChanged();
        } else {
          listOfTypesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder addAllListOfTypes(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> values) {
        if (listOfTypesBuilder_ == null) {
          ensureListOfTypesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, listOfTypes_);
          onChanged();
        } else {
          listOfTypesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder clearListOfTypes() {
        if (listOfTypesBuilder_ == null) {
          listOfTypes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          listOfTypesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public Builder removeListOfTypes(int index) {
        if (listOfTypesBuilder_ == null) {
          ensureListOfTypesIsMutable();
          listOfTypes_.remove(index);
          onChanged();
        } else {
          listOfTypesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getListOfTypesBuilder(
          int index) {
        return getListOfTypesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getListOfTypesOrBuilder(
          int index) {
        if (listOfTypesBuilder_ == null) {
          return listOfTypes_.get(index);  } else {
          return listOfTypesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
           getListOfTypesOrBuilderList() {
        if (listOfTypesBuilder_ != null) {
          return listOfTypesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(listOfTypes_);
        }
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder addListOfTypesBuilder() {
        return getListOfTypesFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder addListOfTypesBuilder(
          int index) {
        return getListOfTypesFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .TypeDefinition list_of_types = 1;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder> 
           getListOfTypesBuilderList() {
        return getListOfTypesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getListOfTypesFieldBuilder() {
        if (listOfTypesBuilder_ == null) {
          listOfTypesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  listOfTypes_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          listOfTypes_ = null;
        }
        return listOfTypesBuilder_;
      }

      private com.google.protobuf.LazyStringList allReferencedModuleTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAllReferencedModuleTypesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          allReferencedModuleTypes_ = new com.google.protobuf.LazyStringArrayList(allReferencedModuleTypes_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @return A list containing the allReferencedModuleTypes.
       */
      public com.google.protobuf.ProtocolStringList
          getAllReferencedModuleTypesList() {
        return allReferencedModuleTypes_.getUnmodifiableView();
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @return The count of allReferencedModuleTypes.
       */
      public int getAllReferencedModuleTypesCount() {
        return allReferencedModuleTypes_.size();
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @param index The index of the element to return.
       * @return The allReferencedModuleTypes at the given index.
       */
      public java.lang.String getAllReferencedModuleTypes(int index) {
        return allReferencedModuleTypes_.get(index);
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the allReferencedModuleTypes at the given index.
       */
      public com.google.protobuf.ByteString
          getAllReferencedModuleTypesBytes(int index) {
        return allReferencedModuleTypes_.getByteString(index);
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @param index The index to set the value at.
       * @param value The allReferencedModuleTypes to set.
       * @return This builder for chaining.
       */
      public Builder setAllReferencedModuleTypes(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAllReferencedModuleTypesIsMutable();
        allReferencedModuleTypes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @param value The allReferencedModuleTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllReferencedModuleTypes(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureAllReferencedModuleTypesIsMutable();
        allReferencedModuleTypes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @param values The allReferencedModuleTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllAllReferencedModuleTypes(
          java.lang.Iterable<java.lang.String> values) {
        ensureAllReferencedModuleTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, allReferencedModuleTypes_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAllReferencedModuleTypes() {
        allReferencedModuleTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string all_referenced_module_types = 2;</code>
       * @param value The bytes of the allReferencedModuleTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllReferencedModuleTypesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureAllReferencedModuleTypesIsMutable();
        allReferencedModuleTypes_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:AssemblyAllTypes)
    }

    // @@protoc_insertion_point(class_scope:AssemblyAllTypes)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AssemblyAllTypes>
        PARSER = new com.google.protobuf.AbstractParser<AssemblyAllTypes>() {
      @java.lang.Override
      public AssemblyAllTypes parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AssemblyAllTypes getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TypeDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:TypeDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    int getAccessibilityValue();
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility();

    /**
     * <code>string fullname = 2;</code>
     * @return The fullname.
     */
    java.lang.String getFullname();
    /**
     * <code>string fullname = 2;</code>
     * @return The bytes for fullname.
     */
    com.google.protobuf.ByteString
        getFullnameBytes();

    /**
     * <code>string namespace = 3;</code>
     * @return The namespace.
     */
    java.lang.String getNamespace();
    /**
     * <code>string namespace = 3;</code>
     * @return The bytes for namespace.
     */
    com.google.protobuf.ByteString
        getNamespaceBytes();

    /**
     * <code>bool is_abstract = 4;</code>
     * @return The isAbstract.
     */
    boolean getIsAbstract();

    /**
     * <code>bool is_read_only = 5;</code>
     * @return The isReadOnly.
     */
    boolean getIsReadOnly();

    /**
     * <code>bool is_sealed = 6;</code>
     * @return The isSealed.
     */
    boolean getIsSealed();

    /**
     * <code>bool is_static = 7;</code>
     * @return The isStatic.
     */
    boolean getIsStatic();

    /**
     * <code>string declaring_outer_class = 8;</code>
     * @return The declaringOuterClass.
     */
    java.lang.String getDeclaringOuterClass();
    /**
     * <code>string declaring_outer_class = 8;</code>
     * @return The bytes for declaringOuterClass.
     */
    com.google.protobuf.ByteString
        getDeclaringOuterClassBytes();

    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> 
        getDirectBaseTypesList();
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDirectBaseTypes(int index);
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    int getDirectBaseTypesCount();
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
        getDirectBaseTypesOrBuilderList();
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDirectBaseTypesOrBuilder(
        int index);

    /**
     * <code>.TypeKindDef type_kind = 10;</code>
     * @return The enum numeric value on the wire for typeKind.
     */
    int getTypeKindValue();
    /**
     * <code>.TypeKindDef type_kind = 10;</code>
     * @return The typeKind.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind();

    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition> 
        getMethodsList();
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getMethods(int index);
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    int getMethodsCount();
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
        getMethodsOrBuilderList();
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getMethodsOrBuilder(
        int index);

    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition> 
        getFieldsList();
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition getFields(int index);
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    int getFieldsCount();
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder> 
        getFieldsOrBuilderList();
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder getFieldsOrBuilder(
        int index);

    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition> 
        getPropertiesList();
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition getProperties(int index);
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    int getPropertiesCount();
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder> 
        getPropertiesOrBuilderList();
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder getPropertiesOrBuilder(
        int index);

    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> 
        getNestedTypesList();
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getNestedTypes(int index);
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    int getNestedTypesCount();
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
        getNestedTypesOrBuilderList();
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getNestedTypesOrBuilder(
        int index);

    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> 
        getAttributesList();
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getAttributes(int index);
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    int getAttributesCount();
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> 
        getAttributesOrBuilderList();
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder getAttributesOrBuilder(
        int index);

    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> 
        getGenericTypeArgumentsList();
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getGenericTypeArguments(int index);
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    int getGenericTypeArgumentsCount();
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
        getGenericTypeArgumentsOrBuilderList();
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getGenericTypeArgumentsOrBuilder(
        int index);

    /**
     * <code>int32 array_dimensions = 17;</code>
     * @return The arrayDimensions.
     */
    int getArrayDimensions();

    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition> 
        getEventsList();
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition getEvents(int index);
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    int getEventsCount();
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder> 
        getEventsOrBuilderList();
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder getEventsOrBuilder(
        int index);

    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 19;</code>
     * @return The peToken.
     */
    int getPeToken();
  }
  /**
   * Protobuf type {@code TypeDefinition}
   */
  public static final class TypeDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:TypeDefinition)
      TypeDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TypeDefinition.newBuilder() to construct.
    private TypeDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TypeDefinition() {
      accessibility_ = 0;
      fullname_ = "";
      namespace_ = "";
      declaringOuterClass_ = "";
      directBaseTypes_ = java.util.Collections.emptyList();
      typeKind_ = 0;
      methods_ = java.util.Collections.emptyList();
      fields_ = java.util.Collections.emptyList();
      properties_ = java.util.Collections.emptyList();
      nestedTypes_ = java.util.Collections.emptyList();
      attributes_ = java.util.Collections.emptyList();
      genericTypeArguments_ = java.util.Collections.emptyList();
      events_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_TypeDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_TypeDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder.class);
    }

    public static final int ACCESSIBILITY_FIELD_NUMBER = 1;
    private int accessibility_ = 0;
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    @java.lang.Override public int getAccessibilityValue() {
      return accessibility_;
    }
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
    }

    public static final int FULLNAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fullname_ = "";
    /**
     * <code>string fullname = 2;</code>
     * @return The fullname.
     */
    @java.lang.Override
    public java.lang.String getFullname() {
      java.lang.Object ref = fullname_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fullname_ = s;
        return s;
      }
    }
    /**
     * <code>string fullname = 2;</code>
     * @return The bytes for fullname.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFullnameBytes() {
      java.lang.Object ref = fullname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fullname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAMESPACE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object namespace_ = "";
    /**
     * <code>string namespace = 3;</code>
     * @return The namespace.
     */
    @java.lang.Override
    public java.lang.String getNamespace() {
      java.lang.Object ref = namespace_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        namespace_ = s;
        return s;
      }
    }
    /**
     * <code>string namespace = 3;</code>
     * @return The bytes for namespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNamespaceBytes() {
      java.lang.Object ref = namespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        namespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IS_ABSTRACT_FIELD_NUMBER = 4;
    private boolean isAbstract_ = false;
    /**
     * <code>bool is_abstract = 4;</code>
     * @return The isAbstract.
     */
    @java.lang.Override
    public boolean getIsAbstract() {
      return isAbstract_;
    }

    public static final int IS_READ_ONLY_FIELD_NUMBER = 5;
    private boolean isReadOnly_ = false;
    /**
     * <code>bool is_read_only = 5;</code>
     * @return The isReadOnly.
     */
    @java.lang.Override
    public boolean getIsReadOnly() {
      return isReadOnly_;
    }

    public static final int IS_SEALED_FIELD_NUMBER = 6;
    private boolean isSealed_ = false;
    /**
     * <code>bool is_sealed = 6;</code>
     * @return The isSealed.
     */
    @java.lang.Override
    public boolean getIsSealed() {
      return isSealed_;
    }

    public static final int IS_STATIC_FIELD_NUMBER = 7;
    private boolean isStatic_ = false;
    /**
     * <code>bool is_static = 7;</code>
     * @return The isStatic.
     */
    @java.lang.Override
    public boolean getIsStatic() {
      return isStatic_;
    }

    public static final int DECLARING_OUTER_CLASS_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object declaringOuterClass_ = "";
    /**
     * <code>string declaring_outer_class = 8;</code>
     * @return The declaringOuterClass.
     */
    @java.lang.Override
    public java.lang.String getDeclaringOuterClass() {
      java.lang.Object ref = declaringOuterClass_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        declaringOuterClass_ = s;
        return s;
      }
    }
    /**
     * <code>string declaring_outer_class = 8;</code>
     * @return The bytes for declaringOuterClass.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDeclaringOuterClassBytes() {
      java.lang.Object ref = declaringOuterClass_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        declaringOuterClass_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DIRECT_BASE_TYPES_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> directBaseTypes_;
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> getDirectBaseTypesList() {
      return directBaseTypes_;
    }
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
        getDirectBaseTypesOrBuilderList() {
      return directBaseTypes_;
    }
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    @java.lang.Override
    public int getDirectBaseTypesCount() {
      return directBaseTypes_.size();
    }
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDirectBaseTypes(int index) {
      return directBaseTypes_.get(index);
    }
    /**
     * <code>repeated .TypeDefinition direct_base_types = 9;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDirectBaseTypesOrBuilder(
        int index) {
      return directBaseTypes_.get(index);
    }

    public static final int TYPE_KIND_FIELD_NUMBER = 10;
    private int typeKind_ = 0;
    /**
     * <code>.TypeKindDef type_kind = 10;</code>
     * @return The enum numeric value on the wire for typeKind.
     */
    @java.lang.Override public int getTypeKindValue() {
      return typeKind_;
    }
    /**
     * <code>.TypeKindDef type_kind = 10;</code>
     * @return The typeKind.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef result = soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.forNumber(typeKind_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.UNRECOGNIZED : result;
    }

    public static final int METHODS_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition> methods_;
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition> getMethodsList() {
      return methods_;
    }
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
        getMethodsOrBuilderList() {
      return methods_;
    }
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    @java.lang.Override
    public int getMethodsCount() {
      return methods_.size();
    }
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getMethods(int index) {
      return methods_.get(index);
    }
    /**
     * <code>repeated .MethodDefinition methods = 11;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getMethodsOrBuilder(
        int index) {
      return methods_.get(index);
    }

    public static final int FIELDS_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition> fields_;
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition> getFieldsList() {
      return fields_;
    }
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder> 
        getFieldsOrBuilderList() {
      return fields_;
    }
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    @java.lang.Override
    public int getFieldsCount() {
      return fields_.size();
    }
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition getFields(int index) {
      return fields_.get(index);
    }
    /**
     * <code>repeated .FieldDefinition fields = 12;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder getFieldsOrBuilder(
        int index) {
      return fields_.get(index);
    }

    public static final int PROPERTIES_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition> properties_;
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition> getPropertiesList() {
      return properties_;
    }
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder> 
        getPropertiesOrBuilderList() {
      return properties_;
    }
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    @java.lang.Override
    public int getPropertiesCount() {
      return properties_.size();
    }
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition getProperties(int index) {
      return properties_.get(index);
    }
    /**
     * <code>repeated .PropertyDefinition properties = 13;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder getPropertiesOrBuilder(
        int index) {
      return properties_.get(index);
    }

    public static final int NESTED_TYPES_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> nestedTypes_;
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> getNestedTypesList() {
      return nestedTypes_;
    }
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
        getNestedTypesOrBuilderList() {
      return nestedTypes_;
    }
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    @java.lang.Override
    public int getNestedTypesCount() {
      return nestedTypes_.size();
    }
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getNestedTypes(int index) {
      return nestedTypes_.get(index);
    }
    /**
     * <code>repeated .TypeDefinition nested_types = 14;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getNestedTypesOrBuilder(
        int index) {
      return nestedTypes_.get(index);
    }

    public static final int ATTRIBUTES_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> attributes_;
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> getAttributesList() {
      return attributes_;
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> 
        getAttributesOrBuilderList() {
      return attributes_;
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public int getAttributesCount() {
      return attributes_.size();
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getAttributes(int index) {
      return attributes_.get(index);
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder getAttributesOrBuilder(
        int index) {
      return attributes_.get(index);
    }

    public static final int GENERIC_TYPE_ARGUMENTS_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> genericTypeArguments_;
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> getGenericTypeArgumentsList() {
      return genericTypeArguments_;
    }
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
        getGenericTypeArgumentsOrBuilderList() {
      return genericTypeArguments_;
    }
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    @java.lang.Override
    public int getGenericTypeArgumentsCount() {
      return genericTypeArguments_.size();
    }
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getGenericTypeArguments(int index) {
      return genericTypeArguments_.get(index);
    }
    /**
     * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getGenericTypeArgumentsOrBuilder(
        int index) {
      return genericTypeArguments_.get(index);
    }

    public static final int ARRAY_DIMENSIONS_FIELD_NUMBER = 17;
    private int arrayDimensions_ = 0;
    /**
     * <code>int32 array_dimensions = 17;</code>
     * @return The arrayDimensions.
     */
    @java.lang.Override
    public int getArrayDimensions() {
      return arrayDimensions_;
    }

    public static final int EVENTS_FIELD_NUMBER = 18;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition> events_;
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition> getEventsList() {
      return events_;
    }
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder> 
        getEventsOrBuilderList() {
      return events_;
    }
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    @java.lang.Override
    public int getEventsCount() {
      return events_.size();
    }
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition getEvents(int index) {
      return events_.get(index);
    }
    /**
     * <code>repeated .EventDefinition events = 18;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder getEventsOrBuilder(
        int index) {
      return events_.get(index);
    }

    public static final int PE_TOKEN_FIELD_NUMBER = 19;
    private int peToken_ = 0;
    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 19;</code>
     * @return The peToken.
     */
    @java.lang.Override
    public int getPeToken() {
      return peToken_;
    }

    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 (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        output.writeEnum(1, accessibility_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fullname_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, fullname_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(namespace_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, namespace_);
      }
      if (isAbstract_ != false) {
        output.writeBool(4, isAbstract_);
      }
      if (isReadOnly_ != false) {
        output.writeBool(5, isReadOnly_);
      }
      if (isSealed_ != false) {
        output.writeBool(6, isSealed_);
      }
      if (isStatic_ != false) {
        output.writeBool(7, isStatic_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(declaringOuterClass_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, declaringOuterClass_);
      }
      for (int i = 0; i < directBaseTypes_.size(); i++) {
        output.writeMessage(9, directBaseTypes_.get(i));
      }
      if (typeKind_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.NO_TYPE.getNumber()) {
        output.writeEnum(10, typeKind_);
      }
      for (int i = 0; i < methods_.size(); i++) {
        output.writeMessage(11, methods_.get(i));
      }
      for (int i = 0; i < fields_.size(); i++) {
        output.writeMessage(12, fields_.get(i));
      }
      for (int i = 0; i < properties_.size(); i++) {
        output.writeMessage(13, properties_.get(i));
      }
      for (int i = 0; i < nestedTypes_.size(); i++) {
        output.writeMessage(14, nestedTypes_.get(i));
      }
      for (int i = 0; i < attributes_.size(); i++) {
        output.writeMessage(15, attributes_.get(i));
      }
      for (int i = 0; i < genericTypeArguments_.size(); i++) {
        output.writeMessage(16, genericTypeArguments_.get(i));
      }
      if (arrayDimensions_ != 0) {
        output.writeInt32(17, arrayDimensions_);
      }
      for (int i = 0; i < events_.size(); i++) {
        output.writeMessage(18, events_.get(i));
      }
      if (peToken_ != 0) {
        output.writeInt32(19, peToken_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, accessibility_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fullname_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, fullname_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(namespace_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, namespace_);
      }
      if (isAbstract_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isAbstract_);
      }
      if (isReadOnly_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, isReadOnly_);
      }
      if (isSealed_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, isSealed_);
      }
      if (isStatic_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, isStatic_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(declaringOuterClass_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, declaringOuterClass_);
      }
      for (int i = 0; i < directBaseTypes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, directBaseTypes_.get(i));
      }
      if (typeKind_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.NO_TYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(10, typeKind_);
      }
      for (int i = 0; i < methods_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, methods_.get(i));
      }
      for (int i = 0; i < fields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, fields_.get(i));
      }
      for (int i = 0; i < properties_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, properties_.get(i));
      }
      for (int i = 0; i < nestedTypes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, nestedTypes_.get(i));
      }
      for (int i = 0; i < attributes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, attributes_.get(i));
      }
      for (int i = 0; i < genericTypeArguments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, genericTypeArguments_.get(i));
      }
      if (arrayDimensions_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(17, arrayDimensions_);
      }
      for (int i = 0; i < events_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, events_.get(i));
      }
      if (peToken_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(19, peToken_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition other = (soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition) obj;

      if (accessibility_ != other.accessibility_) return false;
      if (!getFullname()
          .equals(other.getFullname())) return false;
      if (!getNamespace()
          .equals(other.getNamespace())) return false;
      if (getIsAbstract()
          != other.getIsAbstract()) return false;
      if (getIsReadOnly()
          != other.getIsReadOnly()) return false;
      if (getIsSealed()
          != other.getIsSealed()) return false;
      if (getIsStatic()
          != other.getIsStatic()) return false;
      if (!getDeclaringOuterClass()
          .equals(other.getDeclaringOuterClass())) return false;
      if (!getDirectBaseTypesList()
          .equals(other.getDirectBaseTypesList())) return false;
      if (typeKind_ != other.typeKind_) return false;
      if (!getMethodsList()
          .equals(other.getMethodsList())) return false;
      if (!getFieldsList()
          .equals(other.getFieldsList())) return false;
      if (!getPropertiesList()
          .equals(other.getPropertiesList())) return false;
      if (!getNestedTypesList()
          .equals(other.getNestedTypesList())) return false;
      if (!getAttributesList()
          .equals(other.getAttributesList())) return false;
      if (!getGenericTypeArgumentsList()
          .equals(other.getGenericTypeArgumentsList())) return false;
      if (getArrayDimensions()
          != other.getArrayDimensions()) return false;
      if (!getEventsList()
          .equals(other.getEventsList())) return false;
      if (getPeToken()
          != other.getPeToken()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCESSIBILITY_FIELD_NUMBER;
      hash = (53 * hash) + accessibility_;
      hash = (37 * hash) + FULLNAME_FIELD_NUMBER;
      hash = (53 * hash) + getFullname().hashCode();
      hash = (37 * hash) + NAMESPACE_FIELD_NUMBER;
      hash = (53 * hash) + getNamespace().hashCode();
      hash = (37 * hash) + IS_ABSTRACT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsAbstract());
      hash = (37 * hash) + IS_READ_ONLY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsReadOnly());
      hash = (37 * hash) + IS_SEALED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsSealed());
      hash = (37 * hash) + IS_STATIC_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsStatic());
      hash = (37 * hash) + DECLARING_OUTER_CLASS_FIELD_NUMBER;
      hash = (53 * hash) + getDeclaringOuterClass().hashCode();
      if (getDirectBaseTypesCount() > 0) {
        hash = (37 * hash) + DIRECT_BASE_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getDirectBaseTypesList().hashCode();
      }
      hash = (37 * hash) + TYPE_KIND_FIELD_NUMBER;
      hash = (53 * hash) + typeKind_;
      if (getMethodsCount() > 0) {
        hash = (37 * hash) + METHODS_FIELD_NUMBER;
        hash = (53 * hash) + getMethodsList().hashCode();
      }
      if (getFieldsCount() > 0) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getFieldsList().hashCode();
      }
      if (getPropertiesCount() > 0) {
        hash = (37 * hash) + PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + getPropertiesList().hashCode();
      }
      if (getNestedTypesCount() > 0) {
        hash = (37 * hash) + NESTED_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getNestedTypesList().hashCode();
      }
      if (getAttributesCount() > 0) {
        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
        hash = (53 * hash) + getAttributesList().hashCode();
      }
      if (getGenericTypeArgumentsCount() > 0) {
        hash = (37 * hash) + GENERIC_TYPE_ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getGenericTypeArgumentsList().hashCode();
      }
      hash = (37 * hash) + ARRAY_DIMENSIONS_FIELD_NUMBER;
      hash = (53 * hash) + getArrayDimensions();
      if (getEventsCount() > 0) {
        hash = (37 * hash) + EVENTS_FIELD_NUMBER;
        hash = (53 * hash) + getEventsList().hashCode();
      }
      hash = (37 * hash) + PE_TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getPeToken();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_TypeDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        accessibility_ = 0;
        fullname_ = "";
        namespace_ = "";
        isAbstract_ = false;
        isReadOnly_ = false;
        isSealed_ = false;
        isStatic_ = false;
        declaringOuterClass_ = "";
        if (directBaseTypesBuilder_ == null) {
          directBaseTypes_ = java.util.Collections.emptyList();
        } else {
          directBaseTypes_ = null;
          directBaseTypesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        typeKind_ = 0;
        if (methodsBuilder_ == null) {
          methods_ = java.util.Collections.emptyList();
        } else {
          methods_ = null;
          methodsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
        } else {
          fields_ = null;
          fieldsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000800);
        if (propertiesBuilder_ == null) {
          properties_ = java.util.Collections.emptyList();
        } else {
          properties_ = null;
          propertiesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00001000);
        if (nestedTypesBuilder_ == null) {
          nestedTypes_ = java.util.Collections.emptyList();
        } else {
          nestedTypes_ = null;
          nestedTypesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00002000);
        if (attributesBuilder_ == null) {
          attributes_ = java.util.Collections.emptyList();
        } else {
          attributes_ = null;
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00004000);
        if (genericTypeArgumentsBuilder_ == null) {
          genericTypeArguments_ = java.util.Collections.emptyList();
        } else {
          genericTypeArguments_ = null;
          genericTypeArgumentsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00008000);
        arrayDimensions_ = 0;
        if (eventsBuilder_ == null) {
          events_ = java.util.Collections.emptyList();
        } else {
          events_ = null;
          eventsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00020000);
        peToken_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_TypeDefinition_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition result = new soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition result) {
        if (directBaseTypesBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            directBaseTypes_ = java.util.Collections.unmodifiableList(directBaseTypes_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.directBaseTypes_ = directBaseTypes_;
        } else {
          result.directBaseTypes_ = directBaseTypesBuilder_.build();
        }
        if (methodsBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0)) {
            methods_ = java.util.Collections.unmodifiableList(methods_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.methods_ = methods_;
        } else {
          result.methods_ = methodsBuilder_.build();
        }
        if (fieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0)) {
            fields_ = java.util.Collections.unmodifiableList(fields_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.fields_ = fields_;
        } else {
          result.fields_ = fieldsBuilder_.build();
        }
        if (propertiesBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0)) {
            properties_ = java.util.Collections.unmodifiableList(properties_);
            bitField0_ = (bitField0_ & ~0x00001000);
          }
          result.properties_ = properties_;
        } else {
          result.properties_ = propertiesBuilder_.build();
        }
        if (nestedTypesBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0)) {
            nestedTypes_ = java.util.Collections.unmodifiableList(nestedTypes_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.nestedTypes_ = nestedTypes_;
        } else {
          result.nestedTypes_ = nestedTypesBuilder_.build();
        }
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0)) {
            attributes_ = java.util.Collections.unmodifiableList(attributes_);
            bitField0_ = (bitField0_ & ~0x00004000);
          }
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
        if (genericTypeArgumentsBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0)) {
            genericTypeArguments_ = java.util.Collections.unmodifiableList(genericTypeArguments_);
            bitField0_ = (bitField0_ & ~0x00008000);
          }
          result.genericTypeArguments_ = genericTypeArguments_;
        } else {
          result.genericTypeArguments_ = genericTypeArgumentsBuilder_.build();
        }
        if (eventsBuilder_ == null) {
          if (((bitField0_ & 0x00020000) != 0)) {
            events_ = java.util.Collections.unmodifiableList(events_);
            bitField0_ = (bitField0_ & ~0x00020000);
          }
          result.events_ = events_;
        } else {
          result.events_ = eventsBuilder_.build();
        }
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.accessibility_ = accessibility_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fullname_ = fullname_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.namespace_ = namespace_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.isAbstract_ = isAbstract_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.isReadOnly_ = isReadOnly_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.isSealed_ = isSealed_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.isStatic_ = isStatic_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.declaringOuterClass_ = declaringOuterClass_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.typeKind_ = typeKind_;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.arrayDimensions_ = arrayDimensions_;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.peToken_ = peToken_;
        }
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) return this;
        if (other.accessibility_ != 0) {
          setAccessibilityValue(other.getAccessibilityValue());
        }
        if (!other.getFullname().isEmpty()) {
          fullname_ = other.fullname_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getNamespace().isEmpty()) {
          namespace_ = other.namespace_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.getIsAbstract() != false) {
          setIsAbstract(other.getIsAbstract());
        }
        if (other.getIsReadOnly() != false) {
          setIsReadOnly(other.getIsReadOnly());
        }
        if (other.getIsSealed() != false) {
          setIsSealed(other.getIsSealed());
        }
        if (other.getIsStatic() != false) {
          setIsStatic(other.getIsStatic());
        }
        if (!other.getDeclaringOuterClass().isEmpty()) {
          declaringOuterClass_ = other.declaringOuterClass_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (directBaseTypesBuilder_ == null) {
          if (!other.directBaseTypes_.isEmpty()) {
            if (directBaseTypes_.isEmpty()) {
              directBaseTypes_ = other.directBaseTypes_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureDirectBaseTypesIsMutable();
              directBaseTypes_.addAll(other.directBaseTypes_);
            }
            onChanged();
          }
        } else {
          if (!other.directBaseTypes_.isEmpty()) {
            if (directBaseTypesBuilder_.isEmpty()) {
              directBaseTypesBuilder_.dispose();
              directBaseTypesBuilder_ = null;
              directBaseTypes_ = other.directBaseTypes_;
              bitField0_ = (bitField0_ & ~0x00000100);
              directBaseTypesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDirectBaseTypesFieldBuilder() : null;
            } else {
              directBaseTypesBuilder_.addAllMessages(other.directBaseTypes_);
            }
          }
        }
        if (other.typeKind_ != 0) {
          setTypeKindValue(other.getTypeKindValue());
        }
        if (methodsBuilder_ == null) {
          if (!other.methods_.isEmpty()) {
            if (methods_.isEmpty()) {
              methods_ = other.methods_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureMethodsIsMutable();
              methods_.addAll(other.methods_);
            }
            onChanged();
          }
        } else {
          if (!other.methods_.isEmpty()) {
            if (methodsBuilder_.isEmpty()) {
              methodsBuilder_.dispose();
              methodsBuilder_ = null;
              methods_ = other.methods_;
              bitField0_ = (bitField0_ & ~0x00000400);
              methodsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMethodsFieldBuilder() : null;
            } else {
              methodsBuilder_.addAllMessages(other.methods_);
            }
          }
        }
        if (fieldsBuilder_ == null) {
          if (!other.fields_.isEmpty()) {
            if (fields_.isEmpty()) {
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureFieldsIsMutable();
              fields_.addAll(other.fields_);
            }
            onChanged();
          }
        } else {
          if (!other.fields_.isEmpty()) {
            if (fieldsBuilder_.isEmpty()) {
              fieldsBuilder_.dispose();
              fieldsBuilder_ = null;
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000800);
              fieldsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFieldsFieldBuilder() : null;
            } else {
              fieldsBuilder_.addAllMessages(other.fields_);
            }
          }
        }
        if (propertiesBuilder_ == null) {
          if (!other.properties_.isEmpty()) {
            if (properties_.isEmpty()) {
              properties_ = other.properties_;
              bitField0_ = (bitField0_ & ~0x00001000);
            } else {
              ensurePropertiesIsMutable();
              properties_.addAll(other.properties_);
            }
            onChanged();
          }
        } else {
          if (!other.properties_.isEmpty()) {
            if (propertiesBuilder_.isEmpty()) {
              propertiesBuilder_.dispose();
              propertiesBuilder_ = null;
              properties_ = other.properties_;
              bitField0_ = (bitField0_ & ~0x00001000);
              propertiesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPropertiesFieldBuilder() : null;
            } else {
              propertiesBuilder_.addAllMessages(other.properties_);
            }
          }
        }
        if (nestedTypesBuilder_ == null) {
          if (!other.nestedTypes_.isEmpty()) {
            if (nestedTypes_.isEmpty()) {
              nestedTypes_ = other.nestedTypes_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureNestedTypesIsMutable();
              nestedTypes_.addAll(other.nestedTypes_);
            }
            onChanged();
          }
        } else {
          if (!other.nestedTypes_.isEmpty()) {
            if (nestedTypesBuilder_.isEmpty()) {
              nestedTypesBuilder_.dispose();
              nestedTypesBuilder_ = null;
              nestedTypes_ = other.nestedTypes_;
              bitField0_ = (bitField0_ & ~0x00002000);
              nestedTypesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNestedTypesFieldBuilder() : null;
            } else {
              nestedTypesBuilder_.addAllMessages(other.nestedTypes_);
            }
          }
        }
        if (attributesBuilder_ == null) {
          if (!other.attributes_.isEmpty()) {
            if (attributes_.isEmpty()) {
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00004000);
            } else {
              ensureAttributesIsMutable();
              attributes_.addAll(other.attributes_);
            }
            onChanged();
          }
        } else {
          if (!other.attributes_.isEmpty()) {
            if (attributesBuilder_.isEmpty()) {
              attributesBuilder_.dispose();
              attributesBuilder_ = null;
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00004000);
              attributesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttributesFieldBuilder() : null;
            } else {
              attributesBuilder_.addAllMessages(other.attributes_);
            }
          }
        }
        if (genericTypeArgumentsBuilder_ == null) {
          if (!other.genericTypeArguments_.isEmpty()) {
            if (genericTypeArguments_.isEmpty()) {
              genericTypeArguments_ = other.genericTypeArguments_;
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              ensureGenericTypeArgumentsIsMutable();
              genericTypeArguments_.addAll(other.genericTypeArguments_);
            }
            onChanged();
          }
        } else {
          if (!other.genericTypeArguments_.isEmpty()) {
            if (genericTypeArgumentsBuilder_.isEmpty()) {
              genericTypeArgumentsBuilder_.dispose();
              genericTypeArgumentsBuilder_ = null;
              genericTypeArguments_ = other.genericTypeArguments_;
              bitField0_ = (bitField0_ & ~0x00008000);
              genericTypeArgumentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getGenericTypeArgumentsFieldBuilder() : null;
            } else {
              genericTypeArgumentsBuilder_.addAllMessages(other.genericTypeArguments_);
            }
          }
        }
        if (other.getArrayDimensions() != 0) {
          setArrayDimensions(other.getArrayDimensions());
        }
        if (eventsBuilder_ == null) {
          if (!other.events_.isEmpty()) {
            if (events_.isEmpty()) {
              events_ = other.events_;
              bitField0_ = (bitField0_ & ~0x00020000);
            } else {
              ensureEventsIsMutable();
              events_.addAll(other.events_);
            }
            onChanged();
          }
        } else {
          if (!other.events_.isEmpty()) {
            if (eventsBuilder_.isEmpty()) {
              eventsBuilder_.dispose();
              eventsBuilder_ = null;
              events_ = other.events_;
              bitField0_ = (bitField0_ & ~0x00020000);
              eventsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEventsFieldBuilder() : null;
            } else {
              eventsBuilder_.addAllMessages(other.events_);
            }
          }
        }
        if (other.getPeToken() != 0) {
          setPeToken(other.getPeToken());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                accessibility_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                fullname_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                namespace_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                isAbstract_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                isReadOnly_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                isSealed_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                isStatic_ = input.readBool();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 66: {
                declaringOuterClass_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.parser(),
                        extensionRegistry);
                if (directBaseTypesBuilder_ == null) {
                  ensureDirectBaseTypesIsMutable();
                  directBaseTypes_.add(m);
                } else {
                  directBaseTypesBuilder_.addMessage(m);
                }
                break;
              } // case 74
              case 80: {
                typeKind_ = input.readEnum();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              case 90: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.parser(),
                        extensionRegistry);
                if (methodsBuilder_ == null) {
                  ensureMethodsIsMutable();
                  methods_.add(m);
                } else {
                  methodsBuilder_.addMessage(m);
                }
                break;
              } // case 90
              case 98: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.parser(),
                        extensionRegistry);
                if (fieldsBuilder_ == null) {
                  ensureFieldsIsMutable();
                  fields_.add(m);
                } else {
                  fieldsBuilder_.addMessage(m);
                }
                break;
              } // case 98
              case 106: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.parser(),
                        extensionRegistry);
                if (propertiesBuilder_ == null) {
                  ensurePropertiesIsMutable();
                  properties_.add(m);
                } else {
                  propertiesBuilder_.addMessage(m);
                }
                break;
              } // case 106
              case 114: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.parser(),
                        extensionRegistry);
                if (nestedTypesBuilder_ == null) {
                  ensureNestedTypesIsMutable();
                  nestedTypes_.add(m);
                } else {
                  nestedTypesBuilder_.addMessage(m);
                }
                break;
              } // case 114
              case 122: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.parser(),
                        extensionRegistry);
                if (attributesBuilder_ == null) {
                  ensureAttributesIsMutable();
                  attributes_.add(m);
                } else {
                  attributesBuilder_.addMessage(m);
                }
                break;
              } // case 122
              case 130: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.parser(),
                        extensionRegistry);
                if (genericTypeArgumentsBuilder_ == null) {
                  ensureGenericTypeArgumentsIsMutable();
                  genericTypeArguments_.add(m);
                } else {
                  genericTypeArgumentsBuilder_.addMessage(m);
                }
                break;
              } // case 130
              case 136: {
                arrayDimensions_ = input.readInt32();
                bitField0_ |= 0x00010000;
                break;
              } // case 136
              case 146: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.parser(),
                        extensionRegistry);
                if (eventsBuilder_ == null) {
                  ensureEventsIsMutable();
                  events_.add(m);
                } else {
                  eventsBuilder_.addMessage(m);
                }
                break;
              } // case 146
              case 152: {
                peToken_ = input.readInt32();
                bitField0_ |= 0x00040000;
                break;
              } // case 152
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int accessibility_ = 0;
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The enum numeric value on the wire for accessibility.
       */
      @java.lang.Override public int getAccessibilityValue() {
        return accessibility_;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The enum numeric value on the wire for accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibilityValue(int value) {
        accessibility_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The accessibility.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibility(soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        accessibility_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessibility() {
        bitField0_ = (bitField0_ & ~0x00000001);
        accessibility_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object fullname_ = "";
      /**
       * <code>string fullname = 2;</code>
       * @return The fullname.
       */
      public java.lang.String getFullname() {
        java.lang.Object ref = fullname_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fullname_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string fullname = 2;</code>
       * @return The bytes for fullname.
       */
      public com.google.protobuf.ByteString
          getFullnameBytes() {
        java.lang.Object ref = fullname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fullname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string fullname = 2;</code>
       * @param value The fullname to set.
       * @return This builder for chaining.
       */
      public Builder setFullname(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fullname_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string fullname = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFullname() {
        fullname_ = getDefaultInstance().getFullname();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string fullname = 2;</code>
       * @param value The bytes for fullname to set.
       * @return This builder for chaining.
       */
      public Builder setFullnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fullname_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object namespace_ = "";
      /**
       * <code>string namespace = 3;</code>
       * @return The namespace.
       */
      public java.lang.String getNamespace() {
        java.lang.Object ref = namespace_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          namespace_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string namespace = 3;</code>
       * @return The bytes for namespace.
       */
      public com.google.protobuf.ByteString
          getNamespaceBytes() {
        java.lang.Object ref = namespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          namespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string namespace = 3;</code>
       * @param value The namespace to set.
       * @return This builder for chaining.
       */
      public Builder setNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        namespace_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>string namespace = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNamespace() {
        namespace_ = getDefaultInstance().getNamespace();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>string namespace = 3;</code>
       * @param value The bytes for namespace to set.
       * @return This builder for chaining.
       */
      public Builder setNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        namespace_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private boolean isAbstract_ ;
      /**
       * <code>bool is_abstract = 4;</code>
       * @return The isAbstract.
       */
      @java.lang.Override
      public boolean getIsAbstract() {
        return isAbstract_;
      }
      /**
       * <code>bool is_abstract = 4;</code>
       * @param value The isAbstract to set.
       * @return This builder for chaining.
       */
      public Builder setIsAbstract(boolean value) {
        
        isAbstract_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_abstract = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsAbstract() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isAbstract_ = false;
        onChanged();
        return this;
      }

      private boolean isReadOnly_ ;
      /**
       * <code>bool is_read_only = 5;</code>
       * @return The isReadOnly.
       */
      @java.lang.Override
      public boolean getIsReadOnly() {
        return isReadOnly_;
      }
      /**
       * <code>bool is_read_only = 5;</code>
       * @param value The isReadOnly to set.
       * @return This builder for chaining.
       */
      public Builder setIsReadOnly(boolean value) {
        
        isReadOnly_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_read_only = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isReadOnly_ = false;
        onChanged();
        return this;
      }

      private boolean isSealed_ ;
      /**
       * <code>bool is_sealed = 6;</code>
       * @return The isSealed.
       */
      @java.lang.Override
      public boolean getIsSealed() {
        return isSealed_;
      }
      /**
       * <code>bool is_sealed = 6;</code>
       * @param value The isSealed to set.
       * @return This builder for chaining.
       */
      public Builder setIsSealed(boolean value) {
        
        isSealed_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_sealed = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSealed() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isSealed_ = false;
        onChanged();
        return this;
      }

      private boolean isStatic_ ;
      /**
       * <code>bool is_static = 7;</code>
       * @return The isStatic.
       */
      @java.lang.Override
      public boolean getIsStatic() {
        return isStatic_;
      }
      /**
       * <code>bool is_static = 7;</code>
       * @param value The isStatic to set.
       * @return This builder for chaining.
       */
      public Builder setIsStatic(boolean value) {
        
        isStatic_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_static = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsStatic() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isStatic_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object declaringOuterClass_ = "";
      /**
       * <code>string declaring_outer_class = 8;</code>
       * @return The declaringOuterClass.
       */
      public java.lang.String getDeclaringOuterClass() {
        java.lang.Object ref = declaringOuterClass_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          declaringOuterClass_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string declaring_outer_class = 8;</code>
       * @return The bytes for declaringOuterClass.
       */
      public com.google.protobuf.ByteString
          getDeclaringOuterClassBytes() {
        java.lang.Object ref = declaringOuterClass_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          declaringOuterClass_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string declaring_outer_class = 8;</code>
       * @param value The declaringOuterClass to set.
       * @return This builder for chaining.
       */
      public Builder setDeclaringOuterClass(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        declaringOuterClass_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>string declaring_outer_class = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeclaringOuterClass() {
        declaringOuterClass_ = getDefaultInstance().getDeclaringOuterClass();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>string declaring_outer_class = 8;</code>
       * @param value The bytes for declaringOuterClass to set.
       * @return This builder for chaining.
       */
      public Builder setDeclaringOuterClassBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        declaringOuterClass_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> directBaseTypes_ =
        java.util.Collections.emptyList();
      private void ensureDirectBaseTypesIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          directBaseTypes_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition>(directBaseTypes_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> directBaseTypesBuilder_;

      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> getDirectBaseTypesList() {
        if (directBaseTypesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(directBaseTypes_);
        } else {
          return directBaseTypesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public int getDirectBaseTypesCount() {
        if (directBaseTypesBuilder_ == null) {
          return directBaseTypes_.size();
        } else {
          return directBaseTypesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDirectBaseTypes(int index) {
        if (directBaseTypesBuilder_ == null) {
          return directBaseTypes_.get(index);
        } else {
          return directBaseTypesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder setDirectBaseTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (directBaseTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDirectBaseTypesIsMutable();
          directBaseTypes_.set(index, value);
          onChanged();
        } else {
          directBaseTypesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder setDirectBaseTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (directBaseTypesBuilder_ == null) {
          ensureDirectBaseTypesIsMutable();
          directBaseTypes_.set(index, builderForValue.build());
          onChanged();
        } else {
          directBaseTypesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder addDirectBaseTypes(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (directBaseTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDirectBaseTypesIsMutable();
          directBaseTypes_.add(value);
          onChanged();
        } else {
          directBaseTypesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder addDirectBaseTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (directBaseTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDirectBaseTypesIsMutable();
          directBaseTypes_.add(index, value);
          onChanged();
        } else {
          directBaseTypesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder addDirectBaseTypes(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (directBaseTypesBuilder_ == null) {
          ensureDirectBaseTypesIsMutable();
          directBaseTypes_.add(builderForValue.build());
          onChanged();
        } else {
          directBaseTypesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder addDirectBaseTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (directBaseTypesBuilder_ == null) {
          ensureDirectBaseTypesIsMutable();
          directBaseTypes_.add(index, builderForValue.build());
          onChanged();
        } else {
          directBaseTypesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder addAllDirectBaseTypes(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> values) {
        if (directBaseTypesBuilder_ == null) {
          ensureDirectBaseTypesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, directBaseTypes_);
          onChanged();
        } else {
          directBaseTypesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder clearDirectBaseTypes() {
        if (directBaseTypesBuilder_ == null) {
          directBaseTypes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          directBaseTypesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public Builder removeDirectBaseTypes(int index) {
        if (directBaseTypesBuilder_ == null) {
          ensureDirectBaseTypesIsMutable();
          directBaseTypes_.remove(index);
          onChanged();
        } else {
          directBaseTypesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getDirectBaseTypesBuilder(
          int index) {
        return getDirectBaseTypesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDirectBaseTypesOrBuilder(
          int index) {
        if (directBaseTypesBuilder_ == null) {
          return directBaseTypes_.get(index);  } else {
          return directBaseTypesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
           getDirectBaseTypesOrBuilderList() {
        if (directBaseTypesBuilder_ != null) {
          return directBaseTypesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(directBaseTypes_);
        }
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder addDirectBaseTypesBuilder() {
        return getDirectBaseTypesFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder addDirectBaseTypesBuilder(
          int index) {
        return getDirectBaseTypesFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .TypeDefinition direct_base_types = 9;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder> 
           getDirectBaseTypesBuilderList() {
        return getDirectBaseTypesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getDirectBaseTypesFieldBuilder() {
        if (directBaseTypesBuilder_ == null) {
          directBaseTypesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  directBaseTypes_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          directBaseTypes_ = null;
        }
        return directBaseTypesBuilder_;
      }

      private int typeKind_ = 0;
      /**
       * <code>.TypeKindDef type_kind = 10;</code>
       * @return The enum numeric value on the wire for typeKind.
       */
      @java.lang.Override public int getTypeKindValue() {
        return typeKind_;
      }
      /**
       * <code>.TypeKindDef type_kind = 10;</code>
       * @param value The enum numeric value on the wire for typeKind to set.
       * @return This builder for chaining.
       */
      public Builder setTypeKindValue(int value) {
        typeKind_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeKindDef type_kind = 10;</code>
       * @return The typeKind.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef result = soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.forNumber(typeKind_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.UNRECOGNIZED : result;
      }
      /**
       * <code>.TypeKindDef type_kind = 10;</code>
       * @param value The typeKind to set.
       * @return This builder for chaining.
       */
      public Builder setTypeKind(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000200;
        typeKind_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.TypeKindDef type_kind = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearTypeKind() {
        bitField0_ = (bitField0_ & ~0x00000200);
        typeKind_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition> methods_ =
        java.util.Collections.emptyList();
      private void ensureMethodsIsMutable() {
        if (!((bitField0_ & 0x00000400) != 0)) {
          methods_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition>(methods_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> methodsBuilder_;

      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition> getMethodsList() {
        if (methodsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(methods_);
        } else {
          return methodsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public int getMethodsCount() {
        if (methodsBuilder_ == null) {
          return methods_.size();
        } else {
          return methodsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getMethods(int index) {
        if (methodsBuilder_ == null) {
          return methods_.get(index);
        } else {
          return methodsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder setMethods(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (methodsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMethodsIsMutable();
          methods_.set(index, value);
          onChanged();
        } else {
          methodsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder setMethods(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder builderForValue) {
        if (methodsBuilder_ == null) {
          ensureMethodsIsMutable();
          methods_.set(index, builderForValue.build());
          onChanged();
        } else {
          methodsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder addMethods(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (methodsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMethodsIsMutable();
          methods_.add(value);
          onChanged();
        } else {
          methodsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder addMethods(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (methodsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMethodsIsMutable();
          methods_.add(index, value);
          onChanged();
        } else {
          methodsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder addMethods(
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder builderForValue) {
        if (methodsBuilder_ == null) {
          ensureMethodsIsMutable();
          methods_.add(builderForValue.build());
          onChanged();
        } else {
          methodsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder addMethods(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder builderForValue) {
        if (methodsBuilder_ == null) {
          ensureMethodsIsMutable();
          methods_.add(index, builderForValue.build());
          onChanged();
        } else {
          methodsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder addAllMethods(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition> values) {
        if (methodsBuilder_ == null) {
          ensureMethodsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, methods_);
          onChanged();
        } else {
          methodsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder clearMethods() {
        if (methodsBuilder_ == null) {
          methods_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          methodsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public Builder removeMethods(int index) {
        if (methodsBuilder_ == null) {
          ensureMethodsIsMutable();
          methods_.remove(index);
          onChanged();
        } else {
          methodsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder getMethodsBuilder(
          int index) {
        return getMethodsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getMethodsOrBuilder(
          int index) {
        if (methodsBuilder_ == null) {
          return methods_.get(index);  } else {
          return methodsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
           getMethodsOrBuilderList() {
        if (methodsBuilder_ != null) {
          return methodsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(methods_);
        }
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder addMethodsBuilder() {
        return getMethodsFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder addMethodsBuilder(
          int index) {
        return getMethodsFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .MethodDefinition methods = 11;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder> 
           getMethodsBuilderList() {
        return getMethodsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
          getMethodsFieldBuilder() {
        if (methodsBuilder_ == null) {
          methodsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder>(
                  methods_,
                  ((bitField0_ & 0x00000400) != 0),
                  getParentForChildren(),
                  isClean());
          methods_ = null;
        }
        return methodsBuilder_;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition> fields_ =
        java.util.Collections.emptyList();
      private void ensureFieldsIsMutable() {
        if (!((bitField0_ & 0x00000800) != 0)) {
          fields_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition>(fields_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder> fieldsBuilder_;

      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition> getFieldsList() {
        if (fieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fields_);
        } else {
          return fieldsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public int getFieldsCount() {
        if (fieldsBuilder_ == null) {
          return fields_.size();
        } else {
          return fieldsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition getFields(int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);
        } else {
          return fieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder setFields(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.set(index, value);
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder setFields(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder addFields(soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder addFields(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(index, value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder addFields(
          soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder addFields(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder addAllFields(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition> values) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fields_);
          onChanged();
        } else {
          fieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public Builder removeFields(int index) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.remove(index);
          onChanged();
        } else {
          fieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder getFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder getFieldsOrBuilder(
          int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);  } else {
          return fieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder> 
           getFieldsOrBuilderList() {
        if (fieldsBuilder_ != null) {
          return fieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fields_);
        }
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder addFieldsBuilder() {
        return getFieldsFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder addFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .FieldDefinition fields = 12;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder> 
           getFieldsBuilderList() {
        return getFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder> 
          getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinitionOrBuilder>(
                  fields_,
                  ((bitField0_ & 0x00000800) != 0),
                  getParentForChildren(),
                  isClean());
          fields_ = null;
        }
        return fieldsBuilder_;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition> properties_ =
        java.util.Collections.emptyList();
      private void ensurePropertiesIsMutable() {
        if (!((bitField0_ & 0x00001000) != 0)) {
          properties_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition>(properties_);
          bitField0_ |= 0x00001000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder> propertiesBuilder_;

      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition> getPropertiesList() {
        if (propertiesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(properties_);
        } else {
          return propertiesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public int getPropertiesCount() {
        if (propertiesBuilder_ == null) {
          return properties_.size();
        } else {
          return propertiesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition getProperties(int index) {
        if (propertiesBuilder_ == null) {
          return properties_.get(index);
        } else {
          return propertiesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder setProperties(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition value) {
        if (propertiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePropertiesIsMutable();
          properties_.set(index, value);
          onChanged();
        } else {
          propertiesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder setProperties(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder builderForValue) {
        if (propertiesBuilder_ == null) {
          ensurePropertiesIsMutable();
          properties_.set(index, builderForValue.build());
          onChanged();
        } else {
          propertiesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder addProperties(soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition value) {
        if (propertiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePropertiesIsMutable();
          properties_.add(value);
          onChanged();
        } else {
          propertiesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder addProperties(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition value) {
        if (propertiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePropertiesIsMutable();
          properties_.add(index, value);
          onChanged();
        } else {
          propertiesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder addProperties(
          soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder builderForValue) {
        if (propertiesBuilder_ == null) {
          ensurePropertiesIsMutable();
          properties_.add(builderForValue.build());
          onChanged();
        } else {
          propertiesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder addProperties(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder builderForValue) {
        if (propertiesBuilder_ == null) {
          ensurePropertiesIsMutable();
          properties_.add(index, builderForValue.build());
          onChanged();
        } else {
          propertiesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder addAllProperties(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition> values) {
        if (propertiesBuilder_ == null) {
          ensurePropertiesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, properties_);
          onChanged();
        } else {
          propertiesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder clearProperties() {
        if (propertiesBuilder_ == null) {
          properties_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          onChanged();
        } else {
          propertiesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public Builder removeProperties(int index) {
        if (propertiesBuilder_ == null) {
          ensurePropertiesIsMutable();
          properties_.remove(index);
          onChanged();
        } else {
          propertiesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder getPropertiesBuilder(
          int index) {
        return getPropertiesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder getPropertiesOrBuilder(
          int index) {
        if (propertiesBuilder_ == null) {
          return properties_.get(index);  } else {
          return propertiesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder> 
           getPropertiesOrBuilderList() {
        if (propertiesBuilder_ != null) {
          return propertiesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(properties_);
        }
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder addPropertiesBuilder() {
        return getPropertiesFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder addPropertiesBuilder(
          int index) {
        return getPropertiesFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .PropertyDefinition properties = 13;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder> 
           getPropertiesBuilderList() {
        return getPropertiesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder> 
          getPropertiesFieldBuilder() {
        if (propertiesBuilder_ == null) {
          propertiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinitionOrBuilder>(
                  properties_,
                  ((bitField0_ & 0x00001000) != 0),
                  getParentForChildren(),
                  isClean());
          properties_ = null;
        }
        return propertiesBuilder_;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> nestedTypes_ =
        java.util.Collections.emptyList();
      private void ensureNestedTypesIsMutable() {
        if (!((bitField0_ & 0x00002000) != 0)) {
          nestedTypes_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition>(nestedTypes_);
          bitField0_ |= 0x00002000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> nestedTypesBuilder_;

      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> getNestedTypesList() {
        if (nestedTypesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nestedTypes_);
        } else {
          return nestedTypesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public int getNestedTypesCount() {
        if (nestedTypesBuilder_ == null) {
          return nestedTypes_.size();
        } else {
          return nestedTypesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getNestedTypes(int index) {
        if (nestedTypesBuilder_ == null) {
          return nestedTypes_.get(index);
        } else {
          return nestedTypesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder setNestedTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (nestedTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedTypesIsMutable();
          nestedTypes_.set(index, value);
          onChanged();
        } else {
          nestedTypesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder setNestedTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (nestedTypesBuilder_ == null) {
          ensureNestedTypesIsMutable();
          nestedTypes_.set(index, builderForValue.build());
          onChanged();
        } else {
          nestedTypesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder addNestedTypes(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (nestedTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedTypesIsMutable();
          nestedTypes_.add(value);
          onChanged();
        } else {
          nestedTypesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder addNestedTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (nestedTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNestedTypesIsMutable();
          nestedTypes_.add(index, value);
          onChanged();
        } else {
          nestedTypesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder addNestedTypes(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (nestedTypesBuilder_ == null) {
          ensureNestedTypesIsMutable();
          nestedTypes_.add(builderForValue.build());
          onChanged();
        } else {
          nestedTypesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder addNestedTypes(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (nestedTypesBuilder_ == null) {
          ensureNestedTypesIsMutable();
          nestedTypes_.add(index, builderForValue.build());
          onChanged();
        } else {
          nestedTypesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder addAllNestedTypes(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> values) {
        if (nestedTypesBuilder_ == null) {
          ensureNestedTypesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, nestedTypes_);
          onChanged();
        } else {
          nestedTypesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder clearNestedTypes() {
        if (nestedTypesBuilder_ == null) {
          nestedTypes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
        } else {
          nestedTypesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public Builder removeNestedTypes(int index) {
        if (nestedTypesBuilder_ == null) {
          ensureNestedTypesIsMutable();
          nestedTypes_.remove(index);
          onChanged();
        } else {
          nestedTypesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getNestedTypesBuilder(
          int index) {
        return getNestedTypesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getNestedTypesOrBuilder(
          int index) {
        if (nestedTypesBuilder_ == null) {
          return nestedTypes_.get(index);  } else {
          return nestedTypesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
           getNestedTypesOrBuilderList() {
        if (nestedTypesBuilder_ != null) {
          return nestedTypesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nestedTypes_);
        }
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder addNestedTypesBuilder() {
        return getNestedTypesFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder addNestedTypesBuilder(
          int index) {
        return getNestedTypesFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .TypeDefinition nested_types = 14;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder> 
           getNestedTypesBuilderList() {
        return getNestedTypesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getNestedTypesFieldBuilder() {
        if (nestedTypesBuilder_ == null) {
          nestedTypesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  nestedTypes_,
                  ((bitField0_ & 0x00002000) != 0),
                  getParentForChildren(),
                  isClean());
          nestedTypes_ = null;
        }
        return nestedTypesBuilder_;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> attributes_ =
        java.util.Collections.emptyList();
      private void ensureAttributesIsMutable() {
        if (!((bitField0_ & 0x00004000) != 0)) {
          attributes_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition>(attributes_);
          bitField0_ |= 0x00004000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> attributesBuilder_;

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

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> genericTypeArguments_ =
        java.util.Collections.emptyList();
      private void ensureGenericTypeArgumentsIsMutable() {
        if (!((bitField0_ & 0x00008000) != 0)) {
          genericTypeArguments_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition>(genericTypeArguments_);
          bitField0_ |= 0x00008000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> genericTypeArgumentsBuilder_;

      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> getGenericTypeArgumentsList() {
        if (genericTypeArgumentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(genericTypeArguments_);
        } else {
          return genericTypeArgumentsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public int getGenericTypeArgumentsCount() {
        if (genericTypeArgumentsBuilder_ == null) {
          return genericTypeArguments_.size();
        } else {
          return genericTypeArgumentsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getGenericTypeArguments(int index) {
        if (genericTypeArgumentsBuilder_ == null) {
          return genericTypeArguments_.get(index);
        } else {
          return genericTypeArgumentsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder setGenericTypeArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (genericTypeArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGenericTypeArgumentsIsMutable();
          genericTypeArguments_.set(index, value);
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder setGenericTypeArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (genericTypeArgumentsBuilder_ == null) {
          ensureGenericTypeArgumentsIsMutable();
          genericTypeArguments_.set(index, builderForValue.build());
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder addGenericTypeArguments(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (genericTypeArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGenericTypeArgumentsIsMutable();
          genericTypeArguments_.add(value);
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder addGenericTypeArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (genericTypeArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGenericTypeArgumentsIsMutable();
          genericTypeArguments_.add(index, value);
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder addGenericTypeArguments(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (genericTypeArgumentsBuilder_ == null) {
          ensureGenericTypeArgumentsIsMutable();
          genericTypeArguments_.add(builderForValue.build());
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder addGenericTypeArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (genericTypeArgumentsBuilder_ == null) {
          ensureGenericTypeArgumentsIsMutable();
          genericTypeArguments_.add(index, builderForValue.build());
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder addAllGenericTypeArguments(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition> values) {
        if (genericTypeArgumentsBuilder_ == null) {
          ensureGenericTypeArgumentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, genericTypeArguments_);
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder clearGenericTypeArguments() {
        if (genericTypeArgumentsBuilder_ == null) {
          genericTypeArguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public Builder removeGenericTypeArguments(int index) {
        if (genericTypeArgumentsBuilder_ == null) {
          ensureGenericTypeArgumentsIsMutable();
          genericTypeArguments_.remove(index);
          onChanged();
        } else {
          genericTypeArgumentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getGenericTypeArgumentsBuilder(
          int index) {
        return getGenericTypeArgumentsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getGenericTypeArgumentsOrBuilder(
          int index) {
        if (genericTypeArgumentsBuilder_ == null) {
          return genericTypeArguments_.get(index);  } else {
          return genericTypeArgumentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
           getGenericTypeArgumentsOrBuilderList() {
        if (genericTypeArgumentsBuilder_ != null) {
          return genericTypeArgumentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(genericTypeArguments_);
        }
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder addGenericTypeArgumentsBuilder() {
        return getGenericTypeArgumentsFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder addGenericTypeArgumentsBuilder(
          int index) {
        return getGenericTypeArgumentsFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .TypeDefinition generic_type_arguments = 16;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder> 
           getGenericTypeArgumentsBuilderList() {
        return getGenericTypeArgumentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getGenericTypeArgumentsFieldBuilder() {
        if (genericTypeArgumentsBuilder_ == null) {
          genericTypeArgumentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  genericTypeArguments_,
                  ((bitField0_ & 0x00008000) != 0),
                  getParentForChildren(),
                  isClean());
          genericTypeArguments_ = null;
        }
        return genericTypeArgumentsBuilder_;
      }

      private int arrayDimensions_ ;
      /**
       * <code>int32 array_dimensions = 17;</code>
       * @return The arrayDimensions.
       */
      @java.lang.Override
      public int getArrayDimensions() {
        return arrayDimensions_;
      }
      /**
       * <code>int32 array_dimensions = 17;</code>
       * @param value The arrayDimensions to set.
       * @return This builder for chaining.
       */
      public Builder setArrayDimensions(int value) {
        
        arrayDimensions_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <code>int32 array_dimensions = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearArrayDimensions() {
        bitField0_ = (bitField0_ & ~0x00010000);
        arrayDimensions_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition> events_ =
        java.util.Collections.emptyList();
      private void ensureEventsIsMutable() {
        if (!((bitField0_ & 0x00020000) != 0)) {
          events_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition>(events_);
          bitField0_ |= 0x00020000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder> eventsBuilder_;

      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition> getEventsList() {
        if (eventsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(events_);
        } else {
          return eventsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public int getEventsCount() {
        if (eventsBuilder_ == null) {
          return events_.size();
        } else {
          return eventsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition getEvents(int index) {
        if (eventsBuilder_ == null) {
          return events_.get(index);
        } else {
          return eventsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder setEvents(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition value) {
        if (eventsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEventsIsMutable();
          events_.set(index, value);
          onChanged();
        } else {
          eventsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder setEvents(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder builderForValue) {
        if (eventsBuilder_ == null) {
          ensureEventsIsMutable();
          events_.set(index, builderForValue.build());
          onChanged();
        } else {
          eventsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder addEvents(soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition value) {
        if (eventsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEventsIsMutable();
          events_.add(value);
          onChanged();
        } else {
          eventsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder addEvents(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition value) {
        if (eventsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEventsIsMutable();
          events_.add(index, value);
          onChanged();
        } else {
          eventsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder addEvents(
          soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder builderForValue) {
        if (eventsBuilder_ == null) {
          ensureEventsIsMutable();
          events_.add(builderForValue.build());
          onChanged();
        } else {
          eventsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder addEvents(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder builderForValue) {
        if (eventsBuilder_ == null) {
          ensureEventsIsMutable();
          events_.add(index, builderForValue.build());
          onChanged();
        } else {
          eventsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder addAllEvents(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition> values) {
        if (eventsBuilder_ == null) {
          ensureEventsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, events_);
          onChanged();
        } else {
          eventsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder clearEvents() {
        if (eventsBuilder_ == null) {
          events_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00020000);
          onChanged();
        } else {
          eventsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public Builder removeEvents(int index) {
        if (eventsBuilder_ == null) {
          ensureEventsIsMutable();
          events_.remove(index);
          onChanged();
        } else {
          eventsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder getEventsBuilder(
          int index) {
        return getEventsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder getEventsOrBuilder(
          int index) {
        if (eventsBuilder_ == null) {
          return events_.get(index);  } else {
          return eventsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder> 
           getEventsOrBuilderList() {
        if (eventsBuilder_ != null) {
          return eventsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(events_);
        }
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder addEventsBuilder() {
        return getEventsFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder addEventsBuilder(
          int index) {
        return getEventsFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .EventDefinition events = 18;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder> 
           getEventsBuilderList() {
        return getEventsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder> 
          getEventsFieldBuilder() {
        if (eventsBuilder_ == null) {
          eventsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinitionOrBuilder>(
                  events_,
                  ((bitField0_ & 0x00020000) != 0),
                  getParentForChildren(),
                  isClean());
          events_ = null;
        }
        return eventsBuilder_;
      }

      private int peToken_ ;
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 19;</code>
       * @return The peToken.
       */
      @java.lang.Override
      public int getPeToken() {
        return peToken_;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 19;</code>
       * @param value The peToken to set.
       * @return This builder for chaining.
       */
      public Builder setPeToken(int value) {
        
        peToken_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearPeToken() {
        bitField0_ = (bitField0_ & ~0x00040000);
        peToken_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:TypeDefinition)
    }

    // @@protoc_insertion_point(class_scope:TypeDefinition)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TypeDefinition>
        PARSER = new com.google.protobuf.AbstractParser<TypeDefinition>() {
      @java.lang.Override
      public TypeDefinition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MethodDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:MethodDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    int getAccessibilityValue();
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>bool has_body = 3;</code>
     * @return The hasBody.
     */
    boolean getHasBody();

    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition> 
        getParameterList();
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition getParameter(int index);
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    int getParameterCount();
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder> 
        getParameterOrBuilderList();
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder getParameterOrBuilder(
        int index);

    /**
     * <code>bool is_abstract = 5;</code>
     * @return The isAbstract.
     */
    boolean getIsAbstract();

    /**
     * <code>bool is_accessor = 6;</code>
     * @return The isAccessor.
     */
    boolean getIsAccessor();

    /**
     * <code>bool is_constructor = 7;</code>
     * @return The isConstructor.
     */
    boolean getIsConstructor();

    /**
     * <code>bool is_destructor = 8;</code>
     * @return The isDestructor.
     */
    boolean getIsDestructor();

    /**
     * <code>bool is_explicit_interface_implementation = 9;</code>
     * @return The isExplicitInterfaceImplementation.
     */
    boolean getIsExplicitInterfaceImplementation();

    /**
     * <code>bool is_static = 10;</code>
     * @return The isStatic.
     */
    boolean getIsStatic();

    /**
     * <code>bool is_virtual = 11;</code>
     * @return The isVirtual.
     */
    boolean getIsVirtual();

    /**
     * <code>bool is_operator = 16;</code>
     * @return The isOperator.
     */
    boolean getIsOperator();

    /**
     * <code>bool is_extern = 17;</code>
     * @return The isExtern.
     */
    boolean getIsExtern();

    /**
     * <code>bool is_unsafe = 18;</code>
     * @return The isUnsafe.
     */
    boolean getIsUnsafe();

    /**
     * <code>bool is_sealed = 19;</code>
     * @return The isSealed.
     */
    boolean getIsSealed();

    /**
     * <code>.TypeDefinition return_type = 12;</code>
     * @return Whether the returnType field is set.
     */
    boolean hasReturnType();
    /**
     * <code>.TypeDefinition return_type = 12;</code>
     * @return The returnType.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getReturnType();
    /**
     * <code>.TypeDefinition return_type = 12;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getReturnTypeOrBuilder();

    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> 
        getAttributesList();
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getAttributes(int index);
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    int getAttributesCount();
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> 
        getAttributesOrBuilderList();
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder getAttributesOrBuilder(
        int index);

    /**
     * <code>string full_name = 14;</code>
     * @return The fullName.
     */
    java.lang.String getFullName();
    /**
     * <code>string full_name = 14;</code>
     * @return The bytes for fullName.
     */
    com.google.protobuf.ByteString
        getFullNameBytes();

    /**
     * <code>.TypeDefinition declaring_type = 15;</code>
     * @return Whether the declaringType field is set.
     */
    boolean hasDeclaringType();
    /**
     * <code>.TypeDefinition declaring_type = 15;</code>
     * @return The declaringType.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDeclaringType();
    /**
     * <code>.TypeDefinition declaring_type = 15;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDeclaringTypeOrBuilder();

    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 20;</code>
     * @return The peToken.
     */
    int getPeToken();
  }
  /**
   * Protobuf type {@code MethodDefinition}
   */
  public static final class MethodDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:MethodDefinition)
      MethodDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MethodDefinition.newBuilder() to construct.
    private MethodDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MethodDefinition() {
      accessibility_ = 0;
      name_ = "";
      parameter_ = java.util.Collections.emptyList();
      attributes_ = java.util.Collections.emptyList();
      fullName_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_MethodDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_MethodDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder.class);
    }

    public static final int ACCESSIBILITY_FIELD_NUMBER = 1;
    private int accessibility_ = 0;
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    @java.lang.Override public int getAccessibilityValue() {
      return accessibility_;
    }
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int HAS_BODY_FIELD_NUMBER = 3;
    private boolean hasBody_ = false;
    /**
     * <code>bool has_body = 3;</code>
     * @return The hasBody.
     */
    @java.lang.Override
    public boolean getHasBody() {
      return hasBody_;
    }

    public static final int PARAMETER_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition> parameter_;
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition> getParameterList() {
      return parameter_;
    }
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder> 
        getParameterOrBuilderList() {
      return parameter_;
    }
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    @java.lang.Override
    public int getParameterCount() {
      return parameter_.size();
    }
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition getParameter(int index) {
      return parameter_.get(index);
    }
    /**
     * <code>repeated .ParameterDefinition parameter = 4;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder getParameterOrBuilder(
        int index) {
      return parameter_.get(index);
    }

    public static final int IS_ABSTRACT_FIELD_NUMBER = 5;
    private boolean isAbstract_ = false;
    /**
     * <code>bool is_abstract = 5;</code>
     * @return The isAbstract.
     */
    @java.lang.Override
    public boolean getIsAbstract() {
      return isAbstract_;
    }

    public static final int IS_ACCESSOR_FIELD_NUMBER = 6;
    private boolean isAccessor_ = false;
    /**
     * <code>bool is_accessor = 6;</code>
     * @return The isAccessor.
     */
    @java.lang.Override
    public boolean getIsAccessor() {
      return isAccessor_;
    }

    public static final int IS_CONSTRUCTOR_FIELD_NUMBER = 7;
    private boolean isConstructor_ = false;
    /**
     * <code>bool is_constructor = 7;</code>
     * @return The isConstructor.
     */
    @java.lang.Override
    public boolean getIsConstructor() {
      return isConstructor_;
    }

    public static final int IS_DESTRUCTOR_FIELD_NUMBER = 8;
    private boolean isDestructor_ = false;
    /**
     * <code>bool is_destructor = 8;</code>
     * @return The isDestructor.
     */
    @java.lang.Override
    public boolean getIsDestructor() {
      return isDestructor_;
    }

    public static final int IS_EXPLICIT_INTERFACE_IMPLEMENTATION_FIELD_NUMBER = 9;
    private boolean isExplicitInterfaceImplementation_ = false;
    /**
     * <code>bool is_explicit_interface_implementation = 9;</code>
     * @return The isExplicitInterfaceImplementation.
     */
    @java.lang.Override
    public boolean getIsExplicitInterfaceImplementation() {
      return isExplicitInterfaceImplementation_;
    }

    public static final int IS_STATIC_FIELD_NUMBER = 10;
    private boolean isStatic_ = false;
    /**
     * <code>bool is_static = 10;</code>
     * @return The isStatic.
     */
    @java.lang.Override
    public boolean getIsStatic() {
      return isStatic_;
    }

    public static final int IS_VIRTUAL_FIELD_NUMBER = 11;
    private boolean isVirtual_ = false;
    /**
     * <code>bool is_virtual = 11;</code>
     * @return The isVirtual.
     */
    @java.lang.Override
    public boolean getIsVirtual() {
      return isVirtual_;
    }

    public static final int IS_OPERATOR_FIELD_NUMBER = 16;
    private boolean isOperator_ = false;
    /**
     * <code>bool is_operator = 16;</code>
     * @return The isOperator.
     */
    @java.lang.Override
    public boolean getIsOperator() {
      return isOperator_;
    }

    public static final int IS_EXTERN_FIELD_NUMBER = 17;
    private boolean isExtern_ = false;
    /**
     * <code>bool is_extern = 17;</code>
     * @return The isExtern.
     */
    @java.lang.Override
    public boolean getIsExtern() {
      return isExtern_;
    }

    public static final int IS_UNSAFE_FIELD_NUMBER = 18;
    private boolean isUnsafe_ = false;
    /**
     * <code>bool is_unsafe = 18;</code>
     * @return The isUnsafe.
     */
    @java.lang.Override
    public boolean getIsUnsafe() {
      return isUnsafe_;
    }

    public static final int IS_SEALED_FIELD_NUMBER = 19;
    private boolean isSealed_ = false;
    /**
     * <code>bool is_sealed = 19;</code>
     * @return The isSealed.
     */
    @java.lang.Override
    public boolean getIsSealed() {
      return isSealed_;
    }

    public static final int RETURN_TYPE_FIELD_NUMBER = 12;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition returnType_;
    /**
     * <code>.TypeDefinition return_type = 12;</code>
     * @return Whether the returnType field is set.
     */
    @java.lang.Override
    public boolean hasReturnType() {
      return returnType_ != null;
    }
    /**
     * <code>.TypeDefinition return_type = 12;</code>
     * @return The returnType.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getReturnType() {
      return returnType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : returnType_;
    }
    /**
     * <code>.TypeDefinition return_type = 12;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getReturnTypeOrBuilder() {
      return returnType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : returnType_;
    }

    public static final int ATTRIBUTES_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> attributes_;
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> getAttributesList() {
      return attributes_;
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> 
        getAttributesOrBuilderList() {
      return attributes_;
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    @java.lang.Override
    public int getAttributesCount() {
      return attributes_.size();
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getAttributes(int index) {
      return attributes_.get(index);
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 13;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder getAttributesOrBuilder(
        int index) {
      return attributes_.get(index);
    }

    public static final int FULL_NAME_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fullName_ = "";
    /**
     * <code>string full_name = 14;</code>
     * @return The fullName.
     */
    @java.lang.Override
    public java.lang.String getFullName() {
      java.lang.Object ref = fullName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fullName_ = s;
        return s;
      }
    }
    /**
     * <code>string full_name = 14;</code>
     * @return The bytes for fullName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFullNameBytes() {
      java.lang.Object ref = fullName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fullName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DECLARING_TYPE_FIELD_NUMBER = 15;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition declaringType_;
    /**
     * <code>.TypeDefinition declaring_type = 15;</code>
     * @return Whether the declaringType field is set.
     */
    @java.lang.Override
    public boolean hasDeclaringType() {
      return declaringType_ != null;
    }
    /**
     * <code>.TypeDefinition declaring_type = 15;</code>
     * @return The declaringType.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDeclaringType() {
      return declaringType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : declaringType_;
    }
    /**
     * <code>.TypeDefinition declaring_type = 15;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDeclaringTypeOrBuilder() {
      return declaringType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : declaringType_;
    }

    public static final int PE_TOKEN_FIELD_NUMBER = 20;
    private int peToken_ = 0;
    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 20;</code>
     * @return The peToken.
     */
    @java.lang.Override
    public int getPeToken() {
      return peToken_;
    }

    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 (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        output.writeEnum(1, accessibility_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (hasBody_ != false) {
        output.writeBool(3, hasBody_);
      }
      for (int i = 0; i < parameter_.size(); i++) {
        output.writeMessage(4, parameter_.get(i));
      }
      if (isAbstract_ != false) {
        output.writeBool(5, isAbstract_);
      }
      if (isAccessor_ != false) {
        output.writeBool(6, isAccessor_);
      }
      if (isConstructor_ != false) {
        output.writeBool(7, isConstructor_);
      }
      if (isDestructor_ != false) {
        output.writeBool(8, isDestructor_);
      }
      if (isExplicitInterfaceImplementation_ != false) {
        output.writeBool(9, isExplicitInterfaceImplementation_);
      }
      if (isStatic_ != false) {
        output.writeBool(10, isStatic_);
      }
      if (isVirtual_ != false) {
        output.writeBool(11, isVirtual_);
      }
      if (returnType_ != null) {
        output.writeMessage(12, getReturnType());
      }
      for (int i = 0; i < attributes_.size(); i++) {
        output.writeMessage(13, attributes_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fullName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, fullName_);
      }
      if (declaringType_ != null) {
        output.writeMessage(15, getDeclaringType());
      }
      if (isOperator_ != false) {
        output.writeBool(16, isOperator_);
      }
      if (isExtern_ != false) {
        output.writeBool(17, isExtern_);
      }
      if (isUnsafe_ != false) {
        output.writeBool(18, isUnsafe_);
      }
      if (isSealed_ != false) {
        output.writeBool(19, isSealed_);
      }
      if (peToken_ != 0) {
        output.writeInt32(20, peToken_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, accessibility_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (hasBody_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, hasBody_);
      }
      for (int i = 0; i < parameter_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, parameter_.get(i));
      }
      if (isAbstract_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, isAbstract_);
      }
      if (isAccessor_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, isAccessor_);
      }
      if (isConstructor_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, isConstructor_);
      }
      if (isDestructor_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, isDestructor_);
      }
      if (isExplicitInterfaceImplementation_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, isExplicitInterfaceImplementation_);
      }
      if (isStatic_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, isStatic_);
      }
      if (isVirtual_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, isVirtual_);
      }
      if (returnType_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getReturnType());
      }
      for (int i = 0; i < attributes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, attributes_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fullName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, fullName_);
      }
      if (declaringType_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, getDeclaringType());
      }
      if (isOperator_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(16, isOperator_);
      }
      if (isExtern_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, isExtern_);
      }
      if (isUnsafe_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, isUnsafe_);
      }
      if (isSealed_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(19, isSealed_);
      }
      if (peToken_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(20, peToken_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition other = (soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition) obj;

      if (accessibility_ != other.accessibility_) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (getHasBody()
          != other.getHasBody()) return false;
      if (!getParameterList()
          .equals(other.getParameterList())) return false;
      if (getIsAbstract()
          != other.getIsAbstract()) return false;
      if (getIsAccessor()
          != other.getIsAccessor()) return false;
      if (getIsConstructor()
          != other.getIsConstructor()) return false;
      if (getIsDestructor()
          != other.getIsDestructor()) return false;
      if (getIsExplicitInterfaceImplementation()
          != other.getIsExplicitInterfaceImplementation()) return false;
      if (getIsStatic()
          != other.getIsStatic()) return false;
      if (getIsVirtual()
          != other.getIsVirtual()) return false;
      if (getIsOperator()
          != other.getIsOperator()) return false;
      if (getIsExtern()
          != other.getIsExtern()) return false;
      if (getIsUnsafe()
          != other.getIsUnsafe()) return false;
      if (getIsSealed()
          != other.getIsSealed()) return false;
      if (hasReturnType() != other.hasReturnType()) return false;
      if (hasReturnType()) {
        if (!getReturnType()
            .equals(other.getReturnType())) return false;
      }
      if (!getAttributesList()
          .equals(other.getAttributesList())) return false;
      if (!getFullName()
          .equals(other.getFullName())) return false;
      if (hasDeclaringType() != other.hasDeclaringType()) return false;
      if (hasDeclaringType()) {
        if (!getDeclaringType()
            .equals(other.getDeclaringType())) return false;
      }
      if (getPeToken()
          != other.getPeToken()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCESSIBILITY_FIELD_NUMBER;
      hash = (53 * hash) + accessibility_;
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + HAS_BODY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getHasBody());
      if (getParameterCount() > 0) {
        hash = (37 * hash) + PARAMETER_FIELD_NUMBER;
        hash = (53 * hash) + getParameterList().hashCode();
      }
      hash = (37 * hash) + IS_ABSTRACT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsAbstract());
      hash = (37 * hash) + IS_ACCESSOR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsAccessor());
      hash = (37 * hash) + IS_CONSTRUCTOR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsConstructor());
      hash = (37 * hash) + IS_DESTRUCTOR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsDestructor());
      hash = (37 * hash) + IS_EXPLICIT_INTERFACE_IMPLEMENTATION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsExplicitInterfaceImplementation());
      hash = (37 * hash) + IS_STATIC_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsStatic());
      hash = (37 * hash) + IS_VIRTUAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsVirtual());
      hash = (37 * hash) + IS_OPERATOR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsOperator());
      hash = (37 * hash) + IS_EXTERN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsExtern());
      hash = (37 * hash) + IS_UNSAFE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsUnsafe());
      hash = (37 * hash) + IS_SEALED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsSealed());
      if (hasReturnType()) {
        hash = (37 * hash) + RETURN_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getReturnType().hashCode();
      }
      if (getAttributesCount() > 0) {
        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
        hash = (53 * hash) + getAttributesList().hashCode();
      }
      hash = (37 * hash) + FULL_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getFullName().hashCode();
      if (hasDeclaringType()) {
        hash = (37 * hash) + DECLARING_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getDeclaringType().hashCode();
      }
      hash = (37 * hash) + PE_TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getPeToken();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_MethodDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        accessibility_ = 0;
        name_ = "";
        hasBody_ = false;
        if (parameterBuilder_ == null) {
          parameter_ = java.util.Collections.emptyList();
        } else {
          parameter_ = null;
          parameterBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        isAbstract_ = false;
        isAccessor_ = false;
        isConstructor_ = false;
        isDestructor_ = false;
        isExplicitInterfaceImplementation_ = false;
        isStatic_ = false;
        isVirtual_ = false;
        isOperator_ = false;
        isExtern_ = false;
        isUnsafe_ = false;
        isSealed_ = false;
        returnType_ = null;
        if (returnTypeBuilder_ != null) {
          returnTypeBuilder_.dispose();
          returnTypeBuilder_ = null;
        }
        if (attributesBuilder_ == null) {
          attributes_ = java.util.Collections.emptyList();
        } else {
          attributes_ = null;
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00010000);
        fullName_ = "";
        declaringType_ = null;
        if (declaringTypeBuilder_ != null) {
          declaringTypeBuilder_.dispose();
          declaringTypeBuilder_ = null;
        }
        peToken_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_MethodDefinition_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition result = new soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition result) {
        if (parameterBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            parameter_ = java.util.Collections.unmodifiableList(parameter_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.parameter_ = parameter_;
        } else {
          result.parameter_ = parameterBuilder_.build();
        }
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0)) {
            attributes_ = java.util.Collections.unmodifiableList(attributes_);
            bitField0_ = (bitField0_ & ~0x00010000);
          }
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.accessibility_ = accessibility_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.hasBody_ = hasBody_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.isAbstract_ = isAbstract_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.isAccessor_ = isAccessor_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.isConstructor_ = isConstructor_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.isDestructor_ = isDestructor_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.isExplicitInterfaceImplementation_ = isExplicitInterfaceImplementation_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.isStatic_ = isStatic_;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.isVirtual_ = isVirtual_;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.isOperator_ = isOperator_;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.isExtern_ = isExtern_;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.isUnsafe_ = isUnsafe_;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.isSealed_ = isSealed_;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.returnType_ = returnTypeBuilder_ == null
              ? returnType_
              : returnTypeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.fullName_ = fullName_;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.declaringType_ = declaringTypeBuilder_ == null
              ? declaringType_
              : declaringTypeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.peToken_ = peToken_;
        }
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance()) return this;
        if (other.accessibility_ != 0) {
          setAccessibilityValue(other.getAccessibilityValue());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.getHasBody() != false) {
          setHasBody(other.getHasBody());
        }
        if (parameterBuilder_ == null) {
          if (!other.parameter_.isEmpty()) {
            if (parameter_.isEmpty()) {
              parameter_ = other.parameter_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureParameterIsMutable();
              parameter_.addAll(other.parameter_);
            }
            onChanged();
          }
        } else {
          if (!other.parameter_.isEmpty()) {
            if (parameterBuilder_.isEmpty()) {
              parameterBuilder_.dispose();
              parameterBuilder_ = null;
              parameter_ = other.parameter_;
              bitField0_ = (bitField0_ & ~0x00000008);
              parameterBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getParameterFieldBuilder() : null;
            } else {
              parameterBuilder_.addAllMessages(other.parameter_);
            }
          }
        }
        if (other.getIsAbstract() != false) {
          setIsAbstract(other.getIsAbstract());
        }
        if (other.getIsAccessor() != false) {
          setIsAccessor(other.getIsAccessor());
        }
        if (other.getIsConstructor() != false) {
          setIsConstructor(other.getIsConstructor());
        }
        if (other.getIsDestructor() != false) {
          setIsDestructor(other.getIsDestructor());
        }
        if (other.getIsExplicitInterfaceImplementation() != false) {
          setIsExplicitInterfaceImplementation(other.getIsExplicitInterfaceImplementation());
        }
        if (other.getIsStatic() != false) {
          setIsStatic(other.getIsStatic());
        }
        if (other.getIsVirtual() != false) {
          setIsVirtual(other.getIsVirtual());
        }
        if (other.getIsOperator() != false) {
          setIsOperator(other.getIsOperator());
        }
        if (other.getIsExtern() != false) {
          setIsExtern(other.getIsExtern());
        }
        if (other.getIsUnsafe() != false) {
          setIsUnsafe(other.getIsUnsafe());
        }
        if (other.getIsSealed() != false) {
          setIsSealed(other.getIsSealed());
        }
        if (other.hasReturnType()) {
          mergeReturnType(other.getReturnType());
        }
        if (attributesBuilder_ == null) {
          if (!other.attributes_.isEmpty()) {
            if (attributes_.isEmpty()) {
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00010000);
            } else {
              ensureAttributesIsMutable();
              attributes_.addAll(other.attributes_);
            }
            onChanged();
          }
        } else {
          if (!other.attributes_.isEmpty()) {
            if (attributesBuilder_.isEmpty()) {
              attributesBuilder_.dispose();
              attributesBuilder_ = null;
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00010000);
              attributesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttributesFieldBuilder() : null;
            } else {
              attributesBuilder_.addAllMessages(other.attributes_);
            }
          }
        }
        if (!other.getFullName().isEmpty()) {
          fullName_ = other.fullName_;
          bitField0_ |= 0x00020000;
          onChanged();
        }
        if (other.hasDeclaringType()) {
          mergeDeclaringType(other.getDeclaringType());
        }
        if (other.getPeToken() != 0) {
          setPeToken(other.getPeToken());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                accessibility_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                hasBody_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.parser(),
                        extensionRegistry);
                if (parameterBuilder_ == null) {
                  ensureParameterIsMutable();
                  parameter_.add(m);
                } else {
                  parameterBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 40: {
                isAbstract_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                isAccessor_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                isConstructor_ = input.readBool();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 64: {
                isDestructor_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 72: {
                isExplicitInterfaceImplementation_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 80: {
                isStatic_ = input.readBool();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              case 88: {
                isVirtual_ = input.readBool();
                bitField0_ |= 0x00000400;
                break;
              } // case 88
              case 98: {
                input.readMessage(
                    getReturnTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00008000;
                break;
              } // case 98
              case 106: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.parser(),
                        extensionRegistry);
                if (attributesBuilder_ == null) {
                  ensureAttributesIsMutable();
                  attributes_.add(m);
                } else {
                  attributesBuilder_.addMessage(m);
                }
                break;
              } // case 106
              case 114: {
                fullName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00020000;
                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getDeclaringTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00040000;
                break;
              } // case 122
              case 128: {
                isOperator_ = input.readBool();
                bitField0_ |= 0x00000800;
                break;
              } // case 128
              case 136: {
                isExtern_ = input.readBool();
                bitField0_ |= 0x00001000;
                break;
              } // case 136
              case 144: {
                isUnsafe_ = input.readBool();
                bitField0_ |= 0x00002000;
                break;
              } // case 144
              case 152: {
                isSealed_ = input.readBool();
                bitField0_ |= 0x00004000;
                break;
              } // case 152
              case 160: {
                peToken_ = input.readInt32();
                bitField0_ |= 0x00080000;
                break;
              } // case 160
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int accessibility_ = 0;
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The enum numeric value on the wire for accessibility.
       */
      @java.lang.Override public int getAccessibilityValue() {
        return accessibility_;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The enum numeric value on the wire for accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibilityValue(int value) {
        accessibility_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The accessibility.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibility(soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        accessibility_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessibility() {
        bitField0_ = (bitField0_ & ~0x00000001);
        accessibility_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean hasBody_ ;
      /**
       * <code>bool has_body = 3;</code>
       * @return The hasBody.
       */
      @java.lang.Override
      public boolean getHasBody() {
        return hasBody_;
      }
      /**
       * <code>bool has_body = 3;</code>
       * @param value The hasBody to set.
       * @return This builder for chaining.
       */
      public Builder setHasBody(boolean value) {
        
        hasBody_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>bool has_body = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasBody() {
        bitField0_ = (bitField0_ & ~0x00000004);
        hasBody_ = false;
        onChanged();
        return this;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition> parameter_ =
        java.util.Collections.emptyList();
      private void ensureParameterIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          parameter_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition>(parameter_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder> parameterBuilder_;

      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition> getParameterList() {
        if (parameterBuilder_ == null) {
          return java.util.Collections.unmodifiableList(parameter_);
        } else {
          return parameterBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public int getParameterCount() {
        if (parameterBuilder_ == null) {
          return parameter_.size();
        } else {
          return parameterBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition getParameter(int index) {
        if (parameterBuilder_ == null) {
          return parameter_.get(index);
        } else {
          return parameterBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder setParameter(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition value) {
        if (parameterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParameterIsMutable();
          parameter_.set(index, value);
          onChanged();
        } else {
          parameterBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder setParameter(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder builderForValue) {
        if (parameterBuilder_ == null) {
          ensureParameterIsMutable();
          parameter_.set(index, builderForValue.build());
          onChanged();
        } else {
          parameterBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder addParameter(soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition value) {
        if (parameterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParameterIsMutable();
          parameter_.add(value);
          onChanged();
        } else {
          parameterBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder addParameter(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition value) {
        if (parameterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParameterIsMutable();
          parameter_.add(index, value);
          onChanged();
        } else {
          parameterBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder addParameter(
          soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder builderForValue) {
        if (parameterBuilder_ == null) {
          ensureParameterIsMutable();
          parameter_.add(builderForValue.build());
          onChanged();
        } else {
          parameterBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder addParameter(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder builderForValue) {
        if (parameterBuilder_ == null) {
          ensureParameterIsMutable();
          parameter_.add(index, builderForValue.build());
          onChanged();
        } else {
          parameterBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder addAllParameter(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition> values) {
        if (parameterBuilder_ == null) {
          ensureParameterIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, parameter_);
          onChanged();
        } else {
          parameterBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder clearParameter() {
        if (parameterBuilder_ == null) {
          parameter_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          parameterBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public Builder removeParameter(int index) {
        if (parameterBuilder_ == null) {
          ensureParameterIsMutable();
          parameter_.remove(index);
          onChanged();
        } else {
          parameterBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder getParameterBuilder(
          int index) {
        return getParameterFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder getParameterOrBuilder(
          int index) {
        if (parameterBuilder_ == null) {
          return parameter_.get(index);  } else {
          return parameterBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder> 
           getParameterOrBuilderList() {
        if (parameterBuilder_ != null) {
          return parameterBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(parameter_);
        }
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder addParameterBuilder() {
        return getParameterFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder addParameterBuilder(
          int index) {
        return getParameterFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .ParameterDefinition parameter = 4;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder> 
           getParameterBuilderList() {
        return getParameterFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder> 
          getParameterFieldBuilder() {
        if (parameterBuilder_ == null) {
          parameterBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder>(
                  parameter_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          parameter_ = null;
        }
        return parameterBuilder_;
      }

      private boolean isAbstract_ ;
      /**
       * <code>bool is_abstract = 5;</code>
       * @return The isAbstract.
       */
      @java.lang.Override
      public boolean getIsAbstract() {
        return isAbstract_;
      }
      /**
       * <code>bool is_abstract = 5;</code>
       * @param value The isAbstract to set.
       * @return This builder for chaining.
       */
      public Builder setIsAbstract(boolean value) {
        
        isAbstract_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_abstract = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsAbstract() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isAbstract_ = false;
        onChanged();
        return this;
      }

      private boolean isAccessor_ ;
      /**
       * <code>bool is_accessor = 6;</code>
       * @return The isAccessor.
       */
      @java.lang.Override
      public boolean getIsAccessor() {
        return isAccessor_;
      }
      /**
       * <code>bool is_accessor = 6;</code>
       * @param value The isAccessor to set.
       * @return This builder for chaining.
       */
      public Builder setIsAccessor(boolean value) {
        
        isAccessor_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_accessor = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsAccessor() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isAccessor_ = false;
        onChanged();
        return this;
      }

      private boolean isConstructor_ ;
      /**
       * <code>bool is_constructor = 7;</code>
       * @return The isConstructor.
       */
      @java.lang.Override
      public boolean getIsConstructor() {
        return isConstructor_;
      }
      /**
       * <code>bool is_constructor = 7;</code>
       * @param value The isConstructor to set.
       * @return This builder for chaining.
       */
      public Builder setIsConstructor(boolean value) {
        
        isConstructor_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_constructor = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsConstructor() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isConstructor_ = false;
        onChanged();
        return this;
      }

      private boolean isDestructor_ ;
      /**
       * <code>bool is_destructor = 8;</code>
       * @return The isDestructor.
       */
      @java.lang.Override
      public boolean getIsDestructor() {
        return isDestructor_;
      }
      /**
       * <code>bool is_destructor = 8;</code>
       * @param value The isDestructor to set.
       * @return This builder for chaining.
       */
      public Builder setIsDestructor(boolean value) {
        
        isDestructor_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_destructor = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsDestructor() {
        bitField0_ = (bitField0_ & ~0x00000080);
        isDestructor_ = false;
        onChanged();
        return this;
      }

      private boolean isExplicitInterfaceImplementation_ ;
      /**
       * <code>bool is_explicit_interface_implementation = 9;</code>
       * @return The isExplicitInterfaceImplementation.
       */
      @java.lang.Override
      public boolean getIsExplicitInterfaceImplementation() {
        return isExplicitInterfaceImplementation_;
      }
      /**
       * <code>bool is_explicit_interface_implementation = 9;</code>
       * @param value The isExplicitInterfaceImplementation to set.
       * @return This builder for chaining.
       */
      public Builder setIsExplicitInterfaceImplementation(boolean value) {
        
        isExplicitInterfaceImplementation_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_explicit_interface_implementation = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsExplicitInterfaceImplementation() {
        bitField0_ = (bitField0_ & ~0x00000100);
        isExplicitInterfaceImplementation_ = false;
        onChanged();
        return this;
      }

      private boolean isStatic_ ;
      /**
       * <code>bool is_static = 10;</code>
       * @return The isStatic.
       */
      @java.lang.Override
      public boolean getIsStatic() {
        return isStatic_;
      }
      /**
       * <code>bool is_static = 10;</code>
       * @param value The isStatic to set.
       * @return This builder for chaining.
       */
      public Builder setIsStatic(boolean value) {
        
        isStatic_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_static = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsStatic() {
        bitField0_ = (bitField0_ & ~0x00000200);
        isStatic_ = false;
        onChanged();
        return this;
      }

      private boolean isVirtual_ ;
      /**
       * <code>bool is_virtual = 11;</code>
       * @return The isVirtual.
       */
      @java.lang.Override
      public boolean getIsVirtual() {
        return isVirtual_;
      }
      /**
       * <code>bool is_virtual = 11;</code>
       * @param value The isVirtual to set.
       * @return This builder for chaining.
       */
      public Builder setIsVirtual(boolean value) {
        
        isVirtual_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_virtual = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsVirtual() {
        bitField0_ = (bitField0_ & ~0x00000400);
        isVirtual_ = false;
        onChanged();
        return this;
      }

      private boolean isOperator_ ;
      /**
       * <code>bool is_operator = 16;</code>
       * @return The isOperator.
       */
      @java.lang.Override
      public boolean getIsOperator() {
        return isOperator_;
      }
      /**
       * <code>bool is_operator = 16;</code>
       * @param value The isOperator to set.
       * @return This builder for chaining.
       */
      public Builder setIsOperator(boolean value) {
        
        isOperator_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_operator = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsOperator() {
        bitField0_ = (bitField0_ & ~0x00000800);
        isOperator_ = false;
        onChanged();
        return this;
      }

      private boolean isExtern_ ;
      /**
       * <code>bool is_extern = 17;</code>
       * @return The isExtern.
       */
      @java.lang.Override
      public boolean getIsExtern() {
        return isExtern_;
      }
      /**
       * <code>bool is_extern = 17;</code>
       * @param value The isExtern to set.
       * @return This builder for chaining.
       */
      public Builder setIsExtern(boolean value) {
        
        isExtern_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_extern = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsExtern() {
        bitField0_ = (bitField0_ & ~0x00001000);
        isExtern_ = false;
        onChanged();
        return this;
      }

      private boolean isUnsafe_ ;
      /**
       * <code>bool is_unsafe = 18;</code>
       * @return The isUnsafe.
       */
      @java.lang.Override
      public boolean getIsUnsafe() {
        return isUnsafe_;
      }
      /**
       * <code>bool is_unsafe = 18;</code>
       * @param value The isUnsafe to set.
       * @return This builder for chaining.
       */
      public Builder setIsUnsafe(boolean value) {
        
        isUnsafe_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_unsafe = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsUnsafe() {
        bitField0_ = (bitField0_ & ~0x00002000);
        isUnsafe_ = false;
        onChanged();
        return this;
      }

      private boolean isSealed_ ;
      /**
       * <code>bool is_sealed = 19;</code>
       * @return The isSealed.
       */
      @java.lang.Override
      public boolean getIsSealed() {
        return isSealed_;
      }
      /**
       * <code>bool is_sealed = 19;</code>
       * @param value The isSealed to set.
       * @return This builder for chaining.
       */
      public Builder setIsSealed(boolean value) {
        
        isSealed_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_sealed = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSealed() {
        bitField0_ = (bitField0_ & ~0x00004000);
        isSealed_ = false;
        onChanged();
        return this;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition returnType_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> returnTypeBuilder_;
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       * @return Whether the returnType field is set.
       */
      public boolean hasReturnType() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       * @return The returnType.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getReturnType() {
        if (returnTypeBuilder_ == null) {
          return returnType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : returnType_;
        } else {
          return returnTypeBuilder_.getMessage();
        }
      }
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       */
      public Builder setReturnType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (returnTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          returnType_ = value;
        } else {
          returnTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       */
      public Builder setReturnType(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (returnTypeBuilder_ == null) {
          returnType_ = builderForValue.build();
        } else {
          returnTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       */
      public Builder mergeReturnType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (returnTypeBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0) &&
            returnType_ != null &&
            returnType_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) {
            getReturnTypeBuilder().mergeFrom(value);
          } else {
            returnType_ = value;
          }
        } else {
          returnTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       */
      public Builder clearReturnType() {
        bitField0_ = (bitField0_ & ~0x00008000);
        returnType_ = null;
        if (returnTypeBuilder_ != null) {
          returnTypeBuilder_.dispose();
          returnTypeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getReturnTypeBuilder() {
        bitField0_ |= 0x00008000;
        onChanged();
        return getReturnTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getReturnTypeOrBuilder() {
        if (returnTypeBuilder_ != null) {
          return returnTypeBuilder_.getMessageOrBuilder();
        } else {
          return returnType_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : returnType_;
        }
      }
      /**
       * <code>.TypeDefinition return_type = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getReturnTypeFieldBuilder() {
        if (returnTypeBuilder_ == null) {
          returnTypeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  getReturnType(),
                  getParentForChildren(),
                  isClean());
          returnType_ = null;
        }
        return returnTypeBuilder_;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> attributes_ =
        java.util.Collections.emptyList();
      private void ensureAttributesIsMutable() {
        if (!((bitField0_ & 0x00010000) != 0)) {
          attributes_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition>(attributes_);
          bitField0_ |= 0x00010000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> attributesBuilder_;

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

      private java.lang.Object fullName_ = "";
      /**
       * <code>string full_name = 14;</code>
       * @return The fullName.
       */
      public java.lang.String getFullName() {
        java.lang.Object ref = fullName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fullName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string full_name = 14;</code>
       * @return The bytes for fullName.
       */
      public com.google.protobuf.ByteString
          getFullNameBytes() {
        java.lang.Object ref = fullName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fullName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string full_name = 14;</code>
       * @param value The fullName to set.
       * @return This builder for chaining.
       */
      public Builder setFullName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fullName_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>string full_name = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearFullName() {
        fullName_ = getDefaultInstance().getFullName();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <code>string full_name = 14;</code>
       * @param value The bytes for fullName to set.
       * @return This builder for chaining.
       */
      public Builder setFullNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fullName_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition declaringType_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> declaringTypeBuilder_;
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       * @return Whether the declaringType field is set.
       */
      public boolean hasDeclaringType() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       * @return The declaringType.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDeclaringType() {
        if (declaringTypeBuilder_ == null) {
          return declaringType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : declaringType_;
        } else {
          return declaringTypeBuilder_.getMessage();
        }
      }
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       */
      public Builder setDeclaringType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (declaringTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          declaringType_ = value;
        } else {
          declaringTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       */
      public Builder setDeclaringType(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (declaringTypeBuilder_ == null) {
          declaringType_ = builderForValue.build();
        } else {
          declaringTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       */
      public Builder mergeDeclaringType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (declaringTypeBuilder_ == null) {
          if (((bitField0_ & 0x00040000) != 0) &&
            declaringType_ != null &&
            declaringType_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) {
            getDeclaringTypeBuilder().mergeFrom(value);
          } else {
            declaringType_ = value;
          }
        } else {
          declaringTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       */
      public Builder clearDeclaringType() {
        bitField0_ = (bitField0_ & ~0x00040000);
        declaringType_ = null;
        if (declaringTypeBuilder_ != null) {
          declaringTypeBuilder_.dispose();
          declaringTypeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getDeclaringTypeBuilder() {
        bitField0_ |= 0x00040000;
        onChanged();
        return getDeclaringTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDeclaringTypeOrBuilder() {
        if (declaringTypeBuilder_ != null) {
          return declaringTypeBuilder_.getMessageOrBuilder();
        } else {
          return declaringType_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : declaringType_;
        }
      }
      /**
       * <code>.TypeDefinition declaring_type = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getDeclaringTypeFieldBuilder() {
        if (declaringTypeBuilder_ == null) {
          declaringTypeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  getDeclaringType(),
                  getParentForChildren(),
                  isClean());
          declaringType_ = null;
        }
        return declaringTypeBuilder_;
      }

      private int peToken_ ;
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 20;</code>
       * @return The peToken.
       */
      @java.lang.Override
      public int getPeToken() {
        return peToken_;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 20;</code>
       * @param value The peToken to set.
       * @return This builder for chaining.
       */
      public Builder setPeToken(int value) {
        
        peToken_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearPeToken() {
        bitField0_ = (bitField0_ & ~0x00080000);
        peToken_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:MethodDefinition)
    }

    // @@protoc_insertion_point(class_scope:MethodDefinition)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MethodDefinition>
        PARSER = new com.google.protobuf.AbstractParser<MethodDefinition>() {
      @java.lang.Override
      public MethodDefinition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ParameterDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ParameterDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.TypeDefinition type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>.TypeDefinition type = 1;</code>
     * @return The type.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType();
    /**
     * <code>.TypeDefinition type = 1;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder();

    /**
     * <code>string parameter_name = 2;</code>
     * @return The parameterName.
     */
    java.lang.String getParameterName();
    /**
     * <code>string parameter_name = 2;</code>
     * @return The bytes for parameterName.
     */
    com.google.protobuf.ByteString
        getParameterNameBytes();

    /**
     * <code>bool is_ref = 3;</code>
     * @return The isRef.
     */
    boolean getIsRef();

    /**
     * <code>bool is_out = 4;</code>
     * @return The isOut.
     */
    boolean getIsOut();

    /**
     * <code>bool is_in = 5;</code>
     * @return The isIn.
     */
    boolean getIsIn();

    /**
     * <code>bool is_optional = 6;</code>
     * @return The isOptional.
     */
    boolean getIsOptional();
  }
  /**
   * <pre>
   **
   *Parameter of a method
   * </pre>
   *
   * Protobuf type {@code ParameterDefinition}
   */
  public static final class ParameterDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ParameterDefinition)
      ParameterDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ParameterDefinition.newBuilder() to construct.
    private ParameterDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ParameterDefinition() {
      parameterName_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_ParameterDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_ParameterDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder.class);
    }

    public static final int TYPE_FIELD_NUMBER = 1;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition type_;
    /**
     * <code>.TypeDefinition type = 1;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return type_ != null;
    }
    /**
     * <code>.TypeDefinition type = 1;</code>
     * @return The type.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType() {
      return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
    }
    /**
     * <code>.TypeDefinition type = 1;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder() {
      return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
    }

    public static final int PARAMETER_NAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object parameterName_ = "";
    /**
     * <code>string parameter_name = 2;</code>
     * @return The parameterName.
     */
    @java.lang.Override
    public java.lang.String getParameterName() {
      java.lang.Object ref = parameterName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        parameterName_ = s;
        return s;
      }
    }
    /**
     * <code>string parameter_name = 2;</code>
     * @return The bytes for parameterName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getParameterNameBytes() {
      java.lang.Object ref = parameterName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        parameterName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IS_REF_FIELD_NUMBER = 3;
    private boolean isRef_ = false;
    /**
     * <code>bool is_ref = 3;</code>
     * @return The isRef.
     */
    @java.lang.Override
    public boolean getIsRef() {
      return isRef_;
    }

    public static final int IS_OUT_FIELD_NUMBER = 4;
    private boolean isOut_ = false;
    /**
     * <code>bool is_out = 4;</code>
     * @return The isOut.
     */
    @java.lang.Override
    public boolean getIsOut() {
      return isOut_;
    }

    public static final int IS_IN_FIELD_NUMBER = 5;
    private boolean isIn_ = false;
    /**
     * <code>bool is_in = 5;</code>
     * @return The isIn.
     */
    @java.lang.Override
    public boolean getIsIn() {
      return isIn_;
    }

    public static final int IS_OPTIONAL_FIELD_NUMBER = 6;
    private boolean isOptional_ = false;
    /**
     * <code>bool is_optional = 6;</code>
     * @return The isOptional.
     */
    @java.lang.Override
    public boolean getIsOptional() {
      return isOptional_;
    }

    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 (type_ != null) {
        output.writeMessage(1, getType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parameterName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, parameterName_);
      }
      if (isRef_ != false) {
        output.writeBool(3, isRef_);
      }
      if (isOut_ != false) {
        output.writeBool(4, isOut_);
      }
      if (isIn_ != false) {
        output.writeBool(5, isIn_);
      }
      if (isOptional_ != false) {
        output.writeBool(6, isOptional_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (type_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parameterName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, parameterName_);
      }
      if (isRef_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isRef_);
      }
      if (isOut_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isOut_);
      }
      if (isIn_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, isIn_);
      }
      if (isOptional_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, isOptional_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition other = (soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (!getParameterName()
          .equals(other.getParameterName())) return false;
      if (getIsRef()
          != other.getIsRef()) return false;
      if (getIsOut()
          != other.getIsOut()) return false;
      if (getIsIn()
          != other.getIsIn()) return false;
      if (getIsOptional()
          != other.getIsOptional()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      hash = (37 * hash) + PARAMETER_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getParameterName().hashCode();
      hash = (37 * hash) + IS_REF_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsRef());
      hash = (37 * hash) + IS_OUT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsOut());
      hash = (37 * hash) + IS_IN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsIn());
      hash = (37 * hash) + IS_OPTIONAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsOptional());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition 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 soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition 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 soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition 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(soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition 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>
     **
     *Parameter of a method
     * </pre>
     *
     * Protobuf type {@code ParameterDefinition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ParameterDefinition)
        soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_ParameterDefinition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_ParameterDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        parameterName_ = "";
        isRef_ = false;
        isOut_ = false;
        isIn_ = false;
        isOptional_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_ParameterDefinition_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition result = new soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = typeBuilder_ == null
              ? type_
              : typeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.parameterName_ = parameterName_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.isRef_ = isRef_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.isOut_ = isOut_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.isIn_ = isIn_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.isOptional_ = isOptional_;
        }
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition.getDefaultInstance()) return this;
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (!other.getParameterName().isEmpty()) {
          parameterName_ = other.parameterName_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.getIsRef() != false) {
          setIsRef(other.getIsRef());
        }
        if (other.getIsOut() != false) {
          setIsOut(other.getIsOut());
        }
        if (other.getIsIn() != false) {
          setIsIn(other.getIsIn());
        }
        if (other.getIsOptional() != false) {
          setIsOptional(other.getIsOptional());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                parameterName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                isRef_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                isOut_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                isIn_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                isOptional_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition type_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> typeBuilder_;
      /**
       * <code>.TypeDefinition type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       * @return The type.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType() {
        if (typeBuilder_ == null) {
          return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
        } else {
          return typeBuilder_.getMessage();
        }
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public Builder setType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (typeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
        } else {
          typeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public Builder setType(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (typeBuilder_ == null) {
          type_ = builderForValue.build();
        } else {
          typeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public Builder mergeType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (typeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            type_ != null &&
            type_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) {
            getTypeBuilder().mergeFrom(value);
          } else {
            type_ = value;
          }
        } else {
          typeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getTypeBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder() {
        if (typeBuilder_ != null) {
          return typeBuilder_.getMessageOrBuilder();
        } else {
          return type_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
        }
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getTypeFieldBuilder() {
        if (typeBuilder_ == null) {
          typeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  getType(),
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        return typeBuilder_;
      }

      private java.lang.Object parameterName_ = "";
      /**
       * <code>string parameter_name = 2;</code>
       * @return The parameterName.
       */
      public java.lang.String getParameterName() {
        java.lang.Object ref = parameterName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          parameterName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string parameter_name = 2;</code>
       * @return The bytes for parameterName.
       */
      public com.google.protobuf.ByteString
          getParameterNameBytes() {
        java.lang.Object ref = parameterName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          parameterName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string parameter_name = 2;</code>
       * @param value The parameterName to set.
       * @return This builder for chaining.
       */
      public Builder setParameterName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        parameterName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string parameter_name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearParameterName() {
        parameterName_ = getDefaultInstance().getParameterName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string parameter_name = 2;</code>
       * @param value The bytes for parameterName to set.
       * @return This builder for chaining.
       */
      public Builder setParameterNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        parameterName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean isRef_ ;
      /**
       * <code>bool is_ref = 3;</code>
       * @return The isRef.
       */
      @java.lang.Override
      public boolean getIsRef() {
        return isRef_;
      }
      /**
       * <code>bool is_ref = 3;</code>
       * @param value The isRef to set.
       * @return This builder for chaining.
       */
      public Builder setIsRef(boolean value) {
        
        isRef_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_ref = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsRef() {
        bitField0_ = (bitField0_ & ~0x00000004);
        isRef_ = false;
        onChanged();
        return this;
      }

      private boolean isOut_ ;
      /**
       * <code>bool is_out = 4;</code>
       * @return The isOut.
       */
      @java.lang.Override
      public boolean getIsOut() {
        return isOut_;
      }
      /**
       * <code>bool is_out = 4;</code>
       * @param value The isOut to set.
       * @return This builder for chaining.
       */
      public Builder setIsOut(boolean value) {
        
        isOut_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_out = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsOut() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isOut_ = false;
        onChanged();
        return this;
      }

      private boolean isIn_ ;
      /**
       * <code>bool is_in = 5;</code>
       * @return The isIn.
       */
      @java.lang.Override
      public boolean getIsIn() {
        return isIn_;
      }
      /**
       * <code>bool is_in = 5;</code>
       * @param value The isIn to set.
       * @return This builder for chaining.
       */
      public Builder setIsIn(boolean value) {
        
        isIn_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_in = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsIn() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isIn_ = false;
        onChanged();
        return this;
      }

      private boolean isOptional_ ;
      /**
       * <code>bool is_optional = 6;</code>
       * @return The isOptional.
       */
      @java.lang.Override
      public boolean getIsOptional() {
        return isOptional_;
      }
      /**
       * <code>bool is_optional = 6;</code>
       * @param value The isOptional to set.
       * @return This builder for chaining.
       */
      public Builder setIsOptional(boolean value) {
        
        isOptional_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_optional = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsOptional() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isOptional_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ParameterDefinition)
    }

    // @@protoc_insertion_point(class_scope:ParameterDefinition)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ParameterDefinition>
        PARSER = new com.google.protobuf.AbstractParser<ParameterDefinition>() {
      @java.lang.Override
      public ParameterDefinition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.ParameterDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FieldDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FieldDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    int getAccessibilityValue();
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility();

    /**
     * <code>bool is_abstract = 2;</code>
     * @return The isAbstract.
     */
    boolean getIsAbstract();

    /**
     * <code>bool is_sealed = 3;</code>
     * @return The isSealed.
     */
    boolean getIsSealed();

    /**
     * <code>bool is_explicit_interface_implementation = 4;</code>
     * @return The isExplicitInterfaceImplementation.
     */
    boolean getIsExplicitInterfaceImplementation();

    /**
     * <code>bool is_override = 5;</code>
     * @return The isOverride.
     */
    boolean getIsOverride();

    /**
     * <code>bool is_virtual = 6;</code>
     * @return The isVirtual.
     */
    boolean getIsVirtual();

    /**
     * <code>bool is_const = 7;</code>
     * @return The isConst.
     */
    boolean getIsConst();

    /**
     * <code>bool is_read_only = 8;</code>
     * @return The isReadOnly.
     */
    boolean getIsReadOnly();

    /**
     * <code>bool is_static = 9;</code>
     * @return The isStatic.
     */
    boolean getIsStatic();

    /**
     * <code>.TypeDefinition type = 10;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>.TypeDefinition type = 10;</code>
     * @return The type.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType();
    /**
     * <code>.TypeDefinition type = 10;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder();

    /**
     * <code>.TypeKindDef type_kind = 14;</code>
     * @return The enum numeric value on the wire for typeKind.
     */
    int getTypeKindValue();
    /**
     * <code>.TypeKindDef type_kind = 14;</code>
     * @return The typeKind.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind();

    /**
     * <code>string name = 11;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 11;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>string full_name = 12;</code>
     * @return The fullName.
     */
    java.lang.String getFullName();
    /**
     * <code>string full_name = 12;</code>
     * @return The bytes for fullName.
     */
    com.google.protobuf.ByteString
        getFullNameBytes();

    /**
     * <code>.TypeDefinition declaring_type = 13;</code>
     * @return Whether the declaringType field is set.
     */
    boolean hasDeclaringType();
    /**
     * <code>.TypeDefinition declaring_type = 13;</code>
     * @return The declaringType.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDeclaringType();
    /**
     * <code>.TypeDefinition declaring_type = 13;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDeclaringTypeOrBuilder();

    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> 
        getAttributesList();
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getAttributes(int index);
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    int getAttributesCount();
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> 
        getAttributesOrBuilderList();
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder getAttributesOrBuilder(
        int index);

    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 16;</code>
     * @return The peToken.
     */
    int getPeToken();

    /**
     * <code>string value_constant_string = 17;</code>
     * @return The valueConstantString.
     */
    java.lang.String getValueConstantString();
    /**
     * <code>string value_constant_string = 17;</code>
     * @return The bytes for valueConstantString.
     */
    com.google.protobuf.ByteString
        getValueConstantStringBytes();

    /**
     * <code>int64 value_constant_int64 = 19;</code>
     * @return The valueConstantInt64.
     */
    long getValueConstantInt64();

    /**
     * <code>float value_constant_float = 20;</code>
     * @return The valueConstantFloat.
     */
    float getValueConstantFloat();

    /**
     * <code>double value_constant_double = 21;</code>
     * @return The valueConstantDouble.
     */
    double getValueConstantDouble();

    /**
     * <code>bool value_constant_bool = 55;</code>
     * @return The valueConstantBool.
     */
    boolean getValueConstantBool();

    /**
     * <code>uint64 value_constant_uint64 = 59;</code>
     * @return The valueConstantUint64.
     */
    long getValueConstantUint64();

    /**
     * <code>.IlType constant_type = 29;</code>
     * @return The enum numeric value on the wire for constantType.
     */
    int getConstantTypeValue();
    /**
     * <code>.IlType constant_type = 29;</code>
     * @return The constantType.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.IlType getConstantType();

    /**
     * <code>optional bytes initial_value = 60;</code>
     * @return Whether the initialValue field is set.
     */
    boolean hasInitialValue();
    /**
     * <code>optional bytes initial_value = 60;</code>
     * @return The initialValue.
     */
    com.google.protobuf.ByteString getInitialValue();
  }
  /**
   * Protobuf type {@code FieldDefinition}
   */
  public static final class FieldDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:FieldDefinition)
      FieldDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FieldDefinition.newBuilder() to construct.
    private FieldDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FieldDefinition() {
      accessibility_ = 0;
      typeKind_ = 0;
      name_ = "";
      fullName_ = "";
      attributes_ = java.util.Collections.emptyList();
      valueConstantString_ = "";
      constantType_ = 0;
      initialValue_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_FieldDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_FieldDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder.class);
    }

    private int bitField0_;
    public static final int ACCESSIBILITY_FIELD_NUMBER = 1;
    private int accessibility_ = 0;
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    @java.lang.Override public int getAccessibilityValue() {
      return accessibility_;
    }
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
    }

    public static final int IS_ABSTRACT_FIELD_NUMBER = 2;
    private boolean isAbstract_ = false;
    /**
     * <code>bool is_abstract = 2;</code>
     * @return The isAbstract.
     */
    @java.lang.Override
    public boolean getIsAbstract() {
      return isAbstract_;
    }

    public static final int IS_SEALED_FIELD_NUMBER = 3;
    private boolean isSealed_ = false;
    /**
     * <code>bool is_sealed = 3;</code>
     * @return The isSealed.
     */
    @java.lang.Override
    public boolean getIsSealed() {
      return isSealed_;
    }

    public static final int IS_EXPLICIT_INTERFACE_IMPLEMENTATION_FIELD_NUMBER = 4;
    private boolean isExplicitInterfaceImplementation_ = false;
    /**
     * <code>bool is_explicit_interface_implementation = 4;</code>
     * @return The isExplicitInterfaceImplementation.
     */
    @java.lang.Override
    public boolean getIsExplicitInterfaceImplementation() {
      return isExplicitInterfaceImplementation_;
    }

    public static final int IS_OVERRIDE_FIELD_NUMBER = 5;
    private boolean isOverride_ = false;
    /**
     * <code>bool is_override = 5;</code>
     * @return The isOverride.
     */
    @java.lang.Override
    public boolean getIsOverride() {
      return isOverride_;
    }

    public static final int IS_VIRTUAL_FIELD_NUMBER = 6;
    private boolean isVirtual_ = false;
    /**
     * <code>bool is_virtual = 6;</code>
     * @return The isVirtual.
     */
    @java.lang.Override
    public boolean getIsVirtual() {
      return isVirtual_;
    }

    public static final int IS_CONST_FIELD_NUMBER = 7;
    private boolean isConst_ = false;
    /**
     * <code>bool is_const = 7;</code>
     * @return The isConst.
     */
    @java.lang.Override
    public boolean getIsConst() {
      return isConst_;
    }

    public static final int IS_READ_ONLY_FIELD_NUMBER = 8;
    private boolean isReadOnly_ = false;
    /**
     * <code>bool is_read_only = 8;</code>
     * @return The isReadOnly.
     */
    @java.lang.Override
    public boolean getIsReadOnly() {
      return isReadOnly_;
    }

    public static final int IS_STATIC_FIELD_NUMBER = 9;
    private boolean isStatic_ = false;
    /**
     * <code>bool is_static = 9;</code>
     * @return The isStatic.
     */
    @java.lang.Override
    public boolean getIsStatic() {
      return isStatic_;
    }

    public static final int TYPE_FIELD_NUMBER = 10;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition type_;
    /**
     * <code>.TypeDefinition type = 10;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return type_ != null;
    }
    /**
     * <code>.TypeDefinition type = 10;</code>
     * @return The type.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType() {
      return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
    }
    /**
     * <code>.TypeDefinition type = 10;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder() {
      return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
    }

    public static final int TYPE_KIND_FIELD_NUMBER = 14;
    private int typeKind_ = 0;
    /**
     * <code>.TypeKindDef type_kind = 14;</code>
     * @return The enum numeric value on the wire for typeKind.
     */
    @java.lang.Override public int getTypeKindValue() {
      return typeKind_;
    }
    /**
     * <code>.TypeKindDef type_kind = 14;</code>
     * @return The typeKind.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef result = soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.forNumber(typeKind_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.UNRECOGNIZED : result;
    }

    public static final int NAME_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <code>string name = 11;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 11;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FULL_NAME_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fullName_ = "";
    /**
     * <code>string full_name = 12;</code>
     * @return The fullName.
     */
    @java.lang.Override
    public java.lang.String getFullName() {
      java.lang.Object ref = fullName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fullName_ = s;
        return s;
      }
    }
    /**
     * <code>string full_name = 12;</code>
     * @return The bytes for fullName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFullNameBytes() {
      java.lang.Object ref = fullName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fullName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DECLARING_TYPE_FIELD_NUMBER = 13;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition declaringType_;
    /**
     * <code>.TypeDefinition declaring_type = 13;</code>
     * @return Whether the declaringType field is set.
     */
    @java.lang.Override
    public boolean hasDeclaringType() {
      return declaringType_ != null;
    }
    /**
     * <code>.TypeDefinition declaring_type = 13;</code>
     * @return The declaringType.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDeclaringType() {
      return declaringType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : declaringType_;
    }
    /**
     * <code>.TypeDefinition declaring_type = 13;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDeclaringTypeOrBuilder() {
      return declaringType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : declaringType_;
    }

    public static final int ATTRIBUTES_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> attributes_;
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> getAttributesList() {
      return attributes_;
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> 
        getAttributesOrBuilderList() {
      return attributes_;
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public int getAttributesCount() {
      return attributes_.size();
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getAttributes(int index) {
      return attributes_.get(index);
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 15;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder getAttributesOrBuilder(
        int index) {
      return attributes_.get(index);
    }

    public static final int PE_TOKEN_FIELD_NUMBER = 16;
    private int peToken_ = 0;
    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 16;</code>
     * @return The peToken.
     */
    @java.lang.Override
    public int getPeToken() {
      return peToken_;
    }

    public static final int VALUE_CONSTANT_STRING_FIELD_NUMBER = 17;
    @SuppressWarnings("serial")
    private volatile java.lang.Object valueConstantString_ = "";
    /**
     * <code>string value_constant_string = 17;</code>
     * @return The valueConstantString.
     */
    @java.lang.Override
    public java.lang.String getValueConstantString() {
      java.lang.Object ref = valueConstantString_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        valueConstantString_ = s;
        return s;
      }
    }
    /**
     * <code>string value_constant_string = 17;</code>
     * @return The bytes for valueConstantString.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueConstantStringBytes() {
      java.lang.Object ref = valueConstantString_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        valueConstantString_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_CONSTANT_INT64_FIELD_NUMBER = 19;
    private long valueConstantInt64_ = 0L;
    /**
     * <code>int64 value_constant_int64 = 19;</code>
     * @return The valueConstantInt64.
     */
    @java.lang.Override
    public long getValueConstantInt64() {
      return valueConstantInt64_;
    }

    public static final int VALUE_CONSTANT_FLOAT_FIELD_NUMBER = 20;
    private float valueConstantFloat_ = 0F;
    /**
     * <code>float value_constant_float = 20;</code>
     * @return The valueConstantFloat.
     */
    @java.lang.Override
    public float getValueConstantFloat() {
      return valueConstantFloat_;
    }

    public static final int VALUE_CONSTANT_DOUBLE_FIELD_NUMBER = 21;
    private double valueConstantDouble_ = 0D;
    /**
     * <code>double value_constant_double = 21;</code>
     * @return The valueConstantDouble.
     */
    @java.lang.Override
    public double getValueConstantDouble() {
      return valueConstantDouble_;
    }

    public static final int VALUE_CONSTANT_BOOL_FIELD_NUMBER = 55;
    private boolean valueConstantBool_ = false;
    /**
     * <code>bool value_constant_bool = 55;</code>
     * @return The valueConstantBool.
     */
    @java.lang.Override
    public boolean getValueConstantBool() {
      return valueConstantBool_;
    }

    public static final int VALUE_CONSTANT_UINT64_FIELD_NUMBER = 59;
    private long valueConstantUint64_ = 0L;
    /**
     * <code>uint64 value_constant_uint64 = 59;</code>
     * @return The valueConstantUint64.
     */
    @java.lang.Override
    public long getValueConstantUint64() {
      return valueConstantUint64_;
    }

    public static final int CONSTANT_TYPE_FIELD_NUMBER = 29;
    private int constantType_ = 0;
    /**
     * <code>.IlType constant_type = 29;</code>
     * @return The enum numeric value on the wire for constantType.
     */
    @java.lang.Override public int getConstantTypeValue() {
      return constantType_;
    }
    /**
     * <code>.IlType constant_type = 29;</code>
     * @return The constantType.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.IlType getConstantType() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.IlType result = soot.dotnet.proto.ProtoAssemblyAllTypes.IlType.forNumber(constantType_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.IlType.UNRECOGNIZED : result;
    }

    public static final int INITIAL_VALUE_FIELD_NUMBER = 60;
    private com.google.protobuf.ByteString initialValue_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes initial_value = 60;</code>
     * @return Whether the initialValue field is set.
     */
    @java.lang.Override
    public boolean hasInitialValue() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional bytes initial_value = 60;</code>
     * @return The initialValue.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getInitialValue() {
      return initialValue_;
    }

    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 (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        output.writeEnum(1, accessibility_);
      }
      if (isAbstract_ != false) {
        output.writeBool(2, isAbstract_);
      }
      if (isSealed_ != false) {
        output.writeBool(3, isSealed_);
      }
      if (isExplicitInterfaceImplementation_ != false) {
        output.writeBool(4, isExplicitInterfaceImplementation_);
      }
      if (isOverride_ != false) {
        output.writeBool(5, isOverride_);
      }
      if (isVirtual_ != false) {
        output.writeBool(6, isVirtual_);
      }
      if (isConst_ != false) {
        output.writeBool(7, isConst_);
      }
      if (isReadOnly_ != false) {
        output.writeBool(8, isReadOnly_);
      }
      if (isStatic_ != false) {
        output.writeBool(9, isStatic_);
      }
      if (type_ != null) {
        output.writeMessage(10, getType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fullName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, fullName_);
      }
      if (declaringType_ != null) {
        output.writeMessage(13, getDeclaringType());
      }
      if (typeKind_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.NO_TYPE.getNumber()) {
        output.writeEnum(14, typeKind_);
      }
      for (int i = 0; i < attributes_.size(); i++) {
        output.writeMessage(15, attributes_.get(i));
      }
      if (peToken_ != 0) {
        output.writeInt32(16, peToken_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(valueConstantString_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 17, valueConstantString_);
      }
      if (valueConstantInt64_ != 0L) {
        output.writeInt64(19, valueConstantInt64_);
      }
      if (java.lang.Float.floatToRawIntBits(valueConstantFloat_) != 0) {
        output.writeFloat(20, valueConstantFloat_);
      }
      if (java.lang.Double.doubleToRawLongBits(valueConstantDouble_) != 0) {
        output.writeDouble(21, valueConstantDouble_);
      }
      if (constantType_ != soot.dotnet.proto.ProtoAssemblyAllTypes.IlType.type_unknown.getNumber()) {
        output.writeEnum(29, constantType_);
      }
      if (valueConstantBool_ != false) {
        output.writeBool(55, valueConstantBool_);
      }
      if (valueConstantUint64_ != 0L) {
        output.writeUInt64(59, valueConstantUint64_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(60, initialValue_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, accessibility_);
      }
      if (isAbstract_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isAbstract_);
      }
      if (isSealed_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isSealed_);
      }
      if (isExplicitInterfaceImplementation_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isExplicitInterfaceImplementation_);
      }
      if (isOverride_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, isOverride_);
      }
      if (isVirtual_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, isVirtual_);
      }
      if (isConst_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, isConst_);
      }
      if (isReadOnly_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, isReadOnly_);
      }
      if (isStatic_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, isStatic_);
      }
      if (type_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fullName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, fullName_);
      }
      if (declaringType_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, getDeclaringType());
      }
      if (typeKind_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.NO_TYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(14, typeKind_);
      }
      for (int i = 0; i < attributes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, attributes_.get(i));
      }
      if (peToken_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(16, peToken_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(valueConstantString_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, valueConstantString_);
      }
      if (valueConstantInt64_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(19, valueConstantInt64_);
      }
      if (java.lang.Float.floatToRawIntBits(valueConstantFloat_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(20, valueConstantFloat_);
      }
      if (java.lang.Double.doubleToRawLongBits(valueConstantDouble_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(21, valueConstantDouble_);
      }
      if (constantType_ != soot.dotnet.proto.ProtoAssemblyAllTypes.IlType.type_unknown.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(29, constantType_);
      }
      if (valueConstantBool_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(55, valueConstantBool_);
      }
      if (valueConstantUint64_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(59, valueConstantUint64_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(60, initialValue_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition other = (soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition) obj;

      if (accessibility_ != other.accessibility_) return false;
      if (getIsAbstract()
          != other.getIsAbstract()) return false;
      if (getIsSealed()
          != other.getIsSealed()) return false;
      if (getIsExplicitInterfaceImplementation()
          != other.getIsExplicitInterfaceImplementation()) return false;
      if (getIsOverride()
          != other.getIsOverride()) return false;
      if (getIsVirtual()
          != other.getIsVirtual()) return false;
      if (getIsConst()
          != other.getIsConst()) return false;
      if (getIsReadOnly()
          != other.getIsReadOnly()) return false;
      if (getIsStatic()
          != other.getIsStatic()) return false;
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (typeKind_ != other.typeKind_) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getFullName()
          .equals(other.getFullName())) return false;
      if (hasDeclaringType() != other.hasDeclaringType()) return false;
      if (hasDeclaringType()) {
        if (!getDeclaringType()
            .equals(other.getDeclaringType())) return false;
      }
      if (!getAttributesList()
          .equals(other.getAttributesList())) return false;
      if (getPeToken()
          != other.getPeToken()) return false;
      if (!getValueConstantString()
          .equals(other.getValueConstantString())) return false;
      if (getValueConstantInt64()
          != other.getValueConstantInt64()) return false;
      if (java.lang.Float.floatToIntBits(getValueConstantFloat())
          != java.lang.Float.floatToIntBits(
              other.getValueConstantFloat())) return false;
      if (java.lang.Double.doubleToLongBits(getValueConstantDouble())
          != java.lang.Double.doubleToLongBits(
              other.getValueConstantDouble())) return false;
      if (getValueConstantBool()
          != other.getValueConstantBool()) return false;
      if (getValueConstantUint64()
          != other.getValueConstantUint64()) return false;
      if (constantType_ != other.constantType_) return false;
      if (hasInitialValue() != other.hasInitialValue()) return false;
      if (hasInitialValue()) {
        if (!getInitialValue()
            .equals(other.getInitialValue())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCESSIBILITY_FIELD_NUMBER;
      hash = (53 * hash) + accessibility_;
      hash = (37 * hash) + IS_ABSTRACT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsAbstract());
      hash = (37 * hash) + IS_SEALED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsSealed());
      hash = (37 * hash) + IS_EXPLICIT_INTERFACE_IMPLEMENTATION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsExplicitInterfaceImplementation());
      hash = (37 * hash) + IS_OVERRIDE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsOverride());
      hash = (37 * hash) + IS_VIRTUAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsVirtual());
      hash = (37 * hash) + IS_CONST_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsConst());
      hash = (37 * hash) + IS_READ_ONLY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsReadOnly());
      hash = (37 * hash) + IS_STATIC_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsStatic());
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      hash = (37 * hash) + TYPE_KIND_FIELD_NUMBER;
      hash = (53 * hash) + typeKind_;
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + FULL_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getFullName().hashCode();
      if (hasDeclaringType()) {
        hash = (37 * hash) + DECLARING_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getDeclaringType().hashCode();
      }
      if (getAttributesCount() > 0) {
        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
        hash = (53 * hash) + getAttributesList().hashCode();
      }
      hash = (37 * hash) + PE_TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getPeToken();
      hash = (37 * hash) + VALUE_CONSTANT_STRING_FIELD_NUMBER;
      hash = (53 * hash) + getValueConstantString().hashCode();
      hash = (37 * hash) + VALUE_CONSTANT_INT64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getValueConstantInt64());
      hash = (37 * hash) + VALUE_CONSTANT_FLOAT_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getValueConstantFloat());
      hash = (37 * hash) + VALUE_CONSTANT_DOUBLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getValueConstantDouble()));
      hash = (37 * hash) + VALUE_CONSTANT_BOOL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getValueConstantBool());
      hash = (37 * hash) + VALUE_CONSTANT_UINT64_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getValueConstantUint64());
      hash = (37 * hash) + CONSTANT_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + constantType_;
      if (hasInitialValue()) {
        hash = (37 * hash) + INITIAL_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getInitialValue().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_FieldDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        accessibility_ = 0;
        isAbstract_ = false;
        isSealed_ = false;
        isExplicitInterfaceImplementation_ = false;
        isOverride_ = false;
        isVirtual_ = false;
        isConst_ = false;
        isReadOnly_ = false;
        isStatic_ = false;
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        typeKind_ = 0;
        name_ = "";
        fullName_ = "";
        declaringType_ = null;
        if (declaringTypeBuilder_ != null) {
          declaringTypeBuilder_.dispose();
          declaringTypeBuilder_ = null;
        }
        if (attributesBuilder_ == null) {
          attributes_ = java.util.Collections.emptyList();
        } else {
          attributes_ = null;
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00004000);
        peToken_ = 0;
        valueConstantString_ = "";
        valueConstantInt64_ = 0L;
        valueConstantFloat_ = 0F;
        valueConstantDouble_ = 0D;
        valueConstantBool_ = false;
        valueConstantUint64_ = 0L;
        constantType_ = 0;
        initialValue_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_FieldDefinition_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition result = new soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition result) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0)) {
            attributes_ = java.util.Collections.unmodifiableList(attributes_);
            bitField0_ = (bitField0_ & ~0x00004000);
          }
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.accessibility_ = accessibility_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.isAbstract_ = isAbstract_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.isSealed_ = isSealed_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.isExplicitInterfaceImplementation_ = isExplicitInterfaceImplementation_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.isOverride_ = isOverride_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.isVirtual_ = isVirtual_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.isConst_ = isConst_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.isReadOnly_ = isReadOnly_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.isStatic_ = isStatic_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.type_ = typeBuilder_ == null
              ? type_
              : typeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.typeKind_ = typeKind_;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.fullName_ = fullName_;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.declaringType_ = declaringTypeBuilder_ == null
              ? declaringType_
              : declaringTypeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.peToken_ = peToken_;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.valueConstantString_ = valueConstantString_;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.valueConstantInt64_ = valueConstantInt64_;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.valueConstantFloat_ = valueConstantFloat_;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.valueConstantDouble_ = valueConstantDouble_;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.valueConstantBool_ = valueConstantBool_;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.valueConstantUint64_ = valueConstantUint64_;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          result.constantType_ = constantType_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00800000) != 0)) {
          result.initialValue_ = initialValue_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition.getDefaultInstance()) return this;
        if (other.accessibility_ != 0) {
          setAccessibilityValue(other.getAccessibilityValue());
        }
        if (other.getIsAbstract() != false) {
          setIsAbstract(other.getIsAbstract());
        }
        if (other.getIsSealed() != false) {
          setIsSealed(other.getIsSealed());
        }
        if (other.getIsExplicitInterfaceImplementation() != false) {
          setIsExplicitInterfaceImplementation(other.getIsExplicitInterfaceImplementation());
        }
        if (other.getIsOverride() != false) {
          setIsOverride(other.getIsOverride());
        }
        if (other.getIsVirtual() != false) {
          setIsVirtual(other.getIsVirtual());
        }
        if (other.getIsConst() != false) {
          setIsConst(other.getIsConst());
        }
        if (other.getIsReadOnly() != false) {
          setIsReadOnly(other.getIsReadOnly());
        }
        if (other.getIsStatic() != false) {
          setIsStatic(other.getIsStatic());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (other.typeKind_ != 0) {
          setTypeKindValue(other.getTypeKindValue());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000800;
          onChanged();
        }
        if (!other.getFullName().isEmpty()) {
          fullName_ = other.fullName_;
          bitField0_ |= 0x00001000;
          onChanged();
        }
        if (other.hasDeclaringType()) {
          mergeDeclaringType(other.getDeclaringType());
        }
        if (attributesBuilder_ == null) {
          if (!other.attributes_.isEmpty()) {
            if (attributes_.isEmpty()) {
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00004000);
            } else {
              ensureAttributesIsMutable();
              attributes_.addAll(other.attributes_);
            }
            onChanged();
          }
        } else {
          if (!other.attributes_.isEmpty()) {
            if (attributesBuilder_.isEmpty()) {
              attributesBuilder_.dispose();
              attributesBuilder_ = null;
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00004000);
              attributesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttributesFieldBuilder() : null;
            } else {
              attributesBuilder_.addAllMessages(other.attributes_);
            }
          }
        }
        if (other.getPeToken() != 0) {
          setPeToken(other.getPeToken());
        }
        if (!other.getValueConstantString().isEmpty()) {
          valueConstantString_ = other.valueConstantString_;
          bitField0_ |= 0x00010000;
          onChanged();
        }
        if (other.getValueConstantInt64() != 0L) {
          setValueConstantInt64(other.getValueConstantInt64());
        }
        if (other.getValueConstantFloat() != 0F) {
          setValueConstantFloat(other.getValueConstantFloat());
        }
        if (other.getValueConstantDouble() != 0D) {
          setValueConstantDouble(other.getValueConstantDouble());
        }
        if (other.getValueConstantBool() != false) {
          setValueConstantBool(other.getValueConstantBool());
        }
        if (other.getValueConstantUint64() != 0L) {
          setValueConstantUint64(other.getValueConstantUint64());
        }
        if (other.constantType_ != 0) {
          setConstantTypeValue(other.getConstantTypeValue());
        }
        if (other.hasInitialValue()) {
          setInitialValue(other.getInitialValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                accessibility_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                isAbstract_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                isSealed_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                isExplicitInterfaceImplementation_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                isOverride_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                isVirtual_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                isConst_ = input.readBool();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 64: {
                isReadOnly_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 72: {
                isStatic_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 82: {
                input.readMessage(
                    getTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000800;
                break;
              } // case 90
              case 98: {
                fullName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00001000;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getDeclaringTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00002000;
                break;
              } // case 106
              case 112: {
                typeKind_ = input.readEnum();
                bitField0_ |= 0x00000400;
                break;
              } // case 112
              case 122: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.parser(),
                        extensionRegistry);
                if (attributesBuilder_ == null) {
                  ensureAttributesIsMutable();
                  attributes_.add(m);
                } else {
                  attributesBuilder_.addMessage(m);
                }
                break;
              } // case 122
              case 128: {
                peToken_ = input.readInt32();
                bitField0_ |= 0x00008000;
                break;
              } // case 128
              case 138: {
                valueConstantString_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00010000;
                break;
              } // case 138
              case 152: {
                valueConstantInt64_ = input.readInt64();
                bitField0_ |= 0x00020000;
                break;
              } // case 152
              case 165: {
                valueConstantFloat_ = input.readFloat();
                bitField0_ |= 0x00040000;
                break;
              } // case 165
              case 169: {
                valueConstantDouble_ = input.readDouble();
                bitField0_ |= 0x00080000;
                break;
              } // case 169
              case 232: {
                constantType_ = input.readEnum();
                bitField0_ |= 0x00400000;
                break;
              } // case 232
              case 440: {
                valueConstantBool_ = input.readBool();
                bitField0_ |= 0x00100000;
                break;
              } // case 440
              case 472: {
                valueConstantUint64_ = input.readUInt64();
                bitField0_ |= 0x00200000;
                break;
              } // case 472
              case 482: {
                initialValue_ = input.readBytes();
                bitField0_ |= 0x00800000;
                break;
              } // case 482
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int accessibility_ = 0;
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The enum numeric value on the wire for accessibility.
       */
      @java.lang.Override public int getAccessibilityValue() {
        return accessibility_;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The enum numeric value on the wire for accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibilityValue(int value) {
        accessibility_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The accessibility.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibility(soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        accessibility_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessibility() {
        bitField0_ = (bitField0_ & ~0x00000001);
        accessibility_ = 0;
        onChanged();
        return this;
      }

      private boolean isAbstract_ ;
      /**
       * <code>bool is_abstract = 2;</code>
       * @return The isAbstract.
       */
      @java.lang.Override
      public boolean getIsAbstract() {
        return isAbstract_;
      }
      /**
       * <code>bool is_abstract = 2;</code>
       * @param value The isAbstract to set.
       * @return This builder for chaining.
       */
      public Builder setIsAbstract(boolean value) {
        
        isAbstract_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_abstract = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsAbstract() {
        bitField0_ = (bitField0_ & ~0x00000002);
        isAbstract_ = false;
        onChanged();
        return this;
      }

      private boolean isSealed_ ;
      /**
       * <code>bool is_sealed = 3;</code>
       * @return The isSealed.
       */
      @java.lang.Override
      public boolean getIsSealed() {
        return isSealed_;
      }
      /**
       * <code>bool is_sealed = 3;</code>
       * @param value The isSealed to set.
       * @return This builder for chaining.
       */
      public Builder setIsSealed(boolean value) {
        
        isSealed_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_sealed = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSealed() {
        bitField0_ = (bitField0_ & ~0x00000004);
        isSealed_ = false;
        onChanged();
        return this;
      }

      private boolean isExplicitInterfaceImplementation_ ;
      /**
       * <code>bool is_explicit_interface_implementation = 4;</code>
       * @return The isExplicitInterfaceImplementation.
       */
      @java.lang.Override
      public boolean getIsExplicitInterfaceImplementation() {
        return isExplicitInterfaceImplementation_;
      }
      /**
       * <code>bool is_explicit_interface_implementation = 4;</code>
       * @param value The isExplicitInterfaceImplementation to set.
       * @return This builder for chaining.
       */
      public Builder setIsExplicitInterfaceImplementation(boolean value) {
        
        isExplicitInterfaceImplementation_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_explicit_interface_implementation = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsExplicitInterfaceImplementation() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isExplicitInterfaceImplementation_ = false;
        onChanged();
        return this;
      }

      private boolean isOverride_ ;
      /**
       * <code>bool is_override = 5;</code>
       * @return The isOverride.
       */
      @java.lang.Override
      public boolean getIsOverride() {
        return isOverride_;
      }
      /**
       * <code>bool is_override = 5;</code>
       * @param value The isOverride to set.
       * @return This builder for chaining.
       */
      public Builder setIsOverride(boolean value) {
        
        isOverride_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_override = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsOverride() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isOverride_ = false;
        onChanged();
        return this;
      }

      private boolean isVirtual_ ;
      /**
       * <code>bool is_virtual = 6;</code>
       * @return The isVirtual.
       */
      @java.lang.Override
      public boolean getIsVirtual() {
        return isVirtual_;
      }
      /**
       * <code>bool is_virtual = 6;</code>
       * @param value The isVirtual to set.
       * @return This builder for chaining.
       */
      public Builder setIsVirtual(boolean value) {
        
        isVirtual_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_virtual = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsVirtual() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isVirtual_ = false;
        onChanged();
        return this;
      }

      private boolean isConst_ ;
      /**
       * <code>bool is_const = 7;</code>
       * @return The isConst.
       */
      @java.lang.Override
      public boolean getIsConst() {
        return isConst_;
      }
      /**
       * <code>bool is_const = 7;</code>
       * @param value The isConst to set.
       * @return This builder for chaining.
       */
      public Builder setIsConst(boolean value) {
        
        isConst_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_const = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsConst() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isConst_ = false;
        onChanged();
        return this;
      }

      private boolean isReadOnly_ ;
      /**
       * <code>bool is_read_only = 8;</code>
       * @return The isReadOnly.
       */
      @java.lang.Override
      public boolean getIsReadOnly() {
        return isReadOnly_;
      }
      /**
       * <code>bool is_read_only = 8;</code>
       * @param value The isReadOnly to set.
       * @return This builder for chaining.
       */
      public Builder setIsReadOnly(boolean value) {
        
        isReadOnly_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_read_only = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsReadOnly() {
        bitField0_ = (bitField0_ & ~0x00000080);
        isReadOnly_ = false;
        onChanged();
        return this;
      }

      private boolean isStatic_ ;
      /**
       * <code>bool is_static = 9;</code>
       * @return The isStatic.
       */
      @java.lang.Override
      public boolean getIsStatic() {
        return isStatic_;
      }
      /**
       * <code>bool is_static = 9;</code>
       * @param value The isStatic to set.
       * @return This builder for chaining.
       */
      public Builder setIsStatic(boolean value) {
        
        isStatic_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_static = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsStatic() {
        bitField0_ = (bitField0_ & ~0x00000100);
        isStatic_ = false;
        onChanged();
        return this;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition type_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> typeBuilder_;
      /**
       * <code>.TypeDefinition type = 10;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>.TypeDefinition type = 10;</code>
       * @return The type.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType() {
        if (typeBuilder_ == null) {
          return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
        } else {
          return typeBuilder_.getMessage();
        }
      }
      /**
       * <code>.TypeDefinition type = 10;</code>
       */
      public Builder setType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (typeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
        } else {
          typeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 10;</code>
       */
      public Builder setType(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (typeBuilder_ == null) {
          type_ = builderForValue.build();
        } else {
          typeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 10;</code>
       */
      public Builder mergeType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (typeBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            type_ != null &&
            type_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) {
            getTypeBuilder().mergeFrom(value);
          } else {
            type_ = value;
          }
        } else {
          typeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 10;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000200);
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 10;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getTypeBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.TypeDefinition type = 10;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder() {
        if (typeBuilder_ != null) {
          return typeBuilder_.getMessageOrBuilder();
        } else {
          return type_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
        }
      }
      /**
       * <code>.TypeDefinition type = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getTypeFieldBuilder() {
        if (typeBuilder_ == null) {
          typeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  getType(),
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        return typeBuilder_;
      }

      private int typeKind_ = 0;
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @return The enum numeric value on the wire for typeKind.
       */
      @java.lang.Override public int getTypeKindValue() {
        return typeKind_;
      }
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @param value The enum numeric value on the wire for typeKind to set.
       * @return This builder for chaining.
       */
      public Builder setTypeKindValue(int value) {
        typeKind_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @return The typeKind.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef result = soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.forNumber(typeKind_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.UNRECOGNIZED : result;
      }
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @param value The typeKind to set.
       * @return This builder for chaining.
       */
      public Builder setTypeKind(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000400;
        typeKind_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearTypeKind() {
        bitField0_ = (bitField0_ & ~0x00000400);
        typeKind_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 11;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 11;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 11;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <code>string name = 11;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }

      private java.lang.Object fullName_ = "";
      /**
       * <code>string full_name = 12;</code>
       * @return The fullName.
       */
      public java.lang.String getFullName() {
        java.lang.Object ref = fullName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fullName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string full_name = 12;</code>
       * @return The bytes for fullName.
       */
      public com.google.protobuf.ByteString
          getFullNameBytes() {
        java.lang.Object ref = fullName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fullName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string full_name = 12;</code>
       * @param value The fullName to set.
       * @return This builder for chaining.
       */
      public Builder setFullName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fullName_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>string full_name = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearFullName() {
        fullName_ = getDefaultInstance().getFullName();
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <code>string full_name = 12;</code>
       * @param value The bytes for fullName to set.
       * @return This builder for chaining.
       */
      public Builder setFullNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fullName_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition declaringType_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> declaringTypeBuilder_;
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       * @return Whether the declaringType field is set.
       */
      public boolean hasDeclaringType() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       * @return The declaringType.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getDeclaringType() {
        if (declaringTypeBuilder_ == null) {
          return declaringType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : declaringType_;
        } else {
          return declaringTypeBuilder_.getMessage();
        }
      }
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       */
      public Builder setDeclaringType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (declaringTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          declaringType_ = value;
        } else {
          declaringTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       */
      public Builder setDeclaringType(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (declaringTypeBuilder_ == null) {
          declaringType_ = builderForValue.build();
        } else {
          declaringTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       */
      public Builder mergeDeclaringType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (declaringTypeBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0) &&
            declaringType_ != null &&
            declaringType_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) {
            getDeclaringTypeBuilder().mergeFrom(value);
          } else {
            declaringType_ = value;
          }
        } else {
          declaringTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       */
      public Builder clearDeclaringType() {
        bitField0_ = (bitField0_ & ~0x00002000);
        declaringType_ = null;
        if (declaringTypeBuilder_ != null) {
          declaringTypeBuilder_.dispose();
          declaringTypeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getDeclaringTypeBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getDeclaringTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getDeclaringTypeOrBuilder() {
        if (declaringTypeBuilder_ != null) {
          return declaringTypeBuilder_.getMessageOrBuilder();
        } else {
          return declaringType_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : declaringType_;
        }
      }
      /**
       * <code>.TypeDefinition declaring_type = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getDeclaringTypeFieldBuilder() {
        if (declaringTypeBuilder_ == null) {
          declaringTypeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  getDeclaringType(),
                  getParentForChildren(),
                  isClean());
          declaringType_ = null;
        }
        return declaringTypeBuilder_;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> attributes_ =
        java.util.Collections.emptyList();
      private void ensureAttributesIsMutable() {
        if (!((bitField0_ & 0x00004000) != 0)) {
          attributes_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition>(attributes_);
          bitField0_ |= 0x00004000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> attributesBuilder_;

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

      private int peToken_ ;
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 16;</code>
       * @return The peToken.
       */
      @java.lang.Override
      public int getPeToken() {
        return peToken_;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 16;</code>
       * @param value The peToken to set.
       * @return This builder for chaining.
       */
      public Builder setPeToken(int value) {
        
        peToken_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearPeToken() {
        bitField0_ = (bitField0_ & ~0x00008000);
        peToken_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object valueConstantString_ = "";
      /**
       * <code>string value_constant_string = 17;</code>
       * @return The valueConstantString.
       */
      public java.lang.String getValueConstantString() {
        java.lang.Object ref = valueConstantString_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          valueConstantString_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string value_constant_string = 17;</code>
       * @return The bytes for valueConstantString.
       */
      public com.google.protobuf.ByteString
          getValueConstantStringBytes() {
        java.lang.Object ref = valueConstantString_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          valueConstantString_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string value_constant_string = 17;</code>
       * @param value The valueConstantString to set.
       * @return This builder for chaining.
       */
      public Builder setValueConstantString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        valueConstantString_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <code>string value_constant_string = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueConstantString() {
        valueConstantString_ = getDefaultInstance().getValueConstantString();
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }
      /**
       * <code>string value_constant_string = 17;</code>
       * @param value The bytes for valueConstantString to set.
       * @return This builder for chaining.
       */
      public Builder setValueConstantStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        valueConstantString_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }

      private long valueConstantInt64_ ;
      /**
       * <code>int64 value_constant_int64 = 19;</code>
       * @return The valueConstantInt64.
       */
      @java.lang.Override
      public long getValueConstantInt64() {
        return valueConstantInt64_;
      }
      /**
       * <code>int64 value_constant_int64 = 19;</code>
       * @param value The valueConstantInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setValueConstantInt64(long value) {
        
        valueConstantInt64_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>int64 value_constant_int64 = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueConstantInt64() {
        bitField0_ = (bitField0_ & ~0x00020000);
        valueConstantInt64_ = 0L;
        onChanged();
        return this;
      }

      private float valueConstantFloat_ ;
      /**
       * <code>float value_constant_float = 20;</code>
       * @return The valueConstantFloat.
       */
      @java.lang.Override
      public float getValueConstantFloat() {
        return valueConstantFloat_;
      }
      /**
       * <code>float value_constant_float = 20;</code>
       * @param value The valueConstantFloat to set.
       * @return This builder for chaining.
       */
      public Builder setValueConstantFloat(float value) {
        
        valueConstantFloat_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>float value_constant_float = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueConstantFloat() {
        bitField0_ = (bitField0_ & ~0x00040000);
        valueConstantFloat_ = 0F;
        onChanged();
        return this;
      }

      private double valueConstantDouble_ ;
      /**
       * <code>double value_constant_double = 21;</code>
       * @return The valueConstantDouble.
       */
      @java.lang.Override
      public double getValueConstantDouble() {
        return valueConstantDouble_;
      }
      /**
       * <code>double value_constant_double = 21;</code>
       * @param value The valueConstantDouble to set.
       * @return This builder for chaining.
       */
      public Builder setValueConstantDouble(double value) {
        
        valueConstantDouble_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <code>double value_constant_double = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueConstantDouble() {
        bitField0_ = (bitField0_ & ~0x00080000);
        valueConstantDouble_ = 0D;
        onChanged();
        return this;
      }

      private boolean valueConstantBool_ ;
      /**
       * <code>bool value_constant_bool = 55;</code>
       * @return The valueConstantBool.
       */
      @java.lang.Override
      public boolean getValueConstantBool() {
        return valueConstantBool_;
      }
      /**
       * <code>bool value_constant_bool = 55;</code>
       * @param value The valueConstantBool to set.
       * @return This builder for chaining.
       */
      public Builder setValueConstantBool(boolean value) {
        
        valueConstantBool_ = value;
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <code>bool value_constant_bool = 55;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueConstantBool() {
        bitField0_ = (bitField0_ & ~0x00100000);
        valueConstantBool_ = false;
        onChanged();
        return this;
      }

      private long valueConstantUint64_ ;
      /**
       * <code>uint64 value_constant_uint64 = 59;</code>
       * @return The valueConstantUint64.
       */
      @java.lang.Override
      public long getValueConstantUint64() {
        return valueConstantUint64_;
      }
      /**
       * <code>uint64 value_constant_uint64 = 59;</code>
       * @param value The valueConstantUint64 to set.
       * @return This builder for chaining.
       */
      public Builder setValueConstantUint64(long value) {
        
        valueConstantUint64_ = value;
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 value_constant_uint64 = 59;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueConstantUint64() {
        bitField0_ = (bitField0_ & ~0x00200000);
        valueConstantUint64_ = 0L;
        onChanged();
        return this;
      }

      private int constantType_ = 0;
      /**
       * <code>.IlType constant_type = 29;</code>
       * @return The enum numeric value on the wire for constantType.
       */
      @java.lang.Override public int getConstantTypeValue() {
        return constantType_;
      }
      /**
       * <code>.IlType constant_type = 29;</code>
       * @param value The enum numeric value on the wire for constantType to set.
       * @return This builder for chaining.
       */
      public Builder setConstantTypeValue(int value) {
        constantType_ = value;
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <code>.IlType constant_type = 29;</code>
       * @return The constantType.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.IlType getConstantType() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.IlType result = soot.dotnet.proto.ProtoAssemblyAllTypes.IlType.forNumber(constantType_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.IlType.UNRECOGNIZED : result;
      }
      /**
       * <code>.IlType constant_type = 29;</code>
       * @param value The constantType to set.
       * @return This builder for chaining.
       */
      public Builder setConstantType(soot.dotnet.proto.ProtoAssemblyAllTypes.IlType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00400000;
        constantType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.IlType constant_type = 29;</code>
       * @return This builder for chaining.
       */
      public Builder clearConstantType() {
        bitField0_ = (bitField0_ & ~0x00400000);
        constantType_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString initialValue_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes initial_value = 60;</code>
       * @return Whether the initialValue field is set.
       */
      @java.lang.Override
      public boolean hasInitialValue() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <code>optional bytes initial_value = 60;</code>
       * @return The initialValue.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getInitialValue() {
        return initialValue_;
      }
      /**
       * <code>optional bytes initial_value = 60;</code>
       * @param value The initialValue to set.
       * @return This builder for chaining.
       */
      public Builder setInitialValue(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        initialValue_ = value;
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes initial_value = 60;</code>
       * @return This builder for chaining.
       */
      public Builder clearInitialValue() {
        bitField0_ = (bitField0_ & ~0x00800000);
        initialValue_ = getDefaultInstance().getInitialValue();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:FieldDefinition)
    }

    // @@protoc_insertion_point(class_scope:FieldDefinition)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FieldDefinition>
        PARSER = new com.google.protobuf.AbstractParser<FieldDefinition>() {
      @java.lang.Override
      public FieldDefinition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.FieldDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PropertyDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PropertyDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    int getAccessibilityValue();
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility();

    /**
     * <code>bool can_get = 2;</code>
     * @return The canGet.
     */
    boolean getCanGet();

    /**
     * <code>bool can_set = 3;</code>
     * @return The canSet.
     */
    boolean getCanSet();

    /**
     * <code>bool is_abstract = 4;</code>
     * @return The isAbstract.
     */
    boolean getIsAbstract();

    /**
     * <code>bool is_sealed = 5;</code>
     * @return The isSealed.
     */
    boolean getIsSealed();

    /**
     * <code>bool is_explicit_interface_implementation = 6;</code>
     * @return The isExplicitInterfaceImplementation.
     */
    boolean getIsExplicitInterfaceImplementation();

    /**
     * <code>bool is_override = 7;</code>
     * @return The isOverride.
     */
    boolean getIsOverride();

    /**
     * <code>bool is_virtual = 8;</code>
     * @return The isVirtual.
     */
    boolean getIsVirtual();

    /**
     * <code>bool is_static = 9;</code>
     * @return The isStatic.
     */
    boolean getIsStatic();

    /**
     * <code>bool is_extern = 15;</code>
     * @return The isExtern.
     */
    boolean getIsExtern();

    /**
     * <code>.MethodDefinition getter = 10;</code>
     * @return Whether the getter field is set.
     */
    boolean hasGetter();
    /**
     * <code>.MethodDefinition getter = 10;</code>
     * @return The getter.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getGetter();
    /**
     * <code>.MethodDefinition getter = 10;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getGetterOrBuilder();

    /**
     * <code>.MethodDefinition setter = 11;</code>
     * @return Whether the setter field is set.
     */
    boolean hasSetter();
    /**
     * <code>.MethodDefinition setter = 11;</code>
     * @return The setter.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getSetter();
    /**
     * <code>.MethodDefinition setter = 11;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getSetterOrBuilder();

    /**
     * <code>.TypeDefinition type = 12;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>.TypeDefinition type = 12;</code>
     * @return The type.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType();
    /**
     * <code>.TypeDefinition type = 12;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder();

    /**
     * <code>.TypeKindDef type_kind = 14;</code>
     * @return The enum numeric value on the wire for typeKind.
     */
    int getTypeKindValue();
    /**
     * <code>.TypeKindDef type_kind = 14;</code>
     * @return The typeKind.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind();

    /**
     * <code>string name = 13;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 13;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> 
        getAttributesList();
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getAttributes(int index);
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    int getAttributesCount();
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> 
        getAttributesOrBuilderList();
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder getAttributesOrBuilder(
        int index);

    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 17;</code>
     * @return The peToken.
     */
    int getPeToken();
  }
  /**
   * Protobuf type {@code PropertyDefinition}
   */
  public static final class PropertyDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PropertyDefinition)
      PropertyDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PropertyDefinition.newBuilder() to construct.
    private PropertyDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PropertyDefinition() {
      accessibility_ = 0;
      typeKind_ = 0;
      name_ = "";
      attributes_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_PropertyDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_PropertyDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder.class);
    }

    public static final int ACCESSIBILITY_FIELD_NUMBER = 1;
    private int accessibility_ = 0;
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    @java.lang.Override public int getAccessibilityValue() {
      return accessibility_;
    }
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
    }

    public static final int CAN_GET_FIELD_NUMBER = 2;
    private boolean canGet_ = false;
    /**
     * <code>bool can_get = 2;</code>
     * @return The canGet.
     */
    @java.lang.Override
    public boolean getCanGet() {
      return canGet_;
    }

    public static final int CAN_SET_FIELD_NUMBER = 3;
    private boolean canSet_ = false;
    /**
     * <code>bool can_set = 3;</code>
     * @return The canSet.
     */
    @java.lang.Override
    public boolean getCanSet() {
      return canSet_;
    }

    public static final int IS_ABSTRACT_FIELD_NUMBER = 4;
    private boolean isAbstract_ = false;
    /**
     * <code>bool is_abstract = 4;</code>
     * @return The isAbstract.
     */
    @java.lang.Override
    public boolean getIsAbstract() {
      return isAbstract_;
    }

    public static final int IS_SEALED_FIELD_NUMBER = 5;
    private boolean isSealed_ = false;
    /**
     * <code>bool is_sealed = 5;</code>
     * @return The isSealed.
     */
    @java.lang.Override
    public boolean getIsSealed() {
      return isSealed_;
    }

    public static final int IS_EXPLICIT_INTERFACE_IMPLEMENTATION_FIELD_NUMBER = 6;
    private boolean isExplicitInterfaceImplementation_ = false;
    /**
     * <code>bool is_explicit_interface_implementation = 6;</code>
     * @return The isExplicitInterfaceImplementation.
     */
    @java.lang.Override
    public boolean getIsExplicitInterfaceImplementation() {
      return isExplicitInterfaceImplementation_;
    }

    public static final int IS_OVERRIDE_FIELD_NUMBER = 7;
    private boolean isOverride_ = false;
    /**
     * <code>bool is_override = 7;</code>
     * @return The isOverride.
     */
    @java.lang.Override
    public boolean getIsOverride() {
      return isOverride_;
    }

    public static final int IS_VIRTUAL_FIELD_NUMBER = 8;
    private boolean isVirtual_ = false;
    /**
     * <code>bool is_virtual = 8;</code>
     * @return The isVirtual.
     */
    @java.lang.Override
    public boolean getIsVirtual() {
      return isVirtual_;
    }

    public static final int IS_STATIC_FIELD_NUMBER = 9;
    private boolean isStatic_ = false;
    /**
     * <code>bool is_static = 9;</code>
     * @return The isStatic.
     */
    @java.lang.Override
    public boolean getIsStatic() {
      return isStatic_;
    }

    public static final int IS_EXTERN_FIELD_NUMBER = 15;
    private boolean isExtern_ = false;
    /**
     * <code>bool is_extern = 15;</code>
     * @return The isExtern.
     */
    @java.lang.Override
    public boolean getIsExtern() {
      return isExtern_;
    }

    public static final int GETTER_FIELD_NUMBER = 10;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getter_;
    /**
     * <code>.MethodDefinition getter = 10;</code>
     * @return Whether the getter field is set.
     */
    @java.lang.Override
    public boolean hasGetter() {
      return getter_ != null;
    }
    /**
     * <code>.MethodDefinition getter = 10;</code>
     * @return The getter.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getGetter() {
      return getter_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : getter_;
    }
    /**
     * <code>.MethodDefinition getter = 10;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getGetterOrBuilder() {
      return getter_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : getter_;
    }

    public static final int SETTER_FIELD_NUMBER = 11;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition setter_;
    /**
     * <code>.MethodDefinition setter = 11;</code>
     * @return Whether the setter field is set.
     */
    @java.lang.Override
    public boolean hasSetter() {
      return setter_ != null;
    }
    /**
     * <code>.MethodDefinition setter = 11;</code>
     * @return The setter.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getSetter() {
      return setter_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : setter_;
    }
    /**
     * <code>.MethodDefinition setter = 11;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getSetterOrBuilder() {
      return setter_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : setter_;
    }

    public static final int TYPE_FIELD_NUMBER = 12;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition type_;
    /**
     * <code>.TypeDefinition type = 12;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return type_ != null;
    }
    /**
     * <code>.TypeDefinition type = 12;</code>
     * @return The type.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType() {
      return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
    }
    /**
     * <code>.TypeDefinition type = 12;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder() {
      return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
    }

    public static final int TYPE_KIND_FIELD_NUMBER = 14;
    private int typeKind_ = 0;
    /**
     * <code>.TypeKindDef type_kind = 14;</code>
     * @return The enum numeric value on the wire for typeKind.
     */
    @java.lang.Override public int getTypeKindValue() {
      return typeKind_;
    }
    /**
     * <code>.TypeKindDef type_kind = 14;</code>
     * @return The typeKind.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef result = soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.forNumber(typeKind_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.UNRECOGNIZED : result;
    }

    public static final int NAME_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <code>string name = 13;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 13;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ATTRIBUTES_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> attributes_;
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> getAttributesList() {
      return attributes_;
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> 
        getAttributesOrBuilderList() {
      return attributes_;
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    @java.lang.Override
    public int getAttributesCount() {
      return attributes_.size();
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getAttributes(int index) {
      return attributes_.get(index);
    }
    /**
     * <code>repeated .AttributeDefinition attributes = 16;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder getAttributesOrBuilder(
        int index) {
      return attributes_.get(index);
    }

    public static final int PE_TOKEN_FIELD_NUMBER = 17;
    private int peToken_ = 0;
    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 17;</code>
     * @return The peToken.
     */
    @java.lang.Override
    public int getPeToken() {
      return peToken_;
    }

    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 (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        output.writeEnum(1, accessibility_);
      }
      if (canGet_ != false) {
        output.writeBool(2, canGet_);
      }
      if (canSet_ != false) {
        output.writeBool(3, canSet_);
      }
      if (isAbstract_ != false) {
        output.writeBool(4, isAbstract_);
      }
      if (isSealed_ != false) {
        output.writeBool(5, isSealed_);
      }
      if (isExplicitInterfaceImplementation_ != false) {
        output.writeBool(6, isExplicitInterfaceImplementation_);
      }
      if (isOverride_ != false) {
        output.writeBool(7, isOverride_);
      }
      if (isVirtual_ != false) {
        output.writeBool(8, isVirtual_);
      }
      if (isStatic_ != false) {
        output.writeBool(9, isStatic_);
      }
      if (getter_ != null) {
        output.writeMessage(10, getGetter());
      }
      if (setter_ != null) {
        output.writeMessage(11, getSetter());
      }
      if (type_ != null) {
        output.writeMessage(12, getType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, name_);
      }
      if (typeKind_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.NO_TYPE.getNumber()) {
        output.writeEnum(14, typeKind_);
      }
      if (isExtern_ != false) {
        output.writeBool(15, isExtern_);
      }
      for (int i = 0; i < attributes_.size(); i++) {
        output.writeMessage(16, attributes_.get(i));
      }
      if (peToken_ != 0) {
        output.writeInt32(17, peToken_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, accessibility_);
      }
      if (canGet_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, canGet_);
      }
      if (canSet_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, canSet_);
      }
      if (isAbstract_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isAbstract_);
      }
      if (isSealed_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, isSealed_);
      }
      if (isExplicitInterfaceImplementation_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, isExplicitInterfaceImplementation_);
      }
      if (isOverride_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, isOverride_);
      }
      if (isVirtual_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, isVirtual_);
      }
      if (isStatic_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, isStatic_);
      }
      if (getter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getGetter());
      }
      if (setter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getSetter());
      }
      if (type_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, name_);
      }
      if (typeKind_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.NO_TYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(14, typeKind_);
      }
      if (isExtern_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(15, isExtern_);
      }
      for (int i = 0; i < attributes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, attributes_.get(i));
      }
      if (peToken_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(17, peToken_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition other = (soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition) obj;

      if (accessibility_ != other.accessibility_) return false;
      if (getCanGet()
          != other.getCanGet()) return false;
      if (getCanSet()
          != other.getCanSet()) return false;
      if (getIsAbstract()
          != other.getIsAbstract()) return false;
      if (getIsSealed()
          != other.getIsSealed()) return false;
      if (getIsExplicitInterfaceImplementation()
          != other.getIsExplicitInterfaceImplementation()) return false;
      if (getIsOverride()
          != other.getIsOverride()) return false;
      if (getIsVirtual()
          != other.getIsVirtual()) return false;
      if (getIsStatic()
          != other.getIsStatic()) return false;
      if (getIsExtern()
          != other.getIsExtern()) return false;
      if (hasGetter() != other.hasGetter()) return false;
      if (hasGetter()) {
        if (!getGetter()
            .equals(other.getGetter())) return false;
      }
      if (hasSetter() != other.hasSetter()) return false;
      if (hasSetter()) {
        if (!getSetter()
            .equals(other.getSetter())) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (typeKind_ != other.typeKind_) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getAttributesList()
          .equals(other.getAttributesList())) return false;
      if (getPeToken()
          != other.getPeToken()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCESSIBILITY_FIELD_NUMBER;
      hash = (53 * hash) + accessibility_;
      hash = (37 * hash) + CAN_GET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getCanGet());
      hash = (37 * hash) + CAN_SET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getCanSet());
      hash = (37 * hash) + IS_ABSTRACT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsAbstract());
      hash = (37 * hash) + IS_SEALED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsSealed());
      hash = (37 * hash) + IS_EXPLICIT_INTERFACE_IMPLEMENTATION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsExplicitInterfaceImplementation());
      hash = (37 * hash) + IS_OVERRIDE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsOverride());
      hash = (37 * hash) + IS_VIRTUAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsVirtual());
      hash = (37 * hash) + IS_STATIC_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsStatic());
      hash = (37 * hash) + IS_EXTERN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsExtern());
      if (hasGetter()) {
        hash = (37 * hash) + GETTER_FIELD_NUMBER;
        hash = (53 * hash) + getGetter().hashCode();
      }
      if (hasSetter()) {
        hash = (37 * hash) + SETTER_FIELD_NUMBER;
        hash = (53 * hash) + getSetter().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      hash = (37 * hash) + TYPE_KIND_FIELD_NUMBER;
      hash = (53 * hash) + typeKind_;
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getAttributesCount() > 0) {
        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
        hash = (53 * hash) + getAttributesList().hashCode();
      }
      hash = (37 * hash) + PE_TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getPeToken();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_PropertyDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        accessibility_ = 0;
        canGet_ = false;
        canSet_ = false;
        isAbstract_ = false;
        isSealed_ = false;
        isExplicitInterfaceImplementation_ = false;
        isOverride_ = false;
        isVirtual_ = false;
        isStatic_ = false;
        isExtern_ = false;
        getter_ = null;
        if (getterBuilder_ != null) {
          getterBuilder_.dispose();
          getterBuilder_ = null;
        }
        setter_ = null;
        if (setterBuilder_ != null) {
          setterBuilder_.dispose();
          setterBuilder_ = null;
        }
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        typeKind_ = 0;
        name_ = "";
        if (attributesBuilder_ == null) {
          attributes_ = java.util.Collections.emptyList();
        } else {
          attributes_ = null;
          attributesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00008000);
        peToken_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_PropertyDefinition_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition result = new soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition result) {
        if (attributesBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0)) {
            attributes_ = java.util.Collections.unmodifiableList(attributes_);
            bitField0_ = (bitField0_ & ~0x00008000);
          }
          result.attributes_ = attributes_;
        } else {
          result.attributes_ = attributesBuilder_.build();
        }
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.accessibility_ = accessibility_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.canGet_ = canGet_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.canSet_ = canSet_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.isAbstract_ = isAbstract_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.isSealed_ = isSealed_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.isExplicitInterfaceImplementation_ = isExplicitInterfaceImplementation_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.isOverride_ = isOverride_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.isVirtual_ = isVirtual_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.isStatic_ = isStatic_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.isExtern_ = isExtern_;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.getter_ = getterBuilder_ == null
              ? getter_
              : getterBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.setter_ = setterBuilder_ == null
              ? setter_
              : setterBuilder_.build();
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.type_ = typeBuilder_ == null
              ? type_
              : typeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.typeKind_ = typeKind_;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.peToken_ = peToken_;
        }
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition.getDefaultInstance()) return this;
        if (other.accessibility_ != 0) {
          setAccessibilityValue(other.getAccessibilityValue());
        }
        if (other.getCanGet() != false) {
          setCanGet(other.getCanGet());
        }
        if (other.getCanSet() != false) {
          setCanSet(other.getCanSet());
        }
        if (other.getIsAbstract() != false) {
          setIsAbstract(other.getIsAbstract());
        }
        if (other.getIsSealed() != false) {
          setIsSealed(other.getIsSealed());
        }
        if (other.getIsExplicitInterfaceImplementation() != false) {
          setIsExplicitInterfaceImplementation(other.getIsExplicitInterfaceImplementation());
        }
        if (other.getIsOverride() != false) {
          setIsOverride(other.getIsOverride());
        }
        if (other.getIsVirtual() != false) {
          setIsVirtual(other.getIsVirtual());
        }
        if (other.getIsStatic() != false) {
          setIsStatic(other.getIsStatic());
        }
        if (other.getIsExtern() != false) {
          setIsExtern(other.getIsExtern());
        }
        if (other.hasGetter()) {
          mergeGetter(other.getGetter());
        }
        if (other.hasSetter()) {
          mergeSetter(other.getSetter());
        }
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (other.typeKind_ != 0) {
          setTypeKindValue(other.getTypeKindValue());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00004000;
          onChanged();
        }
        if (attributesBuilder_ == null) {
          if (!other.attributes_.isEmpty()) {
            if (attributes_.isEmpty()) {
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              ensureAttributesIsMutable();
              attributes_.addAll(other.attributes_);
            }
            onChanged();
          }
        } else {
          if (!other.attributes_.isEmpty()) {
            if (attributesBuilder_.isEmpty()) {
              attributesBuilder_.dispose();
              attributesBuilder_ = null;
              attributes_ = other.attributes_;
              bitField0_ = (bitField0_ & ~0x00008000);
              attributesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttributesFieldBuilder() : null;
            } else {
              attributesBuilder_.addAllMessages(other.attributes_);
            }
          }
        }
        if (other.getPeToken() != 0) {
          setPeToken(other.getPeToken());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                accessibility_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                canGet_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                canSet_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                isAbstract_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                isSealed_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                isExplicitInterfaceImplementation_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                isOverride_ = input.readBool();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 64: {
                isVirtual_ = input.readBool();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 72: {
                isStatic_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 82: {
                input.readMessage(
                    getGetterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getSetterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 98
              case 106: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00004000;
                break;
              } // case 106
              case 112: {
                typeKind_ = input.readEnum();
                bitField0_ |= 0x00002000;
                break;
              } // case 112
              case 120: {
                isExtern_ = input.readBool();
                bitField0_ |= 0x00000200;
                break;
              } // case 120
              case 130: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.parser(),
                        extensionRegistry);
                if (attributesBuilder_ == null) {
                  ensureAttributesIsMutable();
                  attributes_.add(m);
                } else {
                  attributesBuilder_.addMessage(m);
                }
                break;
              } // case 130
              case 136: {
                peToken_ = input.readInt32();
                bitField0_ |= 0x00010000;
                break;
              } // case 136
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int accessibility_ = 0;
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The enum numeric value on the wire for accessibility.
       */
      @java.lang.Override public int getAccessibilityValue() {
        return accessibility_;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The enum numeric value on the wire for accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibilityValue(int value) {
        accessibility_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The accessibility.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibility(soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        accessibility_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessibility() {
        bitField0_ = (bitField0_ & ~0x00000001);
        accessibility_ = 0;
        onChanged();
        return this;
      }

      private boolean canGet_ ;
      /**
       * <code>bool can_get = 2;</code>
       * @return The canGet.
       */
      @java.lang.Override
      public boolean getCanGet() {
        return canGet_;
      }
      /**
       * <code>bool can_get = 2;</code>
       * @param value The canGet to set.
       * @return This builder for chaining.
       */
      public Builder setCanGet(boolean value) {
        
        canGet_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>bool can_get = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanGet() {
        bitField0_ = (bitField0_ & ~0x00000002);
        canGet_ = false;
        onChanged();
        return this;
      }

      private boolean canSet_ ;
      /**
       * <code>bool can_set = 3;</code>
       * @return The canSet.
       */
      @java.lang.Override
      public boolean getCanSet() {
        return canSet_;
      }
      /**
       * <code>bool can_set = 3;</code>
       * @param value The canSet to set.
       * @return This builder for chaining.
       */
      public Builder setCanSet(boolean value) {
        
        canSet_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>bool can_set = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanSet() {
        bitField0_ = (bitField0_ & ~0x00000004);
        canSet_ = false;
        onChanged();
        return this;
      }

      private boolean isAbstract_ ;
      /**
       * <code>bool is_abstract = 4;</code>
       * @return The isAbstract.
       */
      @java.lang.Override
      public boolean getIsAbstract() {
        return isAbstract_;
      }
      /**
       * <code>bool is_abstract = 4;</code>
       * @param value The isAbstract to set.
       * @return This builder for chaining.
       */
      public Builder setIsAbstract(boolean value) {
        
        isAbstract_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_abstract = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsAbstract() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isAbstract_ = false;
        onChanged();
        return this;
      }

      private boolean isSealed_ ;
      /**
       * <code>bool is_sealed = 5;</code>
       * @return The isSealed.
       */
      @java.lang.Override
      public boolean getIsSealed() {
        return isSealed_;
      }
      /**
       * <code>bool is_sealed = 5;</code>
       * @param value The isSealed to set.
       * @return This builder for chaining.
       */
      public Builder setIsSealed(boolean value) {
        
        isSealed_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_sealed = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSealed() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isSealed_ = false;
        onChanged();
        return this;
      }

      private boolean isExplicitInterfaceImplementation_ ;
      /**
       * <code>bool is_explicit_interface_implementation = 6;</code>
       * @return The isExplicitInterfaceImplementation.
       */
      @java.lang.Override
      public boolean getIsExplicitInterfaceImplementation() {
        return isExplicitInterfaceImplementation_;
      }
      /**
       * <code>bool is_explicit_interface_implementation = 6;</code>
       * @param value The isExplicitInterfaceImplementation to set.
       * @return This builder for chaining.
       */
      public Builder setIsExplicitInterfaceImplementation(boolean value) {
        
        isExplicitInterfaceImplementation_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_explicit_interface_implementation = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsExplicitInterfaceImplementation() {
        bitField0_ = (bitField0_ & ~0x00000020);
        isExplicitInterfaceImplementation_ = false;
        onChanged();
        return this;
      }

      private boolean isOverride_ ;
      /**
       * <code>bool is_override = 7;</code>
       * @return The isOverride.
       */
      @java.lang.Override
      public boolean getIsOverride() {
        return isOverride_;
      }
      /**
       * <code>bool is_override = 7;</code>
       * @param value The isOverride to set.
       * @return This builder for chaining.
       */
      public Builder setIsOverride(boolean value) {
        
        isOverride_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_override = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsOverride() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isOverride_ = false;
        onChanged();
        return this;
      }

      private boolean isVirtual_ ;
      /**
       * <code>bool is_virtual = 8;</code>
       * @return The isVirtual.
       */
      @java.lang.Override
      public boolean getIsVirtual() {
        return isVirtual_;
      }
      /**
       * <code>bool is_virtual = 8;</code>
       * @param value The isVirtual to set.
       * @return This builder for chaining.
       */
      public Builder setIsVirtual(boolean value) {
        
        isVirtual_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_virtual = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsVirtual() {
        bitField0_ = (bitField0_ & ~0x00000080);
        isVirtual_ = false;
        onChanged();
        return this;
      }

      private boolean isStatic_ ;
      /**
       * <code>bool is_static = 9;</code>
       * @return The isStatic.
       */
      @java.lang.Override
      public boolean getIsStatic() {
        return isStatic_;
      }
      /**
       * <code>bool is_static = 9;</code>
       * @param value The isStatic to set.
       * @return This builder for chaining.
       */
      public Builder setIsStatic(boolean value) {
        
        isStatic_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_static = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsStatic() {
        bitField0_ = (bitField0_ & ~0x00000100);
        isStatic_ = false;
        onChanged();
        return this;
      }

      private boolean isExtern_ ;
      /**
       * <code>bool is_extern = 15;</code>
       * @return The isExtern.
       */
      @java.lang.Override
      public boolean getIsExtern() {
        return isExtern_;
      }
      /**
       * <code>bool is_extern = 15;</code>
       * @param value The isExtern to set.
       * @return This builder for chaining.
       */
      public Builder setIsExtern(boolean value) {
        
        isExtern_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_extern = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsExtern() {
        bitField0_ = (bitField0_ & ~0x00000200);
        isExtern_ = false;
        onChanged();
        return this;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> getterBuilder_;
      /**
       * <code>.MethodDefinition getter = 10;</code>
       * @return Whether the getter field is set.
       */
      public boolean hasGetter() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>.MethodDefinition getter = 10;</code>
       * @return The getter.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getGetter() {
        if (getterBuilder_ == null) {
          return getter_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : getter_;
        } else {
          return getterBuilder_.getMessage();
        }
      }
      /**
       * <code>.MethodDefinition getter = 10;</code>
       */
      public Builder setGetter(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (getterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          getter_ = value;
        } else {
          getterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition getter = 10;</code>
       */
      public Builder setGetter(
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder builderForValue) {
        if (getterBuilder_ == null) {
          getter_ = builderForValue.build();
        } else {
          getterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition getter = 10;</code>
       */
      public Builder mergeGetter(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (getterBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            getter_ != null &&
            getter_ != soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance()) {
            getGetterBuilder().mergeFrom(value);
          } else {
            getter_ = value;
          }
        } else {
          getterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition getter = 10;</code>
       */
      public Builder clearGetter() {
        bitField0_ = (bitField0_ & ~0x00000400);
        getter_ = null;
        if (getterBuilder_ != null) {
          getterBuilder_.dispose();
          getterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition getter = 10;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder getGetterBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getGetterFieldBuilder().getBuilder();
      }
      /**
       * <code>.MethodDefinition getter = 10;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getGetterOrBuilder() {
        if (getterBuilder_ != null) {
          return getterBuilder_.getMessageOrBuilder();
        } else {
          return getter_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : getter_;
        }
      }
      /**
       * <code>.MethodDefinition getter = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
          getGetterFieldBuilder() {
        if (getterBuilder_ == null) {
          getterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder>(
                  getGetter(),
                  getParentForChildren(),
                  isClean());
          getter_ = null;
        }
        return getterBuilder_;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition setter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> setterBuilder_;
      /**
       * <code>.MethodDefinition setter = 11;</code>
       * @return Whether the setter field is set.
       */
      public boolean hasSetter() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>.MethodDefinition setter = 11;</code>
       * @return The setter.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getSetter() {
        if (setterBuilder_ == null) {
          return setter_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : setter_;
        } else {
          return setterBuilder_.getMessage();
        }
      }
      /**
       * <code>.MethodDefinition setter = 11;</code>
       */
      public Builder setSetter(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (setterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          setter_ = value;
        } else {
          setterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition setter = 11;</code>
       */
      public Builder setSetter(
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder builderForValue) {
        if (setterBuilder_ == null) {
          setter_ = builderForValue.build();
        } else {
          setterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition setter = 11;</code>
       */
      public Builder mergeSetter(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (setterBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0) &&
            setter_ != null &&
            setter_ != soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance()) {
            getSetterBuilder().mergeFrom(value);
          } else {
            setter_ = value;
          }
        } else {
          setterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition setter = 11;</code>
       */
      public Builder clearSetter() {
        bitField0_ = (bitField0_ & ~0x00000800);
        setter_ = null;
        if (setterBuilder_ != null) {
          setterBuilder_.dispose();
          setterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition setter = 11;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder getSetterBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getSetterFieldBuilder().getBuilder();
      }
      /**
       * <code>.MethodDefinition setter = 11;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getSetterOrBuilder() {
        if (setterBuilder_ != null) {
          return setterBuilder_.getMessageOrBuilder();
        } else {
          return setter_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : setter_;
        }
      }
      /**
       * <code>.MethodDefinition setter = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
          getSetterFieldBuilder() {
        if (setterBuilder_ == null) {
          setterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder>(
                  getSetter(),
                  getParentForChildren(),
                  isClean());
          setter_ = null;
        }
        return setterBuilder_;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition type_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> typeBuilder_;
      /**
       * <code>.TypeDefinition type = 12;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>.TypeDefinition type = 12;</code>
       * @return The type.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType() {
        if (typeBuilder_ == null) {
          return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
        } else {
          return typeBuilder_.getMessage();
        }
      }
      /**
       * <code>.TypeDefinition type = 12;</code>
       */
      public Builder setType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (typeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
        } else {
          typeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 12;</code>
       */
      public Builder setType(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (typeBuilder_ == null) {
          type_ = builderForValue.build();
        } else {
          typeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 12;</code>
       */
      public Builder mergeType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (typeBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0) &&
            type_ != null &&
            type_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) {
            getTypeBuilder().mergeFrom(value);
          } else {
            type_ = value;
          }
        } else {
          typeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 12;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00001000);
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getTypeBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.TypeDefinition type = 12;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder() {
        if (typeBuilder_ != null) {
          return typeBuilder_.getMessageOrBuilder();
        } else {
          return type_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
        }
      }
      /**
       * <code>.TypeDefinition type = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getTypeFieldBuilder() {
        if (typeBuilder_ == null) {
          typeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  getType(),
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        return typeBuilder_;
      }

      private int typeKind_ = 0;
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @return The enum numeric value on the wire for typeKind.
       */
      @java.lang.Override public int getTypeKindValue() {
        return typeKind_;
      }
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @param value The enum numeric value on the wire for typeKind to set.
       * @return This builder for chaining.
       */
      public Builder setTypeKindValue(int value) {
        typeKind_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @return The typeKind.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef getTypeKind() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef result = soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.forNumber(typeKind_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef.UNRECOGNIZED : result;
      }
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @param value The typeKind to set.
       * @return This builder for chaining.
       */
      public Builder setTypeKind(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeKindDef value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00002000;
        typeKind_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.TypeKindDef type_kind = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearTypeKind() {
        bitField0_ = (bitField0_ & ~0x00002000);
        typeKind_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 13;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 13;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 13;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <code>string name = 13;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition> attributes_ =
        java.util.Collections.emptyList();
      private void ensureAttributesIsMutable() {
        if (!((bitField0_ & 0x00008000) != 0)) {
          attributes_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition>(attributes_);
          bitField0_ |= 0x00008000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder> attributesBuilder_;

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

      private int peToken_ ;
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 17;</code>
       * @return The peToken.
       */
      @java.lang.Override
      public int getPeToken() {
        return peToken_;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 17;</code>
       * @param value The peToken to set.
       * @return This builder for chaining.
       */
      public Builder setPeToken(int value) {
        
        peToken_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearPeToken() {
        bitField0_ = (bitField0_ & ~0x00010000);
        peToken_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:PropertyDefinition)
    }

    // @@protoc_insertion_point(class_scope:PropertyDefinition)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PropertyDefinition>
        PARSER = new com.google.protobuf.AbstractParser<PropertyDefinition>() {
      @java.lang.Override
      public PropertyDefinition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.PropertyDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AttributeDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:AttributeDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.TypeDefinition attribute_type = 1;</code>
     * @return Whether the attributeType field is set.
     */
    boolean hasAttributeType();
    /**
     * <code>.TypeDefinition attribute_type = 1;</code>
     * @return The attributeType.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getAttributeType();
    /**
     * <code>.TypeDefinition attribute_type = 1;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getAttributeTypeOrBuilder();

    /**
     * <code>string constructor = 2;</code>
     * @return The constructor.
     */
    java.lang.String getConstructor();
    /**
     * <code>string constructor = 2;</code>
     * @return The bytes for constructor.
     */
    com.google.protobuf.ByteString
        getConstructorBytes();

    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> 
        getFixedArgumentsList();
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getFixedArguments(int index);
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    int getFixedArgumentsCount();
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> 
        getFixedArgumentsOrBuilderList();
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder getFixedArgumentsOrBuilder(
        int index);

    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> 
        getNamedArgumentsList();
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getNamedArguments(int index);
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    int getNamedArgumentsCount();
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> 
        getNamedArgumentsOrBuilderList();
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder getNamedArgumentsOrBuilder(
        int index);
  }
  /**
   * <pre>
   *C# Attributes of a method (square brackets above method head)
   * </pre>
   *
   * Protobuf type {@code AttributeDefinition}
   */
  public static final class AttributeDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:AttributeDefinition)
      AttributeDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AttributeDefinition.newBuilder() to construct.
    private AttributeDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AttributeDefinition() {
      constructor_ = "";
      fixedArguments_ = java.util.Collections.emptyList();
      namedArguments_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.Builder.class);
    }

    public static final int ATTRIBUTE_TYPE_FIELD_NUMBER = 1;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition attributeType_;
    /**
     * <code>.TypeDefinition attribute_type = 1;</code>
     * @return Whether the attributeType field is set.
     */
    @java.lang.Override
    public boolean hasAttributeType() {
      return attributeType_ != null;
    }
    /**
     * <code>.TypeDefinition attribute_type = 1;</code>
     * @return The attributeType.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getAttributeType() {
      return attributeType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : attributeType_;
    }
    /**
     * <code>.TypeDefinition attribute_type = 1;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getAttributeTypeOrBuilder() {
      return attributeType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : attributeType_;
    }

    public static final int CONSTRUCTOR_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object constructor_ = "";
    /**
     * <code>string constructor = 2;</code>
     * @return The constructor.
     */
    @java.lang.Override
    public java.lang.String getConstructor() {
      java.lang.Object ref = constructor_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        constructor_ = s;
        return s;
      }
    }
    /**
     * <code>string constructor = 2;</code>
     * @return The bytes for constructor.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getConstructorBytes() {
      java.lang.Object ref = constructor_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        constructor_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIXED_ARGUMENTS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> fixedArguments_;
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> getFixedArgumentsList() {
      return fixedArguments_;
    }
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> 
        getFixedArgumentsOrBuilderList() {
      return fixedArguments_;
    }
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    @java.lang.Override
    public int getFixedArgumentsCount() {
      return fixedArguments_.size();
    }
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getFixedArguments(int index) {
      return fixedArguments_.get(index);
    }
    /**
     * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder getFixedArgumentsOrBuilder(
        int index) {
      return fixedArguments_.get(index);
    }

    public static final int NAMED_ARGUMENTS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> namedArguments_;
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    @java.lang.Override
    public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> getNamedArgumentsList() {
      return namedArguments_;
    }
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> 
        getNamedArgumentsOrBuilderList() {
      return namedArguments_;
    }
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    @java.lang.Override
    public int getNamedArgumentsCount() {
      return namedArguments_.size();
    }
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getNamedArguments(int index) {
      return namedArguments_.get(index);
    }
    /**
     * <pre>
     * ILspy uses fixed arg
     * </pre>
     *
     * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder getNamedArgumentsOrBuilder(
        int index) {
      return namedArguments_.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 (attributeType_ != null) {
        output.writeMessage(1, getAttributeType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constructor_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constructor_);
      }
      for (int i = 0; i < fixedArguments_.size(); i++) {
        output.writeMessage(3, fixedArguments_.get(i));
      }
      for (int i = 0; i < namedArguments_.size(); i++) {
        output.writeMessage(4, namedArguments_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (attributeType_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAttributeType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constructor_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constructor_);
      }
      for (int i = 0; i < fixedArguments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, fixedArguments_.get(i));
      }
      for (int i = 0; i < namedArguments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, namedArguments_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition other = (soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition) obj;

      if (hasAttributeType() != other.hasAttributeType()) return false;
      if (hasAttributeType()) {
        if (!getAttributeType()
            .equals(other.getAttributeType())) return false;
      }
      if (!getConstructor()
          .equals(other.getConstructor())) return false;
      if (!getFixedArgumentsList()
          .equals(other.getFixedArgumentsList())) return false;
      if (!getNamedArgumentsList()
          .equals(other.getNamedArgumentsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasAttributeType()) {
        hash = (37 * hash) + ATTRIBUTE_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getAttributeType().hashCode();
      }
      hash = (37 * hash) + CONSTRUCTOR_FIELD_NUMBER;
      hash = (53 * hash) + getConstructor().hashCode();
      if (getFixedArgumentsCount() > 0) {
        hash = (37 * hash) + FIXED_ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getFixedArgumentsList().hashCode();
      }
      if (getNamedArgumentsCount() > 0) {
        hash = (37 * hash) + NAMED_ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getNamedArgumentsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition 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 soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition 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 soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition 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(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition 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>
     *C# Attributes of a method (square brackets above method head)
     * </pre>
     *
     * Protobuf type {@code AttributeDefinition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:AttributeDefinition)
        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeDefinition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        attributeType_ = null;
        if (attributeTypeBuilder_ != null) {
          attributeTypeBuilder_.dispose();
          attributeTypeBuilder_ = null;
        }
        constructor_ = "";
        if (fixedArgumentsBuilder_ == null) {
          fixedArguments_ = java.util.Collections.emptyList();
        } else {
          fixedArguments_ = null;
          fixedArgumentsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (namedArgumentsBuilder_ == null) {
          namedArguments_ = java.util.Collections.emptyList();
        } else {
          namedArguments_ = null;
          namedArgumentsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeDefinition_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition result = new soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition result) {
        if (fixedArgumentsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            fixedArguments_ = java.util.Collections.unmodifiableList(fixedArguments_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.fixedArguments_ = fixedArguments_;
        } else {
          result.fixedArguments_ = fixedArgumentsBuilder_.build();
        }
        if (namedArgumentsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            namedArguments_ = java.util.Collections.unmodifiableList(namedArguments_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.namedArguments_ = namedArguments_;
        } else {
          result.namedArguments_ = namedArgumentsBuilder_.build();
        }
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.attributeType_ = attributeTypeBuilder_ == null
              ? attributeType_
              : attributeTypeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.constructor_ = constructor_;
        }
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition.getDefaultInstance()) return this;
        if (other.hasAttributeType()) {
          mergeAttributeType(other.getAttributeType());
        }
        if (!other.getConstructor().isEmpty()) {
          constructor_ = other.constructor_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (fixedArgumentsBuilder_ == null) {
          if (!other.fixedArguments_.isEmpty()) {
            if (fixedArguments_.isEmpty()) {
              fixedArguments_ = other.fixedArguments_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureFixedArgumentsIsMutable();
              fixedArguments_.addAll(other.fixedArguments_);
            }
            onChanged();
          }
        } else {
          if (!other.fixedArguments_.isEmpty()) {
            if (fixedArgumentsBuilder_.isEmpty()) {
              fixedArgumentsBuilder_.dispose();
              fixedArgumentsBuilder_ = null;
              fixedArguments_ = other.fixedArguments_;
              bitField0_ = (bitField0_ & ~0x00000004);
              fixedArgumentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFixedArgumentsFieldBuilder() : null;
            } else {
              fixedArgumentsBuilder_.addAllMessages(other.fixedArguments_);
            }
          }
        }
        if (namedArgumentsBuilder_ == null) {
          if (!other.namedArguments_.isEmpty()) {
            if (namedArguments_.isEmpty()) {
              namedArguments_ = other.namedArguments_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureNamedArgumentsIsMutable();
              namedArguments_.addAll(other.namedArguments_);
            }
            onChanged();
          }
        } else {
          if (!other.namedArguments_.isEmpty()) {
            if (namedArgumentsBuilder_.isEmpty()) {
              namedArgumentsBuilder_.dispose();
              namedArgumentsBuilder_ = null;
              namedArguments_ = other.namedArguments_;
              bitField0_ = (bitField0_ & ~0x00000008);
              namedArgumentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNamedArgumentsFieldBuilder() : null;
            } else {
              namedArgumentsBuilder_.addAllMessages(other.namedArguments_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAttributeTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                constructor_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.parser(),
                        extensionRegistry);
                if (fixedArgumentsBuilder_ == null) {
                  ensureFixedArgumentsIsMutable();
                  fixedArguments_.add(m);
                } else {
                  fixedArgumentsBuilder_.addMessage(m);
                }
                break;
              } // case 26
              case 34: {
                soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition m =
                    input.readMessage(
                        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.parser(),
                        extensionRegistry);
                if (namedArgumentsBuilder_ == null) {
                  ensureNamedArgumentsIsMutable();
                  namedArguments_.add(m);
                } else {
                  namedArgumentsBuilder_.addMessage(m);
                }
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition attributeType_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> attributeTypeBuilder_;
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       * @return Whether the attributeType field is set.
       */
      public boolean hasAttributeType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       * @return The attributeType.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getAttributeType() {
        if (attributeTypeBuilder_ == null) {
          return attributeType_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : attributeType_;
        } else {
          return attributeTypeBuilder_.getMessage();
        }
      }
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       */
      public Builder setAttributeType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (attributeTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attributeType_ = value;
        } else {
          attributeTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       */
      public Builder setAttributeType(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (attributeTypeBuilder_ == null) {
          attributeType_ = builderForValue.build();
        } else {
          attributeTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       */
      public Builder mergeAttributeType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (attributeTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            attributeType_ != null &&
            attributeType_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) {
            getAttributeTypeBuilder().mergeFrom(value);
          } else {
            attributeType_ = value;
          }
        } else {
          attributeTypeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       */
      public Builder clearAttributeType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        attributeType_ = null;
        if (attributeTypeBuilder_ != null) {
          attributeTypeBuilder_.dispose();
          attributeTypeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getAttributeTypeBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getAttributeTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getAttributeTypeOrBuilder() {
        if (attributeTypeBuilder_ != null) {
          return attributeTypeBuilder_.getMessageOrBuilder();
        } else {
          return attributeType_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : attributeType_;
        }
      }
      /**
       * <code>.TypeDefinition attribute_type = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getAttributeTypeFieldBuilder() {
        if (attributeTypeBuilder_ == null) {
          attributeTypeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  getAttributeType(),
                  getParentForChildren(),
                  isClean());
          attributeType_ = null;
        }
        return attributeTypeBuilder_;
      }

      private java.lang.Object constructor_ = "";
      /**
       * <code>string constructor = 2;</code>
       * @return The constructor.
       */
      public java.lang.String getConstructor() {
        java.lang.Object ref = constructor_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          constructor_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string constructor = 2;</code>
       * @return The bytes for constructor.
       */
      public com.google.protobuf.ByteString
          getConstructorBytes() {
        java.lang.Object ref = constructor_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          constructor_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string constructor = 2;</code>
       * @param value The constructor to set.
       * @return This builder for chaining.
       */
      public Builder setConstructor(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        constructor_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string constructor = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearConstructor() {
        constructor_ = getDefaultInstance().getConstructor();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string constructor = 2;</code>
       * @param value The bytes for constructor to set.
       * @return This builder for chaining.
       */
      public Builder setConstructorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        constructor_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> fixedArguments_ =
        java.util.Collections.emptyList();
      private void ensureFixedArgumentsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          fixedArguments_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition>(fixedArguments_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> fixedArgumentsBuilder_;

      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> getFixedArgumentsList() {
        if (fixedArgumentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fixedArguments_);
        } else {
          return fixedArgumentsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public int getFixedArgumentsCount() {
        if (fixedArgumentsBuilder_ == null) {
          return fixedArguments_.size();
        } else {
          return fixedArgumentsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getFixedArguments(int index) {
        if (fixedArgumentsBuilder_ == null) {
          return fixedArguments_.get(index);
        } else {
          return fixedArgumentsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder setFixedArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition value) {
        if (fixedArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFixedArgumentsIsMutable();
          fixedArguments_.set(index, value);
          onChanged();
        } else {
          fixedArgumentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder setFixedArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder builderForValue) {
        if (fixedArgumentsBuilder_ == null) {
          ensureFixedArgumentsIsMutable();
          fixedArguments_.set(index, builderForValue.build());
          onChanged();
        } else {
          fixedArgumentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder addFixedArguments(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition value) {
        if (fixedArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFixedArgumentsIsMutable();
          fixedArguments_.add(value);
          onChanged();
        } else {
          fixedArgumentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder addFixedArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition value) {
        if (fixedArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFixedArgumentsIsMutable();
          fixedArguments_.add(index, value);
          onChanged();
        } else {
          fixedArgumentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder addFixedArguments(
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder builderForValue) {
        if (fixedArgumentsBuilder_ == null) {
          ensureFixedArgumentsIsMutable();
          fixedArguments_.add(builderForValue.build());
          onChanged();
        } else {
          fixedArgumentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder addFixedArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder builderForValue) {
        if (fixedArgumentsBuilder_ == null) {
          ensureFixedArgumentsIsMutable();
          fixedArguments_.add(index, builderForValue.build());
          onChanged();
        } else {
          fixedArgumentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder addAllFixedArguments(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> values) {
        if (fixedArgumentsBuilder_ == null) {
          ensureFixedArgumentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fixedArguments_);
          onChanged();
        } else {
          fixedArgumentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder clearFixedArguments() {
        if (fixedArgumentsBuilder_ == null) {
          fixedArguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          fixedArgumentsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public Builder removeFixedArguments(int index) {
        if (fixedArgumentsBuilder_ == null) {
          ensureFixedArgumentsIsMutable();
          fixedArguments_.remove(index);
          onChanged();
        } else {
          fixedArgumentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder getFixedArgumentsBuilder(
          int index) {
        return getFixedArgumentsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder getFixedArgumentsOrBuilder(
          int index) {
        if (fixedArgumentsBuilder_ == null) {
          return fixedArguments_.get(index);  } else {
          return fixedArgumentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> 
           getFixedArgumentsOrBuilderList() {
        if (fixedArgumentsBuilder_ != null) {
          return fixedArgumentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fixedArguments_);
        }
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder addFixedArgumentsBuilder() {
        return getFixedArgumentsFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder addFixedArgumentsBuilder(
          int index) {
        return getFixedArgumentsFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.getDefaultInstance());
      }
      /**
       * <code>repeated .AttributeArgumentDefinition fixed_arguments = 3;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder> 
           getFixedArgumentsBuilderList() {
        return getFixedArgumentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> 
          getFixedArgumentsFieldBuilder() {
        if (fixedArgumentsBuilder_ == null) {
          fixedArgumentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder>(
                  fixedArguments_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          fixedArguments_ = null;
        }
        return fixedArgumentsBuilder_;
      }

      private java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> namedArguments_ =
        java.util.Collections.emptyList();
      private void ensureNamedArgumentsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          namedArguments_ = new java.util.ArrayList<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition>(namedArguments_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> namedArgumentsBuilder_;

      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> getNamedArgumentsList() {
        if (namedArgumentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(namedArguments_);
        } else {
          return namedArgumentsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public int getNamedArgumentsCount() {
        if (namedArgumentsBuilder_ == null) {
          return namedArguments_.size();
        } else {
          return namedArgumentsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getNamedArguments(int index) {
        if (namedArgumentsBuilder_ == null) {
          return namedArguments_.get(index);
        } else {
          return namedArgumentsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder setNamedArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition value) {
        if (namedArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNamedArgumentsIsMutable();
          namedArguments_.set(index, value);
          onChanged();
        } else {
          namedArgumentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder setNamedArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder builderForValue) {
        if (namedArgumentsBuilder_ == null) {
          ensureNamedArgumentsIsMutable();
          namedArguments_.set(index, builderForValue.build());
          onChanged();
        } else {
          namedArgumentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder addNamedArguments(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition value) {
        if (namedArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNamedArgumentsIsMutable();
          namedArguments_.add(value);
          onChanged();
        } else {
          namedArgumentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder addNamedArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition value) {
        if (namedArgumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNamedArgumentsIsMutable();
          namedArguments_.add(index, value);
          onChanged();
        } else {
          namedArgumentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder addNamedArguments(
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder builderForValue) {
        if (namedArgumentsBuilder_ == null) {
          ensureNamedArgumentsIsMutable();
          namedArguments_.add(builderForValue.build());
          onChanged();
        } else {
          namedArgumentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder addNamedArguments(
          int index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder builderForValue) {
        if (namedArgumentsBuilder_ == null) {
          ensureNamedArgumentsIsMutable();
          namedArguments_.add(index, builderForValue.build());
          onChanged();
        } else {
          namedArgumentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder addAllNamedArguments(
          java.lang.Iterable<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition> values) {
        if (namedArgumentsBuilder_ == null) {
          ensureNamedArgumentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, namedArguments_);
          onChanged();
        } else {
          namedArgumentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder clearNamedArguments() {
        if (namedArgumentsBuilder_ == null) {
          namedArguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          namedArgumentsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public Builder removeNamedArguments(int index) {
        if (namedArgumentsBuilder_ == null) {
          ensureNamedArgumentsIsMutable();
          namedArguments_.remove(index);
          onChanged();
        } else {
          namedArgumentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder getNamedArgumentsBuilder(
          int index) {
        return getNamedArgumentsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder getNamedArgumentsOrBuilder(
          int index) {
        if (namedArgumentsBuilder_ == null) {
          return namedArguments_.get(index);  } else {
          return namedArgumentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public java.util.List<? extends soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> 
           getNamedArgumentsOrBuilderList() {
        if (namedArgumentsBuilder_ != null) {
          return namedArgumentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(namedArguments_);
        }
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder addNamedArgumentsBuilder() {
        return getNamedArgumentsFieldBuilder().addBuilder(
            soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder addNamedArgumentsBuilder(
          int index) {
        return getNamedArgumentsFieldBuilder().addBuilder(
            index, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * ILspy uses fixed arg
       * </pre>
       *
       * <code>repeated .AttributeArgumentDefinition named_arguments = 4;</code>
       */
      public java.util.List<soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder> 
           getNamedArgumentsBuilderList() {
        return getNamedArgumentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder> 
          getNamedArgumentsFieldBuilder() {
        if (namedArgumentsBuilder_ == null) {
          namedArgumentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinitionOrBuilder>(
                  namedArguments_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          namedArguments_ = null;
        }
        return namedArgumentsBuilder_;
      }
      @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:AttributeDefinition)
    }

    // @@protoc_insertion_point(class_scope:AttributeDefinition)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AttributeDefinition>
        PARSER = new com.google.protobuf.AbstractParser<AttributeDefinition>() {
      @java.lang.Override
      public AttributeDefinition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AttributeArgumentDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:AttributeArgumentDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.TypeDefinition type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>.TypeDefinition type = 1;</code>
     * @return The type.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType();
    /**
     * <code>.TypeDefinition type = 1;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder();

    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated string value_string = 3;</code>
     * @return A list containing the valueString.
     */
    java.util.List<java.lang.String>
        getValueStringList();
    /**
     * <code>repeated string value_string = 3;</code>
     * @return The count of valueString.
     */
    int getValueStringCount();
    /**
     * <code>repeated string value_string = 3;</code>
     * @param index The index of the element to return.
     * @return The valueString at the given index.
     */
    java.lang.String getValueString(int index);
    /**
     * <code>repeated string value_string = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the valueString at the given index.
     */
    com.google.protobuf.ByteString
        getValueStringBytes(int index);

    /**
     * <code>repeated int32 value_int32 = 4;</code>
     * @return A list containing the valueInt32.
     */
    java.util.List<java.lang.Integer> getValueInt32List();
    /**
     * <code>repeated int32 value_int32 = 4;</code>
     * @return The count of valueInt32.
     */
    int getValueInt32Count();
    /**
     * <code>repeated int32 value_int32 = 4;</code>
     * @param index The index of the element to return.
     * @return The valueInt32 at the given index.
     */
    int getValueInt32(int index);

    /**
     * <code>repeated int64 value_int64 = 5;</code>
     * @return A list containing the valueInt64.
     */
    java.util.List<java.lang.Long> getValueInt64List();
    /**
     * <code>repeated int64 value_int64 = 5;</code>
     * @return The count of valueInt64.
     */
    int getValueInt64Count();
    /**
     * <code>repeated int64 value_int64 = 5;</code>
     * @param index The index of the element to return.
     * @return The valueInt64 at the given index.
     */
    long getValueInt64(int index);

    /**
     * <code>repeated double value_double = 6;</code>
     * @return A list containing the valueDouble.
     */
    java.util.List<java.lang.Double> getValueDoubleList();
    /**
     * <code>repeated double value_double = 6;</code>
     * @return The count of valueDouble.
     */
    int getValueDoubleCount();
    /**
     * <code>repeated double value_double = 6;</code>
     * @param index The index of the element to return.
     * @return The valueDouble at the given index.
     */
    double getValueDouble(int index);

    /**
     * <code>repeated float value_float = 7;</code>
     * @return A list containing the valueFloat.
     */
    java.util.List<java.lang.Float> getValueFloatList();
    /**
     * <code>repeated float value_float = 7;</code>
     * @return The count of valueFloat.
     */
    int getValueFloatCount();
    /**
     * <code>repeated float value_float = 7;</code>
     * @param index The index of the element to return.
     * @return The valueFloat at the given index.
     */
    float getValueFloat(int index);
  }
  /**
   * Protobuf type {@code AttributeArgumentDefinition}
   */
  public static final class AttributeArgumentDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:AttributeArgumentDefinition)
      AttributeArgumentDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AttributeArgumentDefinition.newBuilder() to construct.
    private AttributeArgumentDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AttributeArgumentDefinition() {
      name_ = "";
      valueString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      valueInt32_ = emptyIntList();
      valueInt64_ = emptyLongList();
      valueDouble_ = emptyDoubleList();
      valueFloat_ = emptyFloatList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeArgumentDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeArgumentDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder.class);
    }

    public static final int TYPE_FIELD_NUMBER = 1;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition type_;
    /**
     * <code>.TypeDefinition type = 1;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return type_ != null;
    }
    /**
     * <code>.TypeDefinition type = 1;</code>
     * @return The type.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType() {
      return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
    }
    /**
     * <code>.TypeDefinition type = 1;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder() {
      return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_STRING_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList valueString_;
    /**
     * <code>repeated string value_string = 3;</code>
     * @return A list containing the valueString.
     */
    public com.google.protobuf.ProtocolStringList
        getValueStringList() {
      return valueString_;
    }
    /**
     * <code>repeated string value_string = 3;</code>
     * @return The count of valueString.
     */
    public int getValueStringCount() {
      return valueString_.size();
    }
    /**
     * <code>repeated string value_string = 3;</code>
     * @param index The index of the element to return.
     * @return The valueString at the given index.
     */
    public java.lang.String getValueString(int index) {
      return valueString_.get(index);
    }
    /**
     * <code>repeated string value_string = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the valueString at the given index.
     */
    public com.google.protobuf.ByteString
        getValueStringBytes(int index) {
      return valueString_.getByteString(index);
    }

    public static final int VALUE_INT32_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList valueInt32_;
    /**
     * <code>repeated int32 value_int32 = 4;</code>
     * @return A list containing the valueInt32.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getValueInt32List() {
      return valueInt32_;
    }
    /**
     * <code>repeated int32 value_int32 = 4;</code>
     * @return The count of valueInt32.
     */
    public int getValueInt32Count() {
      return valueInt32_.size();
    }
    /**
     * <code>repeated int32 value_int32 = 4;</code>
     * @param index The index of the element to return.
     * @return The valueInt32 at the given index.
     */
    public int getValueInt32(int index) {
      return valueInt32_.getInt(index);
    }
    private int valueInt32MemoizedSerializedSize = -1;

    public static final int VALUE_INT64_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList valueInt64_;
    /**
     * <code>repeated int64 value_int64 = 5;</code>
     * @return A list containing the valueInt64.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getValueInt64List() {
      return valueInt64_;
    }
    /**
     * <code>repeated int64 value_int64 = 5;</code>
     * @return The count of valueInt64.
     */
    public int getValueInt64Count() {
      return valueInt64_.size();
    }
    /**
     * <code>repeated int64 value_int64 = 5;</code>
     * @param index The index of the element to return.
     * @return The valueInt64 at the given index.
     */
    public long getValueInt64(int index) {
      return valueInt64_.getLong(index);
    }
    private int valueInt64MemoizedSerializedSize = -1;

    public static final int VALUE_DOUBLE_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.DoubleList valueDouble_;
    /**
     * <code>repeated double value_double = 6;</code>
     * @return A list containing the valueDouble.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getValueDoubleList() {
      return valueDouble_;
    }
    /**
     * <code>repeated double value_double = 6;</code>
     * @return The count of valueDouble.
     */
    public int getValueDoubleCount() {
      return valueDouble_.size();
    }
    /**
     * <code>repeated double value_double = 6;</code>
     * @param index The index of the element to return.
     * @return The valueDouble at the given index.
     */
    public double getValueDouble(int index) {
      return valueDouble_.getDouble(index);
    }
    private int valueDoubleMemoizedSerializedSize = -1;

    public static final int VALUE_FLOAT_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.FloatList valueFloat_;
    /**
     * <code>repeated float value_float = 7;</code>
     * @return A list containing the valueFloat.
     */
    @java.lang.Override
    public java.util.List<java.lang.Float>
        getValueFloatList() {
      return valueFloat_;
    }
    /**
     * <code>repeated float value_float = 7;</code>
     * @return The count of valueFloat.
     */
    public int getValueFloatCount() {
      return valueFloat_.size();
    }
    /**
     * <code>repeated float value_float = 7;</code>
     * @param index The index of the element to return.
     * @return The valueFloat at the given index.
     */
    public float getValueFloat(int index) {
      return valueFloat_.getFloat(index);
    }
    private int valueFloatMemoizedSerializedSize = -1;

    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 {
      getSerializedSize();
      if (type_ != null) {
        output.writeMessage(1, getType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      for (int i = 0; i < valueString_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, valueString_.getRaw(i));
      }
      if (getValueInt32List().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(valueInt32MemoizedSerializedSize);
      }
      for (int i = 0; i < valueInt32_.size(); i++) {
        output.writeInt32NoTag(valueInt32_.getInt(i));
      }
      if (getValueInt64List().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(valueInt64MemoizedSerializedSize);
      }
      for (int i = 0; i < valueInt64_.size(); i++) {
        output.writeInt64NoTag(valueInt64_.getLong(i));
      }
      if (getValueDoubleList().size() > 0) {
        output.writeUInt32NoTag(50);
        output.writeUInt32NoTag(valueDoubleMemoizedSerializedSize);
      }
      for (int i = 0; i < valueDouble_.size(); i++) {
        output.writeDoubleNoTag(valueDouble_.getDouble(i));
      }
      if (getValueFloatList().size() > 0) {
        output.writeUInt32NoTag(58);
        output.writeUInt32NoTag(valueFloatMemoizedSerializedSize);
      }
      for (int i = 0; i < valueFloat_.size(); i++) {
        output.writeFloatNoTag(valueFloat_.getFloat(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (type_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getType());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < valueString_.size(); i++) {
          dataSize += computeStringSizeNoTag(valueString_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValueStringList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < valueInt32_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(valueInt32_.getInt(i));
        }
        size += dataSize;
        if (!getValueInt32List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        valueInt32MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < valueInt64_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(valueInt64_.getLong(i));
        }
        size += dataSize;
        if (!getValueInt64List().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        valueInt64MemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getValueDoubleList().size();
        size += dataSize;
        if (!getValueDoubleList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        valueDoubleMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getValueFloatList().size();
        size += dataSize;
        if (!getValueFloatList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        valueFloatMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition other = (soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (!getValueStringList()
          .equals(other.getValueStringList())) return false;
      if (!getValueInt32List()
          .equals(other.getValueInt32List())) return false;
      if (!getValueInt64List()
          .equals(other.getValueInt64List())) return false;
      if (!getValueDoubleList()
          .equals(other.getValueDoubleList())) return false;
      if (!getValueFloatList()
          .equals(other.getValueFloatList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getValueStringCount() > 0) {
        hash = (37 * hash) + VALUE_STRING_FIELD_NUMBER;
        hash = (53 * hash) + getValueStringList().hashCode();
      }
      if (getValueInt32Count() > 0) {
        hash = (37 * hash) + VALUE_INT32_FIELD_NUMBER;
        hash = (53 * hash) + getValueInt32List().hashCode();
      }
      if (getValueInt64Count() > 0) {
        hash = (37 * hash) + VALUE_INT64_FIELD_NUMBER;
        hash = (53 * hash) + getValueInt64List().hashCode();
      }
      if (getValueDoubleCount() > 0) {
        hash = (37 * hash) + VALUE_DOUBLE_FIELD_NUMBER;
        hash = (53 * hash) + getValueDoubleList().hashCode();
      }
      if (getValueFloatCount() > 0) {
        hash = (37 * hash) + VALUE_FLOAT_FIELD_NUMBER;
        hash = (53 * hash) + getValueFloatList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeArgumentDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        name_ = "";
        valueString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        valueInt32_ = emptyIntList();
        valueInt64_ = emptyLongList();
        valueDouble_ = emptyDoubleList();
        valueFloat_ = emptyFloatList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_AttributeArgumentDefinition_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition result = new soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition result) {
        if (((bitField0_ & 0x00000004) != 0)) {
          valueString_ = valueString_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.valueString_ = valueString_;
        if (((bitField0_ & 0x00000008) != 0)) {
          valueInt32_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.valueInt32_ = valueInt32_;
        if (((bitField0_ & 0x00000010) != 0)) {
          valueInt64_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.valueInt64_ = valueInt64_;
        if (((bitField0_ & 0x00000020) != 0)) {
          valueDouble_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.valueDouble_ = valueDouble_;
        if (((bitField0_ & 0x00000040) != 0)) {
          valueFloat_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.valueFloat_ = valueFloat_;
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = typeBuilder_ == null
              ? type_
              : typeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.name_ = name_;
        }
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition.getDefaultInstance()) return this;
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.valueString_.isEmpty()) {
          if (valueString_.isEmpty()) {
            valueString_ = other.valueString_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureValueStringIsMutable();
            valueString_.addAll(other.valueString_);
          }
          onChanged();
        }
        if (!other.valueInt32_.isEmpty()) {
          if (valueInt32_.isEmpty()) {
            valueInt32_ = other.valueInt32_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureValueInt32IsMutable();
            valueInt32_.addAll(other.valueInt32_);
          }
          onChanged();
        }
        if (!other.valueInt64_.isEmpty()) {
          if (valueInt64_.isEmpty()) {
            valueInt64_ = other.valueInt64_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureValueInt64IsMutable();
            valueInt64_.addAll(other.valueInt64_);
          }
          onChanged();
        }
        if (!other.valueDouble_.isEmpty()) {
          if (valueDouble_.isEmpty()) {
            valueDouble_ = other.valueDouble_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureValueDoubleIsMutable();
            valueDouble_.addAll(other.valueDouble_);
          }
          onChanged();
        }
        if (!other.valueFloat_.isEmpty()) {
          if (valueFloat_.isEmpty()) {
            valueFloat_ = other.valueFloat_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureValueFloatIsMutable();
            valueFloat_.addAll(other.valueFloat_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureValueStringIsMutable();
                valueString_.add(s);
                break;
              } // case 26
              case 32: {
                int v = input.readInt32();
                ensureValueInt32IsMutable();
                valueInt32_.addInt(v);
                break;
              } // case 32
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureValueInt32IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  valueInt32_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 40: {
                long v = input.readInt64();
                ensureValueInt64IsMutable();
                valueInt64_.addLong(v);
                break;
              } // case 40
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureValueInt64IsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  valueInt64_.addLong(input.readInt64());
                }
                input.popLimit(limit);
                break;
              } // case 42
              case 49: {
                double v = input.readDouble();
                ensureValueDoubleIsMutable();
                valueDouble_.addDouble(v);
                break;
              } // case 49
              case 50: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureValueDoubleIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  valueDouble_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 50
              case 61: {
                float v = input.readFloat();
                ensureValueFloatIsMutable();
                valueFloat_.addFloat(v);
                break;
              } // case 61
              case 58: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureValueFloatIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  valueFloat_.addFloat(input.readFloat());
                }
                input.popLimit(limit);
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition type_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> typeBuilder_;
      /**
       * <code>.TypeDefinition type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       * @return The type.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition getType() {
        if (typeBuilder_ == null) {
          return type_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
        } else {
          return typeBuilder_.getMessage();
        }
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public Builder setType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (typeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
        } else {
          typeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public Builder setType(
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder builderForValue) {
        if (typeBuilder_ == null) {
          type_ = builderForValue.build();
        } else {
          typeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public Builder mergeType(soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition value) {
        if (typeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            type_ != null &&
            type_ != soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance()) {
            getTypeBuilder().mergeFrom(value);
          } else {
            type_ = value;
          }
        } else {
          typeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder getTypeBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder getTypeOrBuilder() {
        if (typeBuilder_ != null) {
          return typeBuilder_.getMessageOrBuilder();
        } else {
          return type_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.getDefaultInstance() : type_;
        }
      }
      /**
       * <code>.TypeDefinition type = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder> 
          getTypeFieldBuilder() {
        if (typeBuilder_ == null) {
          typeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.TypeDefinitionOrBuilder>(
                  getType(),
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        return typeBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList valueString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureValueStringIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          valueString_ = new com.google.protobuf.LazyStringArrayList(valueString_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @return A list containing the valueString.
       */
      public com.google.protobuf.ProtocolStringList
          getValueStringList() {
        return valueString_.getUnmodifiableView();
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @return The count of valueString.
       */
      public int getValueStringCount() {
        return valueString_.size();
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @param index The index of the element to return.
       * @return The valueString at the given index.
       */
      public java.lang.String getValueString(int index) {
        return valueString_.get(index);
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the valueString at the given index.
       */
      public com.google.protobuf.ByteString
          getValueStringBytes(int index) {
        return valueString_.getByteString(index);
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @param index The index to set the value at.
       * @param value The valueString to set.
       * @return This builder for chaining.
       */
      public Builder setValueString(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValueStringIsMutable();
        valueString_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @param value The valueString to add.
       * @return This builder for chaining.
       */
      public Builder addValueString(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureValueStringIsMutable();
        valueString_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @param values The valueString to add.
       * @return This builder for chaining.
       */
      public Builder addAllValueString(
          java.lang.Iterable<java.lang.String> values) {
        ensureValueStringIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueString_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueString() {
        valueString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value_string = 3;</code>
       * @param value The bytes of the valueString to add.
       * @return This builder for chaining.
       */
      public Builder addValueStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureValueStringIsMutable();
        valueString_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList valueInt32_ = emptyIntList();
      private void ensureValueInt32IsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          valueInt32_ = mutableCopy(valueInt32_);
          bitField0_ |= 0x00000008;
        }
      }
      /**
       * <code>repeated int32 value_int32 = 4;</code>
       * @return A list containing the valueInt32.
       */
      public java.util.List<java.lang.Integer>
          getValueInt32List() {
        return ((bitField0_ & 0x00000008) != 0) ?
                 java.util.Collections.unmodifiableList(valueInt32_) : valueInt32_;
      }
      /**
       * <code>repeated int32 value_int32 = 4;</code>
       * @return The count of valueInt32.
       */
      public int getValueInt32Count() {
        return valueInt32_.size();
      }
      /**
       * <code>repeated int32 value_int32 = 4;</code>
       * @param index The index of the element to return.
       * @return The valueInt32 at the given index.
       */
      public int getValueInt32(int index) {
        return valueInt32_.getInt(index);
      }
      /**
       * <code>repeated int32 value_int32 = 4;</code>
       * @param index The index to set the value at.
       * @param value The valueInt32 to set.
       * @return This builder for chaining.
       */
      public Builder setValueInt32(
          int index, int value) {
        
        ensureValueInt32IsMutable();
        valueInt32_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 value_int32 = 4;</code>
       * @param value The valueInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addValueInt32(int value) {
        
        ensureValueInt32IsMutable();
        valueInt32_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 value_int32 = 4;</code>
       * @param values The valueInt32 to add.
       * @return This builder for chaining.
       */
      public Builder addAllValueInt32(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureValueInt32IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueInt32_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 value_int32 = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueInt32() {
        valueInt32_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList valueInt64_ = emptyLongList();
      private void ensureValueInt64IsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          valueInt64_ = mutableCopy(valueInt64_);
          bitField0_ |= 0x00000010;
        }
      }
      /**
       * <code>repeated int64 value_int64 = 5;</code>
       * @return A list containing the valueInt64.
       */
      public java.util.List<java.lang.Long>
          getValueInt64List() {
        return ((bitField0_ & 0x00000010) != 0) ?
                 java.util.Collections.unmodifiableList(valueInt64_) : valueInt64_;
      }
      /**
       * <code>repeated int64 value_int64 = 5;</code>
       * @return The count of valueInt64.
       */
      public int getValueInt64Count() {
        return valueInt64_.size();
      }
      /**
       * <code>repeated int64 value_int64 = 5;</code>
       * @param index The index of the element to return.
       * @return The valueInt64 at the given index.
       */
      public long getValueInt64(int index) {
        return valueInt64_.getLong(index);
      }
      /**
       * <code>repeated int64 value_int64 = 5;</code>
       * @param index The index to set the value at.
       * @param value The valueInt64 to set.
       * @return This builder for chaining.
       */
      public Builder setValueInt64(
          int index, long value) {
        
        ensureValueInt64IsMutable();
        valueInt64_.setLong(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 value_int64 = 5;</code>
       * @param value The valueInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addValueInt64(long value) {
        
        ensureValueInt64IsMutable();
        valueInt64_.addLong(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 value_int64 = 5;</code>
       * @param values The valueInt64 to add.
       * @return This builder for chaining.
       */
      public Builder addAllValueInt64(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureValueInt64IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueInt64_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int64 value_int64 = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueInt64() {
        valueInt64_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList valueDouble_ = emptyDoubleList();
      private void ensureValueDoubleIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          valueDouble_ = mutableCopy(valueDouble_);
          bitField0_ |= 0x00000020;
        }
      }
      /**
       * <code>repeated double value_double = 6;</code>
       * @return A list containing the valueDouble.
       */
      public java.util.List<java.lang.Double>
          getValueDoubleList() {
        return ((bitField0_ & 0x00000020) != 0) ?
                 java.util.Collections.unmodifiableList(valueDouble_) : valueDouble_;
      }
      /**
       * <code>repeated double value_double = 6;</code>
       * @return The count of valueDouble.
       */
      public int getValueDoubleCount() {
        return valueDouble_.size();
      }
      /**
       * <code>repeated double value_double = 6;</code>
       * @param index The index of the element to return.
       * @return The valueDouble at the given index.
       */
      public double getValueDouble(int index) {
        return valueDouble_.getDouble(index);
      }
      /**
       * <code>repeated double value_double = 6;</code>
       * @param index The index to set the value at.
       * @param value The valueDouble to set.
       * @return This builder for chaining.
       */
      public Builder setValueDouble(
          int index, double value) {
        
        ensureValueDoubleIsMutable();
        valueDouble_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double value_double = 6;</code>
       * @param value The valueDouble to add.
       * @return This builder for chaining.
       */
      public Builder addValueDouble(double value) {
        
        ensureValueDoubleIsMutable();
        valueDouble_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double value_double = 6;</code>
       * @param values The valueDouble to add.
       * @return This builder for chaining.
       */
      public Builder addAllValueDouble(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureValueDoubleIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueDouble_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double value_double = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueDouble() {
        valueDouble_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList valueFloat_ = emptyFloatList();
      private void ensureValueFloatIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          valueFloat_ = mutableCopy(valueFloat_);
          bitField0_ |= 0x00000040;
        }
      }
      /**
       * <code>repeated float value_float = 7;</code>
       * @return A list containing the valueFloat.
       */
      public java.util.List<java.lang.Float>
          getValueFloatList() {
        return ((bitField0_ & 0x00000040) != 0) ?
                 java.util.Collections.unmodifiableList(valueFloat_) : valueFloat_;
      }
      /**
       * <code>repeated float value_float = 7;</code>
       * @return The count of valueFloat.
       */
      public int getValueFloatCount() {
        return valueFloat_.size();
      }
      /**
       * <code>repeated float value_float = 7;</code>
       * @param index The index of the element to return.
       * @return The valueFloat at the given index.
       */
      public float getValueFloat(int index) {
        return valueFloat_.getFloat(index);
      }
      /**
       * <code>repeated float value_float = 7;</code>
       * @param index The index to set the value at.
       * @param value The valueFloat to set.
       * @return This builder for chaining.
       */
      public Builder setValueFloat(
          int index, float value) {
        
        ensureValueFloatIsMutable();
        valueFloat_.setFloat(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float value_float = 7;</code>
       * @param value The valueFloat to add.
       * @return This builder for chaining.
       */
      public Builder addValueFloat(float value) {
        
        ensureValueFloatIsMutable();
        valueFloat_.addFloat(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float value_float = 7;</code>
       * @param values The valueFloat to add.
       * @return This builder for chaining.
       */
      public Builder addAllValueFloat(
          java.lang.Iterable<? extends java.lang.Float> values) {
        ensureValueFloatIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, valueFloat_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float value_float = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearValueFloat() {
        valueFloat_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:AttributeArgumentDefinition)
    }

    // @@protoc_insertion_point(class_scope:AttributeArgumentDefinition)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AttributeArgumentDefinition>
        PARSER = new com.google.protobuf.AbstractParser<AttributeArgumentDefinition>() {
      @java.lang.Override
      public AttributeArgumentDefinition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.AttributeArgumentDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EventDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:EventDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    int getAccessibilityValue();
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility();

    /**
     * <code>.MethodDefinition add_accessor_method = 2;</code>
     * @return Whether the addAccessorMethod field is set.
     */
    boolean hasAddAccessorMethod();
    /**
     * <code>.MethodDefinition add_accessor_method = 2;</code>
     * @return The addAccessorMethod.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getAddAccessorMethod();
    /**
     * <code>.MethodDefinition add_accessor_method = 2;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getAddAccessorMethodOrBuilder();

    /**
     * <code>bool can_add = 3;</code>
     * @return The canAdd.
     */
    boolean getCanAdd();

    /**
     * <code>bool can_invoke = 4;</code>
     * @return The canInvoke.
     */
    boolean getCanInvoke();

    /**
     * <code>bool can_remove = 5;</code>
     * @return The canRemove.
     */
    boolean getCanRemove();

    /**
     * <code>string full_name = 6;</code>
     * @return The fullName.
     */
    java.lang.String getFullName();
    /**
     * <code>string full_name = 6;</code>
     * @return The bytes for fullName.
     */
    com.google.protobuf.ByteString
        getFullNameBytes();

    /**
     * <code>.MethodDefinition invoke_accessor_method = 7;</code>
     * @return Whether the invokeAccessorMethod field is set.
     */
    boolean hasInvokeAccessorMethod();
    /**
     * <code>.MethodDefinition invoke_accessor_method = 7;</code>
     * @return The invokeAccessorMethod.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getInvokeAccessorMethod();
    /**
     * <code>.MethodDefinition invoke_accessor_method = 7;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getInvokeAccessorMethodOrBuilder();

    /**
     * <code>string name = 8;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <code>string name = 8;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>.MethodDefinition remove_accessor_method = 9;</code>
     * @return Whether the removeAccessorMethod field is set.
     */
    boolean hasRemoveAccessorMethod();
    /**
     * <code>.MethodDefinition remove_accessor_method = 9;</code>
     * @return The removeAccessorMethod.
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getRemoveAccessorMethod();
    /**
     * <code>.MethodDefinition remove_accessor_method = 9;</code>
     */
    soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getRemoveAccessorMethodOrBuilder();

    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 10;</code>
     * @return The peToken.
     */
    int getPeToken();
  }
  /**
   * Protobuf type {@code EventDefinition}
   */
  public static final class EventDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:EventDefinition)
      EventDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EventDefinition.newBuilder() to construct.
    private EventDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EventDefinition() {
      accessibility_ = 0;
      fullName_ = "";
      name_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_EventDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_EventDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder.class);
    }

    public static final int ACCESSIBILITY_FIELD_NUMBER = 1;
    private int accessibility_ = 0;
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The enum numeric value on the wire for accessibility.
     */
    @java.lang.Override public int getAccessibilityValue() {
      return accessibility_;
    }
    /**
     * <code>.Accessibility accessibility = 1;</code>
     * @return The accessibility.
     */
    @java.lang.Override public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
      soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
      return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
    }

    public static final int ADD_ACCESSOR_METHOD_FIELD_NUMBER = 2;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition addAccessorMethod_;
    /**
     * <code>.MethodDefinition add_accessor_method = 2;</code>
     * @return Whether the addAccessorMethod field is set.
     */
    @java.lang.Override
    public boolean hasAddAccessorMethod() {
      return addAccessorMethod_ != null;
    }
    /**
     * <code>.MethodDefinition add_accessor_method = 2;</code>
     * @return The addAccessorMethod.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getAddAccessorMethod() {
      return addAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : addAccessorMethod_;
    }
    /**
     * <code>.MethodDefinition add_accessor_method = 2;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getAddAccessorMethodOrBuilder() {
      return addAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : addAccessorMethod_;
    }

    public static final int CAN_ADD_FIELD_NUMBER = 3;
    private boolean canAdd_ = false;
    /**
     * <code>bool can_add = 3;</code>
     * @return The canAdd.
     */
    @java.lang.Override
    public boolean getCanAdd() {
      return canAdd_;
    }

    public static final int CAN_INVOKE_FIELD_NUMBER = 4;
    private boolean canInvoke_ = false;
    /**
     * <code>bool can_invoke = 4;</code>
     * @return The canInvoke.
     */
    @java.lang.Override
    public boolean getCanInvoke() {
      return canInvoke_;
    }

    public static final int CAN_REMOVE_FIELD_NUMBER = 5;
    private boolean canRemove_ = false;
    /**
     * <code>bool can_remove = 5;</code>
     * @return The canRemove.
     */
    @java.lang.Override
    public boolean getCanRemove() {
      return canRemove_;
    }

    public static final int FULL_NAME_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fullName_ = "";
    /**
     * <code>string full_name = 6;</code>
     * @return The fullName.
     */
    @java.lang.Override
    public java.lang.String getFullName() {
      java.lang.Object ref = fullName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fullName_ = s;
        return s;
      }
    }
    /**
     * <code>string full_name = 6;</code>
     * @return The bytes for fullName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFullNameBytes() {
      java.lang.Object ref = fullName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fullName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INVOKE_ACCESSOR_METHOD_FIELD_NUMBER = 7;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition invokeAccessorMethod_;
    /**
     * <code>.MethodDefinition invoke_accessor_method = 7;</code>
     * @return Whether the invokeAccessorMethod field is set.
     */
    @java.lang.Override
    public boolean hasInvokeAccessorMethod() {
      return invokeAccessorMethod_ != null;
    }
    /**
     * <code>.MethodDefinition invoke_accessor_method = 7;</code>
     * @return The invokeAccessorMethod.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getInvokeAccessorMethod() {
      return invokeAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : invokeAccessorMethod_;
    }
    /**
     * <code>.MethodDefinition invoke_accessor_method = 7;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getInvokeAccessorMethodOrBuilder() {
      return invokeAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : invokeAccessorMethod_;
    }

    public static final int NAME_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <code>string name = 8;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 8;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REMOVE_ACCESSOR_METHOD_FIELD_NUMBER = 9;
    private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition removeAccessorMethod_;
    /**
     * <code>.MethodDefinition remove_accessor_method = 9;</code>
     * @return Whether the removeAccessorMethod field is set.
     */
    @java.lang.Override
    public boolean hasRemoveAccessorMethod() {
      return removeAccessorMethod_ != null;
    }
    /**
     * <code>.MethodDefinition remove_accessor_method = 9;</code>
     * @return The removeAccessorMethod.
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getRemoveAccessorMethod() {
      return removeAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : removeAccessorMethod_;
    }
    /**
     * <code>.MethodDefinition remove_accessor_method = 9;</code>
     */
    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getRemoveAccessorMethodOrBuilder() {
      return removeAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : removeAccessorMethod_;
    }

    public static final int PE_TOKEN_FIELD_NUMBER = 10;
    private int peToken_ = 0;
    /**
     * <pre>
     *hexadecimal x8 pe token
     * </pre>
     *
     * <code>int32 pe_token = 10;</code>
     * @return The peToken.
     */
    @java.lang.Override
    public int getPeToken() {
      return peToken_;
    }

    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 (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        output.writeEnum(1, accessibility_);
      }
      if (addAccessorMethod_ != null) {
        output.writeMessage(2, getAddAccessorMethod());
      }
      if (canAdd_ != false) {
        output.writeBool(3, canAdd_);
      }
      if (canInvoke_ != false) {
        output.writeBool(4, canInvoke_);
      }
      if (canRemove_ != false) {
        output.writeBool(5, canRemove_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fullName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, fullName_);
      }
      if (invokeAccessorMethod_ != null) {
        output.writeMessage(7, getInvokeAccessorMethod());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, name_);
      }
      if (removeAccessorMethod_ != null) {
        output.writeMessage(9, getRemoveAccessorMethod());
      }
      if (peToken_ != 0) {
        output.writeInt32(10, peToken_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (accessibility_ != soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.NONE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, accessibility_);
      }
      if (addAccessorMethod_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getAddAccessorMethod());
      }
      if (canAdd_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, canAdd_);
      }
      if (canInvoke_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, canInvoke_);
      }
      if (canRemove_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, canRemove_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fullName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, fullName_);
      }
      if (invokeAccessorMethod_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getInvokeAccessorMethod());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, name_);
      }
      if (removeAccessorMethod_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getRemoveAccessorMethod());
      }
      if (peToken_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, peToken_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition)) {
        return super.equals(obj);
      }
      soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition other = (soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition) obj;

      if (accessibility_ != other.accessibility_) return false;
      if (hasAddAccessorMethod() != other.hasAddAccessorMethod()) return false;
      if (hasAddAccessorMethod()) {
        if (!getAddAccessorMethod()
            .equals(other.getAddAccessorMethod())) return false;
      }
      if (getCanAdd()
          != other.getCanAdd()) return false;
      if (getCanInvoke()
          != other.getCanInvoke()) return false;
      if (getCanRemove()
          != other.getCanRemove()) return false;
      if (!getFullName()
          .equals(other.getFullName())) return false;
      if (hasInvokeAccessorMethod() != other.hasInvokeAccessorMethod()) return false;
      if (hasInvokeAccessorMethod()) {
        if (!getInvokeAccessorMethod()
            .equals(other.getInvokeAccessorMethod())) return false;
      }
      if (!getName()
          .equals(other.getName())) return false;
      if (hasRemoveAccessorMethod() != other.hasRemoveAccessorMethod()) return false;
      if (hasRemoveAccessorMethod()) {
        if (!getRemoveAccessorMethod()
            .equals(other.getRemoveAccessorMethod())) return false;
      }
      if (getPeToken()
          != other.getPeToken()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCESSIBILITY_FIELD_NUMBER;
      hash = (53 * hash) + accessibility_;
      if (hasAddAccessorMethod()) {
        hash = (37 * hash) + ADD_ACCESSOR_METHOD_FIELD_NUMBER;
        hash = (53 * hash) + getAddAccessorMethod().hashCode();
      }
      hash = (37 * hash) + CAN_ADD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getCanAdd());
      hash = (37 * hash) + CAN_INVOKE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getCanInvoke());
      hash = (37 * hash) + CAN_REMOVE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getCanRemove());
      hash = (37 * hash) + FULL_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getFullName().hashCode();
      if (hasInvokeAccessorMethod()) {
        hash = (37 * hash) + INVOKE_ACCESSOR_METHOD_FIELD_NUMBER;
        hash = (53 * hash) + getInvokeAccessorMethod().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasRemoveAccessorMethod()) {
        hash = (37 * hash) + REMOVE_ACCESSOR_METHOD_FIELD_NUMBER;
        hash = (53 * hash) + getRemoveAccessorMethod().hashCode();
      }
      hash = (37 * hash) + PE_TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getPeToken();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_EventDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.class, soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.Builder.class);
      }

      // Construct using soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        accessibility_ = 0;
        addAccessorMethod_ = null;
        if (addAccessorMethodBuilder_ != null) {
          addAccessorMethodBuilder_.dispose();
          addAccessorMethodBuilder_ = null;
        }
        canAdd_ = false;
        canInvoke_ = false;
        canRemove_ = false;
        fullName_ = "";
        invokeAccessorMethod_ = null;
        if (invokeAccessorMethodBuilder_ != null) {
          invokeAccessorMethodBuilder_.dispose();
          invokeAccessorMethodBuilder_ = null;
        }
        name_ = "";
        removeAccessorMethod_ = null;
        if (removeAccessorMethodBuilder_ != null) {
          removeAccessorMethodBuilder_.dispose();
          removeAccessorMethodBuilder_ = null;
        }
        peToken_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.internal_static_EventDefinition_descriptor;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition getDefaultInstanceForType() {
        return soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition build() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition buildPartial() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition result = new soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.accessibility_ = accessibility_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.addAccessorMethod_ = addAccessorMethodBuilder_ == null
              ? addAccessorMethod_
              : addAccessorMethodBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.canAdd_ = canAdd_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.canInvoke_ = canInvoke_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.canRemove_ = canRemove_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.fullName_ = fullName_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.invokeAccessorMethod_ = invokeAccessorMethodBuilder_ == null
              ? invokeAccessorMethod_
              : invokeAccessorMethodBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.removeAccessorMethod_ = removeAccessorMethodBuilder_ == null
              ? removeAccessorMethod_
              : removeAccessorMethodBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.peToken_ = peToken_;
        }
      }

      @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 soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition) {
          return mergeFrom((soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition other) {
        if (other == soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition.getDefaultInstance()) return this;
        if (other.accessibility_ != 0) {
          setAccessibilityValue(other.getAccessibilityValue());
        }
        if (other.hasAddAccessorMethod()) {
          mergeAddAccessorMethod(other.getAddAccessorMethod());
        }
        if (other.getCanAdd() != false) {
          setCanAdd(other.getCanAdd());
        }
        if (other.getCanInvoke() != false) {
          setCanInvoke(other.getCanInvoke());
        }
        if (other.getCanRemove() != false) {
          setCanRemove(other.getCanRemove());
        }
        if (!other.getFullName().isEmpty()) {
          fullName_ = other.fullName_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasInvokeAccessorMethod()) {
          mergeInvokeAccessorMethod(other.getInvokeAccessorMethod());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasRemoveAccessorMethod()) {
          mergeRemoveAccessorMethod(other.getRemoveAccessorMethod());
        }
        if (other.getPeToken() != 0) {
          setPeToken(other.getPeToken());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                accessibility_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getAddAccessorMethodFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                canAdd_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                canInvoke_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                canRemove_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 50: {
                fullName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getInvokeAccessorMethodFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getRemoveAccessorMethodFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 80: {
                peToken_ = input.readInt32();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int accessibility_ = 0;
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The enum numeric value on the wire for accessibility.
       */
      @java.lang.Override public int getAccessibilityValue() {
        return accessibility_;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The enum numeric value on the wire for accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibilityValue(int value) {
        accessibility_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return The accessibility.
       */
      @java.lang.Override
      public soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility getAccessibility() {
        soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility result = soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.forNumber(accessibility_);
        return result == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility.UNRECOGNIZED : result;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @param value The accessibility to set.
       * @return This builder for chaining.
       */
      public Builder setAccessibility(soot.dotnet.proto.ProtoAssemblyAllTypes.Accessibility value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        accessibility_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.Accessibility accessibility = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessibility() {
        bitField0_ = (bitField0_ & ~0x00000001);
        accessibility_ = 0;
        onChanged();
        return this;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition addAccessorMethod_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> addAccessorMethodBuilder_;
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       * @return Whether the addAccessorMethod field is set.
       */
      public boolean hasAddAccessorMethod() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       * @return The addAccessorMethod.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getAddAccessorMethod() {
        if (addAccessorMethodBuilder_ == null) {
          return addAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : addAccessorMethod_;
        } else {
          return addAccessorMethodBuilder_.getMessage();
        }
      }
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       */
      public Builder setAddAccessorMethod(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (addAccessorMethodBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          addAccessorMethod_ = value;
        } else {
          addAccessorMethodBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       */
      public Builder setAddAccessorMethod(
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder builderForValue) {
        if (addAccessorMethodBuilder_ == null) {
          addAccessorMethod_ = builderForValue.build();
        } else {
          addAccessorMethodBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       */
      public Builder mergeAddAccessorMethod(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (addAccessorMethodBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            addAccessorMethod_ != null &&
            addAccessorMethod_ != soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance()) {
            getAddAccessorMethodBuilder().mergeFrom(value);
          } else {
            addAccessorMethod_ = value;
          }
        } else {
          addAccessorMethodBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       */
      public Builder clearAddAccessorMethod() {
        bitField0_ = (bitField0_ & ~0x00000002);
        addAccessorMethod_ = null;
        if (addAccessorMethodBuilder_ != null) {
          addAccessorMethodBuilder_.dispose();
          addAccessorMethodBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder getAddAccessorMethodBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAddAccessorMethodFieldBuilder().getBuilder();
      }
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getAddAccessorMethodOrBuilder() {
        if (addAccessorMethodBuilder_ != null) {
          return addAccessorMethodBuilder_.getMessageOrBuilder();
        } else {
          return addAccessorMethod_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : addAccessorMethod_;
        }
      }
      /**
       * <code>.MethodDefinition add_accessor_method = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
          getAddAccessorMethodFieldBuilder() {
        if (addAccessorMethodBuilder_ == null) {
          addAccessorMethodBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder>(
                  getAddAccessorMethod(),
                  getParentForChildren(),
                  isClean());
          addAccessorMethod_ = null;
        }
        return addAccessorMethodBuilder_;
      }

      private boolean canAdd_ ;
      /**
       * <code>bool can_add = 3;</code>
       * @return The canAdd.
       */
      @java.lang.Override
      public boolean getCanAdd() {
        return canAdd_;
      }
      /**
       * <code>bool can_add = 3;</code>
       * @param value The canAdd to set.
       * @return This builder for chaining.
       */
      public Builder setCanAdd(boolean value) {
        
        canAdd_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>bool can_add = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanAdd() {
        bitField0_ = (bitField0_ & ~0x00000004);
        canAdd_ = false;
        onChanged();
        return this;
      }

      private boolean canInvoke_ ;
      /**
       * <code>bool can_invoke = 4;</code>
       * @return The canInvoke.
       */
      @java.lang.Override
      public boolean getCanInvoke() {
        return canInvoke_;
      }
      /**
       * <code>bool can_invoke = 4;</code>
       * @param value The canInvoke to set.
       * @return This builder for chaining.
       */
      public Builder setCanInvoke(boolean value) {
        
        canInvoke_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>bool can_invoke = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanInvoke() {
        bitField0_ = (bitField0_ & ~0x00000008);
        canInvoke_ = false;
        onChanged();
        return this;
      }

      private boolean canRemove_ ;
      /**
       * <code>bool can_remove = 5;</code>
       * @return The canRemove.
       */
      @java.lang.Override
      public boolean getCanRemove() {
        return canRemove_;
      }
      /**
       * <code>bool can_remove = 5;</code>
       * @param value The canRemove to set.
       * @return This builder for chaining.
       */
      public Builder setCanRemove(boolean value) {
        
        canRemove_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>bool can_remove = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearCanRemove() {
        bitField0_ = (bitField0_ & ~0x00000010);
        canRemove_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object fullName_ = "";
      /**
       * <code>string full_name = 6;</code>
       * @return The fullName.
       */
      public java.lang.String getFullName() {
        java.lang.Object ref = fullName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fullName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string full_name = 6;</code>
       * @return The bytes for fullName.
       */
      public com.google.protobuf.ByteString
          getFullNameBytes() {
        java.lang.Object ref = fullName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fullName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string full_name = 6;</code>
       * @param value The fullName to set.
       * @return This builder for chaining.
       */
      public Builder setFullName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fullName_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>string full_name = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearFullName() {
        fullName_ = getDefaultInstance().getFullName();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>string full_name = 6;</code>
       * @param value The bytes for fullName to set.
       * @return This builder for chaining.
       */
      public Builder setFullNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fullName_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition invokeAccessorMethod_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> invokeAccessorMethodBuilder_;
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       * @return Whether the invokeAccessorMethod field is set.
       */
      public boolean hasInvokeAccessorMethod() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       * @return The invokeAccessorMethod.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getInvokeAccessorMethod() {
        if (invokeAccessorMethodBuilder_ == null) {
          return invokeAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : invokeAccessorMethod_;
        } else {
          return invokeAccessorMethodBuilder_.getMessage();
        }
      }
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       */
      public Builder setInvokeAccessorMethod(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (invokeAccessorMethodBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          invokeAccessorMethod_ = value;
        } else {
          invokeAccessorMethodBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       */
      public Builder setInvokeAccessorMethod(
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder builderForValue) {
        if (invokeAccessorMethodBuilder_ == null) {
          invokeAccessorMethod_ = builderForValue.build();
        } else {
          invokeAccessorMethodBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       */
      public Builder mergeInvokeAccessorMethod(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (invokeAccessorMethodBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            invokeAccessorMethod_ != null &&
            invokeAccessorMethod_ != soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance()) {
            getInvokeAccessorMethodBuilder().mergeFrom(value);
          } else {
            invokeAccessorMethod_ = value;
          }
        } else {
          invokeAccessorMethodBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       */
      public Builder clearInvokeAccessorMethod() {
        bitField0_ = (bitField0_ & ~0x00000040);
        invokeAccessorMethod_ = null;
        if (invokeAccessorMethodBuilder_ != null) {
          invokeAccessorMethodBuilder_.dispose();
          invokeAccessorMethodBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder getInvokeAccessorMethodBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getInvokeAccessorMethodFieldBuilder().getBuilder();
      }
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getInvokeAccessorMethodOrBuilder() {
        if (invokeAccessorMethodBuilder_ != null) {
          return invokeAccessorMethodBuilder_.getMessageOrBuilder();
        } else {
          return invokeAccessorMethod_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : invokeAccessorMethod_;
        }
      }
      /**
       * <code>.MethodDefinition invoke_accessor_method = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
          getInvokeAccessorMethodFieldBuilder() {
        if (invokeAccessorMethodBuilder_ == null) {
          invokeAccessorMethodBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder>(
                  getInvokeAccessorMethod(),
                  getParentForChildren(),
                  isClean());
          invokeAccessorMethod_ = null;
        }
        return invokeAccessorMethodBuilder_;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 8;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 8;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 8;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>string name = 8;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition removeAccessorMethod_;
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> removeAccessorMethodBuilder_;
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       * @return Whether the removeAccessorMethod field is set.
       */
      public boolean hasRemoveAccessorMethod() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       * @return The removeAccessorMethod.
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition getRemoveAccessorMethod() {
        if (removeAccessorMethodBuilder_ == null) {
          return removeAccessorMethod_ == null ? soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : removeAccessorMethod_;
        } else {
          return removeAccessorMethodBuilder_.getMessage();
        }
      }
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       */
      public Builder setRemoveAccessorMethod(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (removeAccessorMethodBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          removeAccessorMethod_ = value;
        } else {
          removeAccessorMethodBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       */
      public Builder setRemoveAccessorMethod(
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder builderForValue) {
        if (removeAccessorMethodBuilder_ == null) {
          removeAccessorMethod_ = builderForValue.build();
        } else {
          removeAccessorMethodBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       */
      public Builder mergeRemoveAccessorMethod(soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition value) {
        if (removeAccessorMethodBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            removeAccessorMethod_ != null &&
            removeAccessorMethod_ != soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance()) {
            getRemoveAccessorMethodBuilder().mergeFrom(value);
          } else {
            removeAccessorMethod_ = value;
          }
        } else {
          removeAccessorMethodBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       */
      public Builder clearRemoveAccessorMethod() {
        bitField0_ = (bitField0_ & ~0x00000100);
        removeAccessorMethod_ = null;
        if (removeAccessorMethodBuilder_ != null) {
          removeAccessorMethodBuilder_.dispose();
          removeAccessorMethodBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder getRemoveAccessorMethodBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getRemoveAccessorMethodFieldBuilder().getBuilder();
      }
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       */
      public soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder getRemoveAccessorMethodOrBuilder() {
        if (removeAccessorMethodBuilder_ != null) {
          return removeAccessorMethodBuilder_.getMessageOrBuilder();
        } else {
          return removeAccessorMethod_ == null ?
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.getDefaultInstance() : removeAccessorMethod_;
        }
      }
      /**
       * <code>.MethodDefinition remove_accessor_method = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder> 
          getRemoveAccessorMethodFieldBuilder() {
        if (removeAccessorMethodBuilder_ == null) {
          removeAccessorMethodBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinition.Builder, soot.dotnet.proto.ProtoAssemblyAllTypes.MethodDefinitionOrBuilder>(
                  getRemoveAccessorMethod(),
                  getParentForChildren(),
                  isClean());
          removeAccessorMethod_ = null;
        }
        return removeAccessorMethodBuilder_;
      }

      private int peToken_ ;
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 10;</code>
       * @return The peToken.
       */
      @java.lang.Override
      public int getPeToken() {
        return peToken_;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 10;</code>
       * @param value The peToken to set.
       * @return This builder for chaining.
       */
      public Builder setPeToken(int value) {
        
        peToken_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *hexadecimal x8 pe token
       * </pre>
       *
       * <code>int32 pe_token = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearPeToken() {
        bitField0_ = (bitField0_ & ~0x00000200);
        peToken_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:EventDefinition)
    }

    // @@protoc_insertion_point(class_scope:EventDefinition)
    private static final soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition();
    }

    public static soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EventDefinition>
        PARSER = new com.google.protobuf.AbstractParser<EventDefinition>() {
      @java.lang.Override
      public EventDefinition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public soot.dotnet.proto.ProtoAssemblyAllTypes.EventDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_AssemblyAllTypes_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_AssemblyAllTypes_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_TypeDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_TypeDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_MethodDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_MethodDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ParameterDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ParameterDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FieldDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_FieldDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PropertyDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PropertyDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_AttributeDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_AttributeDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_AttributeArgumentDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_AttributeArgumentDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_EventDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_EventDefinition_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\026AssemblyAllTypes.proto\"_\n\020AssemblyAllT" +
      "ypes\022&\n\rlist_of_types\030\001 \003(\0132\017.TypeDefini" +
      "tion\022#\n\033all_referenced_module_types\030\002 \003(" +
      "\t\"\330\004\n\016TypeDefinition\022%\n\raccessibility\030\001 " +
      "\001(\0162\016.Accessibility\022\020\n\010fullname\030\002 \001(\t\022\021\n" +
      "\tnamespace\030\003 \001(\t\022\023\n\013is_abstract\030\004 \001(\010\022\024\n" +
      "\014is_read_only\030\005 \001(\010\022\021\n\tis_sealed\030\006 \001(\010\022\021" +
      "\n\tis_static\030\007 \001(\010\022\035\n\025declaring_outer_cla" +
      "ss\030\010 \001(\t\022*\n\021direct_base_types\030\t \003(\0132\017.Ty" +
      "peDefinition\022\037\n\ttype_kind\030\n \001(\0162\014.TypeKi" +
      "ndDef\022\"\n\007methods\030\013 \003(\0132\021.MethodDefinitio" +
      "n\022 \n\006fields\030\014 \003(\0132\020.FieldDefinition\022\'\n\np" +
      "roperties\030\r \003(\0132\023.PropertyDefinition\022%\n\014" +
      "nested_types\030\016 \003(\0132\017.TypeDefinition\022(\n\na" +
      "ttributes\030\017 \003(\0132\024.AttributeDefinition\022/\n" +
      "\026generic_type_arguments\030\020 \003(\0132\017.TypeDefi" +
      "nition\022\030\n\020array_dimensions\030\021 \001(\005\022 \n\006even" +
      "ts\030\022 \003(\0132\020.EventDefinition\022\020\n\010pe_token\030\023" +
      " \001(\005\"\234\004\n\020MethodDefinition\022%\n\raccessibili" +
      "ty\030\001 \001(\0162\016.Accessibility\022\014\n\004name\030\002 \001(\t\022\020" +
      "\n\010has_body\030\003 \001(\010\022\'\n\tparameter\030\004 \003(\0132\024.Pa" +
      "rameterDefinition\022\023\n\013is_abstract\030\005 \001(\010\022\023" +
      "\n\013is_accessor\030\006 \001(\010\022\026\n\016is_constructor\030\007 " +
      "\001(\010\022\025\n\ris_destructor\030\010 \001(\010\022,\n$is_explici" +
      "t_interface_implementation\030\t \001(\010\022\021\n\tis_s" +
      "tatic\030\n \001(\010\022\022\n\nis_virtual\030\013 \001(\010\022\023\n\013is_op" +
      "erator\030\020 \001(\010\022\021\n\tis_extern\030\021 \001(\010\022\021\n\tis_un" +
      "safe\030\022 \001(\010\022\021\n\tis_sealed\030\023 \001(\010\022$\n\013return_" +
      "type\030\014 \001(\0132\017.TypeDefinition\022(\n\nattribute" +
      "s\030\r \003(\0132\024.AttributeDefinition\022\021\n\tfull_na" +
      "me\030\016 \001(\t\022\'\n\016declaring_type\030\017 \001(\0132\017.TypeD" +
      "efinition\022\020\n\010pe_token\030\024 \001(\005\"\220\001\n\023Paramete" +
      "rDefinition\022\035\n\004type\030\001 \001(\0132\017.TypeDefiniti" +
      "on\022\026\n\016parameter_name\030\002 \001(\t\022\016\n\006is_ref\030\003 \001" +
      "(\010\022\016\n\006is_out\030\004 \001(\010\022\r\n\005is_in\030\005 \001(\010\022\023\n\013is_" +
      "optional\030\006 \001(\010\"\274\005\n\017FieldDefinition\022%\n\rac" +
      "cessibility\030\001 \001(\0162\016.Accessibility\022\023\n\013is_" +
      "abstract\030\002 \001(\010\022\021\n\tis_sealed\030\003 \001(\010\022,\n$is_" +
      "explicit_interface_implementation\030\004 \001(\010\022" +
      "\023\n\013is_override\030\005 \001(\010\022\022\n\nis_virtual\030\006 \001(\010" +
      "\022\020\n\010is_const\030\007 \001(\010\022\024\n\014is_read_only\030\010 \001(\010" +
      "\022\021\n\tis_static\030\t \001(\010\022\035\n\004type\030\n \001(\0132\017.Type" +
      "Definition\022\037\n\ttype_kind\030\016 \001(\0162\014.TypeKind" +
      "Def\022\014\n\004name\030\013 \001(\t\022\021\n\tfull_name\030\014 \001(\t\022\'\n\016" +
      "declaring_type\030\r \001(\0132\017.TypeDefinition\022(\n" +
      "\nattributes\030\017 \003(\0132\024.AttributeDefinition\022" +
      "\020\n\010pe_token\030\020 \001(\005\022\035\n\025value_constant_stri" +
      "ng\030\021 \001(\t\022\034\n\024value_constant_int64\030\023 \001(\003\022\034" +
      "\n\024value_constant_float\030\024 \001(\002\022\035\n\025value_co" +
      "nstant_double\030\025 \001(\001\022\033\n\023value_constant_bo" +
      "ol\0307 \001(\010\022\035\n\025value_constant_uint64\030; \001(\004\022" +
      "\036\n\rconstant_type\030\035 \001(\0162\007.IlType\022\032\n\riniti" +
      "al_value\030< \001(\014H\000\210\001\001B\020\n\016_initial_value\"\322\003" +
      "\n\022PropertyDefinition\022%\n\raccessibility\030\001 " +
      "\001(\0162\016.Accessibility\022\017\n\007can_get\030\002 \001(\010\022\017\n\007" +
      "can_set\030\003 \001(\010\022\023\n\013is_abstract\030\004 \001(\010\022\021\n\tis" +
      "_sealed\030\005 \001(\010\022,\n$is_explicit_interface_i" +
      "mplementation\030\006 \001(\010\022\023\n\013is_override\030\007 \001(\010" +
      "\022\022\n\nis_virtual\030\010 \001(\010\022\021\n\tis_static\030\t \001(\010\022" +
      "\021\n\tis_extern\030\017 \001(\010\022!\n\006getter\030\n \001(\0132\021.Met" +
      "hodDefinition\022!\n\006setter\030\013 \001(\0132\021.MethodDe" +
      "finition\022\035\n\004type\030\014 \001(\0132\017.TypeDefinition\022" +
      "\037\n\ttype_kind\030\016 \001(\0162\014.TypeKindDef\022\014\n\004name" +
      "\030\r \001(\t\022(\n\nattributes\030\020 \003(\0132\024.AttributeDe" +
      "finition\022\020\n\010pe_token\030\021 \001(\005\"\301\001\n\023Attribute" +
      "Definition\022\'\n\016attribute_type\030\001 \001(\0132\017.Typ" +
      "eDefinition\022\023\n\013constructor\030\002 \001(\t\0225\n\017fixe" +
      "d_arguments\030\003 \003(\0132\034.AttributeArgumentDef" +
      "inition\0225\n\017named_arguments\030\004 \003(\0132\034.Attri" +
      "buteArgumentDefinition\"\265\001\n\033AttributeArgu" +
      "mentDefinition\022\035\n\004type\030\001 \001(\0132\017.TypeDefin" +
      "ition\022\014\n\004name\030\002 \001(\t\022\024\n\014value_string\030\003 \003(" +
      "\t\022\023\n\013value_int32\030\004 \003(\005\022\023\n\013value_int64\030\005 " +
      "\003(\003\022\024\n\014value_double\030\006 \003(\001\022\023\n\013value_float" +
      "\030\007 \003(\002\"\272\002\n\017EventDefinition\022%\n\raccessibil" +
      "ity\030\001 \001(\0162\016.Accessibility\022.\n\023add_accesso" +
      "r_method\030\002 \001(\0132\021.MethodDefinition\022\017\n\007can" +
      "_add\030\003 \001(\010\022\022\n\ncan_invoke\030\004 \001(\010\022\022\n\ncan_re" +
      "move\030\005 \001(\010\022\021\n\tfull_name\030\006 \001(\t\0221\n\026invoke_" +
      "accessor_method\030\007 \001(\0132\021.MethodDefinition" +
      "\022\014\n\004name\030\010 \001(\t\0221\n\026remove_accessor_method" +
      "\030\t \001(\0132\021.MethodDefinition\022\020\n\010pe_token\030\n " +
      "\001(\005*\206\001\n\rAccessibility\022\010\n\004NONE\020\000\022\013\n\007PRIVA" +
      "TE\020\001\022\n\n\006PUBLIC\020\002\022\014\n\010INTERNAL\020\003\022\r\n\tPROTEC" +
      "TED\020\004\022\032\n\026PROTECTED_AND_INTERNAL\020\005\022\031\n\025PRO" +
      "TECTED_OR_INTERNAL\020\006*\376\001\n\006IlType\022\020\n\014type_" +
      "unknown\020\000\022\017\n\013type_string\020\001\022\016\n\ntype_int32" +
      "\020\002\022\016\n\ntype_int64\020\003\022\017\n\013type_uint32\020\004\022\017\n\013t" +
      "ype_uint64\020\005\022\016\n\ntype_float\020\006\022\017\n\013type_dou" +
      "ble\020\007\022\r\n\ttype_bool\020\010\022\r\n\ttype_byte\020\t\022\016\n\nt" +
      "ype_sbyte\020\n\022\017\n\013type_uint16\020\013\022\016\n\ntype_int" +
      "16\020\014\022\r\n\ttype_char\020\r\022\020\n\014type_decimal\020\016*\366\002" +
      "\n\013TypeKindDef\022\013\n\007NO_TYPE\020\000\022\t\n\005OTHER\020\001\022\t\n" +
      "\005CLASS\020\002\022\r\n\tINTERFACE\020\003\022\n\n\006STRUCT\020\004\022\014\n\010D" +
      "ELEGATE\020\005\022\010\n\004ENUM\020\006\022\010\n\004VOID\020\007\022\013\n\007UNKNOWN" +
      "\020\010\022\010\n\004NULL\020\t\022\r\n\tNONE_TYPE\020\n\022\013\n\007DYNAMIC\020\013" +
      "\022\024\n\020UNBOUND_TYPE_ARG\020\014\022\022\n\016TYPE_PARAMETER" +
      "\020\r\022\t\n\005ARRAY\020\016\022\013\n\007POINTER\020\017\022\n\n\006BY_REF\020\020\022\020" +
      "\n\014INTERSECTION\020\021\022\014\n\010ARG_LIST\020\022\022\t\n\005TUPLE\020" +
      "\023\022\013\n\007MOD_OPT\020\024\022\013\n\007MOD_REQ\020\025\022\t\n\005N_INT\020\026\022\n" +
      "\n\006N_UINT\020\027\022\024\n\020FUNCTION_POINTER\020\030\022\024\n\020BY_R" +
      "EF_AND_ARRAY\020\031BS\n\021soot.dotnet.protoB\025Pro" +
      "toAssemblyAllTypes\252\002&Soot.Dotnet.Decompi" +
      "ler.Models.Protobufb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_AssemblyAllTypes_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_AssemblyAllTypes_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_AssemblyAllTypes_descriptor,
        new java.lang.String[] { "ListOfTypes", "AllReferencedModuleTypes", });
    internal_static_TypeDefinition_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_TypeDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_TypeDefinition_descriptor,
        new java.lang.String[] { "Accessibility", "Fullname", "Namespace", "IsAbstract", "IsReadOnly", "IsSealed", "IsStatic", "DeclaringOuterClass", "DirectBaseTypes", "TypeKind", "Methods", "Fields", "Properties", "NestedTypes", "Attributes", "GenericTypeArguments", "ArrayDimensions", "Events", "PeToken", });
    internal_static_MethodDefinition_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_MethodDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_MethodDefinition_descriptor,
        new java.lang.String[] { "Accessibility", "Name", "HasBody", "Parameter", "IsAbstract", "IsAccessor", "IsConstructor", "IsDestructor", "IsExplicitInterfaceImplementation", "IsStatic", "IsVirtual", "IsOperator", "IsExtern", "IsUnsafe", "IsSealed", "ReturnType", "Attributes", "FullName", "DeclaringType", "PeToken", });
    internal_static_ParameterDefinition_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_ParameterDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ParameterDefinition_descriptor,
        new java.lang.String[] { "Type", "ParameterName", "IsRef", "IsOut", "IsIn", "IsOptional", });
    internal_static_FieldDefinition_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_FieldDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_FieldDefinition_descriptor,
        new java.lang.String[] { "Accessibility", "IsAbstract", "IsSealed", "IsExplicitInterfaceImplementation", "IsOverride", "IsVirtual", "IsConst", "IsReadOnly", "IsStatic", "Type", "TypeKind", "Name", "FullName", "DeclaringType", "Attributes", "PeToken", "ValueConstantString", "ValueConstantInt64", "ValueConstantFloat", "ValueConstantDouble", "ValueConstantBool", "ValueConstantUint64", "ConstantType", "InitialValue", "InitialValue", });
    internal_static_PropertyDefinition_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_PropertyDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PropertyDefinition_descriptor,
        new java.lang.String[] { "Accessibility", "CanGet", "CanSet", "IsAbstract", "IsSealed", "IsExplicitInterfaceImplementation", "IsOverride", "IsVirtual", "IsStatic", "IsExtern", "Getter", "Setter", "Type", "TypeKind", "Name", "Attributes", "PeToken", });
    internal_static_AttributeDefinition_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_AttributeDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_AttributeDefinition_descriptor,
        new java.lang.String[] { "AttributeType", "Constructor", "FixedArguments", "NamedArguments", });
    internal_static_AttributeArgumentDefinition_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_AttributeArgumentDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_AttributeArgumentDefinition_descriptor,
        new java.lang.String[] { "Type", "Name", "ValueString", "ValueInt32", "ValueInt64", "ValueDouble", "ValueFloat", });
    internal_static_EventDefinition_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_EventDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_EventDefinition_descriptor,
        new java.lang.String[] { "Accessibility", "AddAccessorMethod", "CanAdd", "CanInvoke", "CanRemove", "FullName", "InvokeAccessorMethod", "Name", "RemoveAccessorMethod", "PeToken", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
