# System.Reflection.Metadata

``` diff
 namespace System.Reflection.Metadata {
-    public struct ArrayShape
+    public readonly struct ArrayShape
-    public struct AssemblyDefinition {
+    public readonly struct AssemblyDefinition {
+        public AssemblyName GetAssemblyName();
     }
-    public struct AssemblyDefinitionHandle : IEquatable<AssemblyDefinitionHandle>
+    public readonly struct AssemblyDefinitionHandle : IEquatable<AssemblyDefinitionHandle>
-    public struct AssemblyFile
+    public readonly struct AssemblyFile
-    public struct AssemblyFileHandle : IEquatable<AssemblyFileHandle>
+    public readonly struct AssemblyFileHandle : IEquatable<AssemblyFileHandle>
-    public struct AssemblyFileHandleCollection : IEnumerable, IEnumerable<AssemblyFileHandle>, IReadOnlyCollection<AssemblyFileHandle>
+    public readonly struct AssemblyFileHandleCollection : IEnumerable, IEnumerable<AssemblyFileHandle>, IReadOnlyCollection<AssemblyFileHandle>
-    public struct AssemblyReference {
+    public readonly struct AssemblyReference {
+        public AssemblyName GetAssemblyName();
     }
-    public struct AssemblyReferenceHandle : IEquatable<AssemblyReferenceHandle>
+    public readonly struct AssemblyReferenceHandle : IEquatable<AssemblyReferenceHandle>
-    public struct AssemblyReferenceHandleCollection : IEnumerable, IEnumerable<AssemblyReferenceHandle>, IReadOnlyCollection<AssemblyReferenceHandle>
+    public readonly struct AssemblyReferenceHandleCollection : IEnumerable, IEnumerable<AssemblyReferenceHandle>, IReadOnlyCollection<AssemblyReferenceHandle>
-    public struct Blob
+    public readonly struct Blob
-    public struct BlobContentId : IEquatable<BlobContentId>
+    public readonly struct BlobContentId : IEquatable<BlobContentId>
-    public struct BlobHandle : IEquatable<BlobHandle>
+    public readonly struct BlobHandle : IEquatable<BlobHandle>
-    public struct Constant
+    public readonly struct Constant
-    public struct ConstantHandle : IEquatable<ConstantHandle>
+    public readonly struct ConstantHandle : IEquatable<ConstantHandle>
-    public struct CustomAttribute
+    public readonly struct CustomAttribute
-    public struct CustomAttributeHandle : IEquatable<CustomAttributeHandle>
+    public readonly struct CustomAttributeHandle : IEquatable<CustomAttributeHandle>
-    public struct CustomAttributeHandleCollection : IEnumerable, IEnumerable<CustomAttributeHandle>, IReadOnlyCollection<CustomAttributeHandle>
+    public readonly struct CustomAttributeHandleCollection : IEnumerable, IEnumerable<CustomAttributeHandle>, IReadOnlyCollection<CustomAttributeHandle>
-    public struct CustomAttributeNamedArgument<TType>
+    public readonly struct CustomAttributeNamedArgument<TType>
-    public struct CustomAttributeTypedArgument<TType>
+    public readonly struct CustomAttributeTypedArgument<TType>
-    public struct CustomAttributeValue<TType>
+    public readonly struct CustomAttributeValue<TType>
-    public struct CustomDebugInformation
+    public readonly struct CustomDebugInformation
-    public struct CustomDebugInformationHandle : IEquatable<CustomDebugInformationHandle>
+    public readonly struct CustomDebugInformationHandle : IEquatable<CustomDebugInformationHandle>
-    public struct CustomDebugInformationHandleCollection : IEnumerable, IEnumerable<CustomDebugInformationHandle>, IReadOnlyCollection<CustomDebugInformationHandle>
+    public readonly struct CustomDebugInformationHandleCollection : IEnumerable, IEnumerable<CustomDebugInformationHandle>, IReadOnlyCollection<CustomDebugInformationHandle>
     public sealed class DebugMetadataHeader {
+        public int IdStartOffset { get; }
     }
-    public struct DeclarativeSecurityAttribute
+    public readonly struct DeclarativeSecurityAttribute
-    public struct DeclarativeSecurityAttributeHandle : IEquatable<DeclarativeSecurityAttributeHandle>
+    public readonly struct DeclarativeSecurityAttributeHandle : IEquatable<DeclarativeSecurityAttributeHandle>
-    public struct DeclarativeSecurityAttributeHandleCollection : IEnumerable, IEnumerable<DeclarativeSecurityAttributeHandle>, IReadOnlyCollection<DeclarativeSecurityAttributeHandle>
+    public readonly struct DeclarativeSecurityAttributeHandleCollection : IEnumerable, IEnumerable<DeclarativeSecurityAttributeHandle>, IReadOnlyCollection<DeclarativeSecurityAttributeHandle>
-    public struct Document
+    public readonly struct Document
-    public struct DocumentHandle : IEquatable<DocumentHandle>
+    public readonly struct DocumentHandle : IEquatable<DocumentHandle>
-    public struct DocumentHandleCollection : IEnumerable, IEnumerable<DocumentHandle>, IReadOnlyCollection<DocumentHandle>
+    public readonly struct DocumentHandleCollection : IEnumerable, IEnumerable<DocumentHandle>, IReadOnlyCollection<DocumentHandle>
-    public struct DocumentNameBlobHandle : IEquatable<DocumentNameBlobHandle>
+    public readonly struct DocumentNameBlobHandle : IEquatable<DocumentNameBlobHandle>
-    public struct EntityHandle : IEquatable<EntityHandle>
+    public readonly struct EntityHandle : IEquatable<EntityHandle>
-    public struct EventAccessors {
+    public readonly struct EventAccessors {
+        public ImmutableArray<MethodDefinitionHandle> Others { get; }
     }
-    public struct EventDefinition
+    public readonly struct EventDefinition
-    public struct EventDefinitionHandle : IEquatable<EventDefinitionHandle>
+    public readonly struct EventDefinitionHandle : IEquatable<EventDefinitionHandle>
-    public struct EventDefinitionHandleCollection : IEnumerable, IEnumerable<EventDefinitionHandle>, IReadOnlyCollection<EventDefinitionHandle>
+    public readonly struct EventDefinitionHandleCollection : IEnumerable, IEnumerable<EventDefinitionHandle>, IReadOnlyCollection<EventDefinitionHandle>
-    public struct ExceptionRegion
+    public readonly struct ExceptionRegion
-    public struct ExportedType
+    public readonly struct ExportedType
-    public struct ExportedTypeHandle : IEquatable<ExportedTypeHandle>
+    public readonly struct ExportedTypeHandle : IEquatable<ExportedTypeHandle>
-    public struct ExportedTypeHandleCollection : IEnumerable, IEnumerable<ExportedTypeHandle>, IReadOnlyCollection<ExportedTypeHandle>
+    public readonly struct ExportedTypeHandleCollection : IEnumerable, IEnumerable<ExportedTypeHandle>, IReadOnlyCollection<ExportedTypeHandle>
-    public struct FieldDefinition
+    public readonly struct FieldDefinition
-    public struct FieldDefinitionHandle : IEquatable<FieldDefinitionHandle>
+    public readonly struct FieldDefinitionHandle : IEquatable<FieldDefinitionHandle>
-    public struct FieldDefinitionHandleCollection : IEnumerable, IEnumerable<FieldDefinitionHandle>, IReadOnlyCollection<FieldDefinitionHandle>
+    public readonly struct FieldDefinitionHandleCollection : IEnumerable, IEnumerable<FieldDefinitionHandle>, IReadOnlyCollection<FieldDefinitionHandle>
-    public struct GenericParameter
+    public readonly struct GenericParameter
-    public struct GenericParameterConstraint
+    public readonly struct GenericParameterConstraint
-    public struct GenericParameterConstraintHandle : IEquatable<GenericParameterConstraintHandle>
+    public readonly struct GenericParameterConstraintHandle : IEquatable<GenericParameterConstraintHandle>
-    public struct GenericParameterConstraintHandleCollection : IEnumerable, IEnumerable<GenericParameterConstraintHandle>, IReadOnlyCollection<GenericParameterConstraintHandle>, IReadOnlyList<GenericParameterConstraintHandle>
+    public readonly struct GenericParameterConstraintHandleCollection : IEnumerable, IEnumerable<GenericParameterConstraintHandle>, IReadOnlyCollection<GenericParameterConstraintHandle>, IReadOnlyList<GenericParameterConstraintHandle>
-    public struct GenericParameterHandle : IEquatable<GenericParameterHandle>
+    public readonly struct GenericParameterHandle : IEquatable<GenericParameterHandle>
-    public struct GenericParameterHandleCollection : IEnumerable, IEnumerable<GenericParameterHandle>, IReadOnlyCollection<GenericParameterHandle>, IReadOnlyList<GenericParameterHandle>
+    public readonly struct GenericParameterHandleCollection : IEnumerable, IEnumerable<GenericParameterHandle>, IReadOnlyCollection<GenericParameterHandle>, IReadOnlyList<GenericParameterHandle>
-    public struct GuidHandle : IEquatable<GuidHandle>
+    public readonly struct GuidHandle : IEquatable<GuidHandle>
-    public struct Handle : IEquatable<Handle>
+    public readonly struct Handle : IEquatable<Handle>
-    public struct ImportDefinition
+    public readonly struct ImportDefinition
-    public struct ImportDefinitionCollection : IEnumerable, IEnumerable<ImportDefinition>
+    public readonly struct ImportDefinitionCollection : IEnumerable, IEnumerable<ImportDefinition>
-    public struct ImportScope
+    public readonly struct ImportScope
-    public struct ImportScopeCollection : IEnumerable, IEnumerable<ImportScopeHandle>, IReadOnlyCollection<ImportScopeHandle>
+    public readonly struct ImportScopeCollection : IEnumerable, IEnumerable<ImportScopeHandle>, IReadOnlyCollection<ImportScopeHandle>
-    public struct ImportScopeHandle : IEquatable<ImportScopeHandle>
+    public readonly struct ImportScopeHandle : IEquatable<ImportScopeHandle>
-    public struct InterfaceImplementation
+    public readonly struct InterfaceImplementation
-    public struct InterfaceImplementationHandle : IEquatable<InterfaceImplementationHandle>
+    public readonly struct InterfaceImplementationHandle : IEquatable<InterfaceImplementationHandle>
-    public struct InterfaceImplementationHandleCollection : IEnumerable, IEnumerable<InterfaceImplementationHandle>, IReadOnlyCollection<InterfaceImplementationHandle>
+    public readonly struct InterfaceImplementationHandleCollection : IEnumerable, IEnumerable<InterfaceImplementationHandle>, IReadOnlyCollection<InterfaceImplementationHandle>
-    public struct LocalConstant
+    public readonly struct LocalConstant
-    public struct LocalConstantHandle : IEquatable<LocalConstantHandle>
+    public readonly struct LocalConstantHandle : IEquatable<LocalConstantHandle>
-    public struct LocalConstantHandleCollection : IEnumerable, IEnumerable<LocalConstantHandle>, IReadOnlyCollection<LocalConstantHandle>
+    public readonly struct LocalConstantHandleCollection : IEnumerable, IEnumerable<LocalConstantHandle>, IReadOnlyCollection<LocalConstantHandle>
-    public struct LocalScope
+    public readonly struct LocalScope
-    public struct LocalScopeHandle : IEquatable<LocalScopeHandle>
+    public readonly struct LocalScopeHandle : IEquatable<LocalScopeHandle>
-    public struct LocalScopeHandleCollection : IEnumerable, IEnumerable<LocalScopeHandle>, IReadOnlyCollection<LocalScopeHandle>
+    public readonly struct LocalScopeHandleCollection : IEnumerable, IEnumerable<LocalScopeHandle>, IReadOnlyCollection<LocalScopeHandle>
-    public struct LocalVariable
+    public readonly struct LocalVariable
-    public struct LocalVariableHandle : IEquatable<LocalVariableHandle>
+    public readonly struct LocalVariableHandle : IEquatable<LocalVariableHandle>
-    public struct LocalVariableHandleCollection : IEnumerable, IEnumerable<LocalVariableHandle>, IReadOnlyCollection<LocalVariableHandle>
+    public readonly struct LocalVariableHandleCollection : IEnumerable, IEnumerable<LocalVariableHandle>, IReadOnlyCollection<LocalVariableHandle>
-    public struct ManifestResource
+    public readonly struct ManifestResource
-    public struct ManifestResourceHandle : IEquatable<ManifestResourceHandle>
+    public readonly struct ManifestResourceHandle : IEquatable<ManifestResourceHandle>
-    public struct ManifestResourceHandleCollection : IEnumerable, IEnumerable<ManifestResourceHandle>, IReadOnlyCollection<ManifestResourceHandle>
+    public readonly struct ManifestResourceHandleCollection : IEnumerable, IEnumerable<ManifestResourceHandle>, IReadOnlyCollection<ManifestResourceHandle>
-    public struct MemberReference
+    public readonly struct MemberReference
-    public struct MemberReferenceHandle : IEquatable<MemberReferenceHandle>
+    public readonly struct MemberReferenceHandle : IEquatable<MemberReferenceHandle>
-    public struct MemberReferenceHandleCollection : IEnumerable, IEnumerable<MemberReferenceHandle>, IReadOnlyCollection<MemberReferenceHandle>
+    public readonly struct MemberReferenceHandleCollection : IEnumerable, IEnumerable<MemberReferenceHandle>, IReadOnlyCollection<MemberReferenceHandle>
-    public struct MetadataStringComparer
+    public readonly struct MetadataStringComparer
-    public struct MethodDebugInformation
+    public readonly struct MethodDebugInformation
-    public struct MethodDebugInformationHandle : IEquatable<MethodDebugInformationHandle>
+    public readonly struct MethodDebugInformationHandle : IEquatable<MethodDebugInformationHandle>
-    public struct MethodDebugInformationHandleCollection : IEnumerable, IEnumerable<MethodDebugInformationHandle>, IReadOnlyCollection<MethodDebugInformationHandle>
+    public readonly struct MethodDebugInformationHandleCollection : IEnumerable, IEnumerable<MethodDebugInformationHandle>, IReadOnlyCollection<MethodDebugInformationHandle>
-    public struct MethodDefinition
+    public readonly struct MethodDefinition
-    public struct MethodDefinitionHandle : IEquatable<MethodDefinitionHandle>
+    public readonly struct MethodDefinitionHandle : IEquatable<MethodDefinitionHandle>
-    public struct MethodDefinitionHandleCollection : IEnumerable, IEnumerable<MethodDefinitionHandle>, IReadOnlyCollection<MethodDefinitionHandle>
+    public readonly struct MethodDefinitionHandleCollection : IEnumerable, IEnumerable<MethodDefinitionHandle>, IReadOnlyCollection<MethodDefinitionHandle>
-    public struct MethodImplementation
+    public readonly struct MethodImplementation
-    public struct MethodImplementationHandle : IEquatable<MethodImplementationHandle>
+    public readonly struct MethodImplementationHandle : IEquatable<MethodImplementationHandle>
-    public struct MethodImplementationHandleCollection : IEnumerable, IEnumerable<MethodImplementationHandle>, IReadOnlyCollection<MethodImplementationHandle>
+    public readonly struct MethodImplementationHandleCollection : IEnumerable, IEnumerable<MethodImplementationHandle>, IReadOnlyCollection<MethodImplementationHandle>
-    public struct MethodImport
+    public readonly struct MethodImport
-    public struct MethodSignature<TType>
+    public readonly struct MethodSignature<TType>
-    public struct MethodSpecification
+    public readonly struct MethodSpecification
-    public struct MethodSpecificationHandle : IEquatable<MethodSpecificationHandle>
+    public readonly struct MethodSpecificationHandle : IEquatable<MethodSpecificationHandle>
-    public struct ModuleDefinition {
+    public readonly struct ModuleDefinition {
+        public CustomAttributeHandleCollection GetCustomAttributes();
     }
-    public struct ModuleDefinitionHandle : IEquatable<ModuleDefinitionHandle>
+    public readonly struct ModuleDefinitionHandle : IEquatable<ModuleDefinitionHandle>
-    public struct ModuleReference
+    public readonly struct ModuleReference
-    public struct ModuleReferenceHandle : IEquatable<ModuleReferenceHandle>
+    public readonly struct ModuleReferenceHandle : IEquatable<ModuleReferenceHandle>
-    public struct NamespaceDefinitionHandle : IEquatable<NamespaceDefinitionHandle>
+    public readonly struct NamespaceDefinitionHandle : IEquatable<NamespaceDefinitionHandle>
-    public struct Parameter
+    public readonly struct Parameter
-    public struct ParameterHandle : IEquatable<ParameterHandle>
+    public readonly struct ParameterHandle : IEquatable<ParameterHandle>
-    public struct ParameterHandleCollection : IEnumerable, IEnumerable<ParameterHandle>, IReadOnlyCollection<ParameterHandle>
+    public readonly struct ParameterHandleCollection : IEnumerable, IEnumerable<ParameterHandle>, IReadOnlyCollection<ParameterHandle>
-    public struct PropertyAccessors {
+    public readonly struct PropertyAccessors {
+        public ImmutableArray<MethodDefinitionHandle> Others { get; }
     }
-    public struct PropertyDefinition
+    public readonly struct PropertyDefinition
-    public struct PropertyDefinitionHandle : IEquatable<PropertyDefinitionHandle>
+    public readonly struct PropertyDefinitionHandle : IEquatable<PropertyDefinitionHandle>
-    public struct PropertyDefinitionHandleCollection : IEnumerable, IEnumerable<PropertyDefinitionHandle>, IReadOnlyCollection<PropertyDefinitionHandle>
+    public readonly struct PropertyDefinitionHandleCollection : IEnumerable, IEnumerable<PropertyDefinitionHandle>, IReadOnlyCollection<PropertyDefinitionHandle>
-    public struct ReservedBlob<THandle> where THandle : struct
+    public readonly struct ReservedBlob<THandle> where THandle : struct
-    public struct SequencePoint : IEquatable<SequencePoint>
+    public readonly struct SequencePoint : IEquatable<SequencePoint>
-    public struct SequencePointCollection : IEnumerable, IEnumerable<SequencePoint>
+    public readonly struct SequencePointCollection : IEnumerable, IEnumerable<SequencePoint>
-    public struct StandaloneSignature
+    public readonly struct StandaloneSignature
-    public struct StandaloneSignatureHandle : IEquatable<StandaloneSignatureHandle>
+    public readonly struct StandaloneSignatureHandle : IEquatable<StandaloneSignatureHandle>
-    public struct StringHandle : IEquatable<StringHandle>
+    public readonly struct StringHandle : IEquatable<StringHandle>
-    public struct TypeDefinition {
+    public readonly struct TypeDefinition {
+        public bool IsNested { get; }
     }
-    public struct TypeDefinitionHandle : IEquatable<TypeDefinitionHandle>
+    public readonly struct TypeDefinitionHandle : IEquatable<TypeDefinitionHandle>
-    public struct TypeDefinitionHandleCollection : IEnumerable, IEnumerable<TypeDefinitionHandle>, IReadOnlyCollection<TypeDefinitionHandle>
+    public readonly struct TypeDefinitionHandleCollection : IEnumerable, IEnumerable<TypeDefinitionHandle>, IReadOnlyCollection<TypeDefinitionHandle>
-    public struct TypeLayout
+    public readonly struct TypeLayout
-    public struct TypeReference
+    public readonly struct TypeReference
-    public struct TypeReferenceHandle : IEquatable<TypeReferenceHandle>
+    public readonly struct TypeReferenceHandle : IEquatable<TypeReferenceHandle>
-    public struct TypeReferenceHandleCollection : IEnumerable, IEnumerable<TypeReferenceHandle>, IReadOnlyCollection<TypeReferenceHandle>
+    public readonly struct TypeReferenceHandleCollection : IEnumerable, IEnumerable<TypeReferenceHandle>, IReadOnlyCollection<TypeReferenceHandle>
-    public struct TypeSpecification
+    public readonly struct TypeSpecification
-    public struct TypeSpecificationHandle : IEquatable<TypeSpecificationHandle>
+    public readonly struct TypeSpecificationHandle : IEquatable<TypeSpecificationHandle>
-    public struct UserStringHandle : IEquatable<UserStringHandle>
+    public readonly struct UserStringHandle : IEquatable<UserStringHandle>
 }
```

