Skip to content

Smdn.Reflection.ReverseGenerating version 1.1.0

Choose a tag to compare

@smdn smdn released this 09 Jul 14:30
· 446 commits to main since this release
b014c00

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net45.apilist.cs b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net45.apilist.cs
index c02a07a..e778cb9 100644
--- a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net45.apilist.cs
+++ b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net45.apilist.cs
@@ -1,90 +1,136 @@
-// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.0.5)
+// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.1.0)
 //   Name: Smdn.Reflection.ReverseGenerating
-//   AssemblyVersion: 1.0.5.0
-//   InformationalVersion: 1.0.5+dd9591cbed8623f61349f46c833f14f1578db406
+//   AssemblyVersion: 1.1.0.0
+//   InformationalVersion: 1.1.0+074a83ab64ee9e829c2f3835cf0c03af8af0f59d
 //   TargetFramework: .NETFramework,Version=v4.5
 //   Configuration: Release
 
 using System;
 using System.Collections.Generic;
 using System.Reflection;
+using System.Runtime.CompilerServices;
 using Smdn.Reflection;
 using Smdn.Reflection.ReverseGenerating;
 
 namespace Smdn.Reflection.ReverseGenerating {
   public delegate bool AttributeTypeFilter(Type type, ICustomAttributeProvider attributeProvider);
 
+  public enum AttributeSectionFormat : int {
+    Discrete = 1,
+    List = 0,
+  }
+
   public enum MethodBodyOption : int {
     EmptyImplementation = 1,
     None = 0,
     ThrowNotImplementedException = 2,
+    ThrowNull = 3,
   }
 
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
   public static class CSharpFormatter {
     public static string EscapeString(string s, bool escapeSingleQuote = false, bool escapeDoubleQuote = false) {}
     public static string FormatAccessibility(Accessibility accessibility) {}
     public static string FormatParameter(ParameterInfo p, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatParameterList(MethodBase m, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatParameterList(ParameterInfo[] parameterList, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatSpecialNameMethod(MethodBase methodOrConstructor, out MethodSpecialName nameType) {}
-    public static string FormatTypeName(this Type t, ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
-    public static string FormatValueDeclaration(object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
+    public static string FormatTypeName(this EventInfo ev, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this FieldInfo f, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this ParameterInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this PropertyInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this Type t, [Nullable(2)] ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatValueDeclaration([Nullable(2)] object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
     public static bool IsLanguagePrimitiveType(Type t, out string primitiveTypeName) {}
     public static IEnumerable<string> ToNamespaceList(Type t) {}
   }
 
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
   public static class Generator {
-    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateMemberDeclaration(MemberInfo member, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateTypeDeclaration(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    [return: Nullable(2)] public static string GenerateMemberDeclaration(MemberInfo member, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateTypeDeclaration(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
   }
 
-  public class GeneratorOptions {
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
+  public class GeneratorOptions : ICloneable {
+    [Nullable(byte.MinValue)]
+    [NullableContext(2)]
     public class AttributeDeclarationOptions {
       public AttributeDeclarationOptions() {}
 
+      public AttributeSectionFormat AccessorFormat { get; set; }
+      public AttributeSectionFormat AccessorParameterFormat { get; set; }
+      public AttributeSectionFormat BackingFieldFormat { get; set; }
+      public AttributeSectionFormat DelegateParameterFormat { get; set; }
+      public AttributeSectionFormat GenericParameterFormat { get; set; }
+      public AttributeSectionFormat MethodParameterFormat { get; set; }
+      public bool OmitAttributeSuffix { get; set; }
       public AttributeTypeFilter TypeFilter { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
       public bool WithNamedArguments { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
     public class MemberDeclarationOptions {
       public MemberDeclarationOptions() {}
 
+      public MethodBodyOption AccessorBody { get; set; }
       public MethodBodyOption MethodBody { get; set; }
       public bool OmitEndOfStatement { get; set; }
       public bool WithAccessibility { get; set; }
       public bool WithDeclaringTypeName { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
+    public class ParameterDeclarationOptions {
+      public ParameterDeclarationOptions() {}
+
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    [NullableContext(byte.MinValue)]
     public class TypeDeclarationOptions {
       public TypeDeclarationOptions() {}
 
       public bool OmitEndOfStatement { get; set; }
       public bool WithAccessibility { get; set; }
       public bool WithDeclaringTypeName { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
     public class ValueDeclarationOptions {
       public ValueDeclarationOptions() {}
 
       public bool UseDefaultLiteral { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
     }
 
     public GeneratorOptions() {}
 
-    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; }
+    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; init; }
     public bool IgnorePrivateOrAssembly { get; set; }
+    [Nullable(2)]
     public string Indent { get; set; }
-    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; }
+    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; init; }
+    public GeneratorOptions.ParameterDeclarationOptions ParameterDeclaration { get; init; }
     public bool TranslateLanguagePrimitiveTypeDeclaration { get; set; }
-    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; }
-    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; }
+    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; init; }
+    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; init; }
+
+    public virtual GeneratorOptions Clone() {}
+    object ICloneable.Clone() {}
   }
 }
 
diff --git a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net47.apilist.cs b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net47.apilist.cs
index 6e7284d..e225fc4 100644
--- a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net47.apilist.cs
+++ b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net47.apilist.cs
@@ -1,90 +1,136 @@
-// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.0.5)
+// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.1.0)
 //   Name: Smdn.Reflection.ReverseGenerating
-//   AssemblyVersion: 1.0.5.0
-//   InformationalVersion: 1.0.5+dd9591cbed8623f61349f46c833f14f1578db406
+//   AssemblyVersion: 1.1.0.0
+//   InformationalVersion: 1.1.0+074a83ab64ee9e829c2f3835cf0c03af8af0f59d
 //   TargetFramework: .NETFramework,Version=v4.7
 //   Configuration: Release
 
 using System;
 using System.Collections.Generic;
 using System.Reflection;
+using System.Runtime.CompilerServices;
 using Smdn.Reflection;
 using Smdn.Reflection.ReverseGenerating;
 
 namespace Smdn.Reflection.ReverseGenerating {
   public delegate bool AttributeTypeFilter(Type type, ICustomAttributeProvider attributeProvider);
 
+  public enum AttributeSectionFormat : int {
+    Discrete = 1,
+    List = 0,
+  }
+
   public enum MethodBodyOption : int {
     EmptyImplementation = 1,
     None = 0,
     ThrowNotImplementedException = 2,
+    ThrowNull = 3,
   }
 
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
   public static class CSharpFormatter {
     public static string EscapeString(string s, bool escapeSingleQuote = false, bool escapeDoubleQuote = false) {}
     public static string FormatAccessibility(Accessibility accessibility) {}
     public static string FormatParameter(ParameterInfo p, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatParameterList(MethodBase m, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatParameterList(ParameterInfo[] parameterList, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatSpecialNameMethod(MethodBase methodOrConstructor, out MethodSpecialName nameType) {}
-    public static string FormatTypeName(this Type t, ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
-    public static string FormatValueDeclaration(object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
+    public static string FormatTypeName(this EventInfo ev, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this FieldInfo f, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this ParameterInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this PropertyInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this Type t, [Nullable(2)] ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatValueDeclaration([Nullable(2)] object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
     public static bool IsLanguagePrimitiveType(Type t, out string primitiveTypeName) {}
     public static IEnumerable<string> ToNamespaceList(Type t) {}
   }
 
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
   public static class Generator {
-    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateMemberDeclaration(MemberInfo member, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateTypeDeclaration(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    [return: Nullable(2)] public static string GenerateMemberDeclaration(MemberInfo member, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateTypeDeclaration(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
   }
 
-  public class GeneratorOptions {
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
+  public class GeneratorOptions : ICloneable {
+    [Nullable(byte.MinValue)]
+    [NullableContext(2)]
     public class AttributeDeclarationOptions {
       public AttributeDeclarationOptions() {}
 
+      public AttributeSectionFormat AccessorFormat { get; set; }
+      public AttributeSectionFormat AccessorParameterFormat { get; set; }
+      public AttributeSectionFormat BackingFieldFormat { get; set; }
+      public AttributeSectionFormat DelegateParameterFormat { get; set; }
+      public AttributeSectionFormat GenericParameterFormat { get; set; }
+      public AttributeSectionFormat MethodParameterFormat { get; set; }
+      public bool OmitAttributeSuffix { get; set; }
       public AttributeTypeFilter TypeFilter { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
       public bool WithNamedArguments { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
     public class MemberDeclarationOptions {
       public MemberDeclarationOptions() {}
 
+      public MethodBodyOption AccessorBody { get; set; }
       public MethodBodyOption MethodBody { get; set; }
       public bool OmitEndOfStatement { get; set; }
       public bool WithAccessibility { get; set; }
       public bool WithDeclaringTypeName { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
+    public class ParameterDeclarationOptions {
+      public ParameterDeclarationOptions() {}
+
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    [NullableContext(byte.MinValue)]
     public class TypeDeclarationOptions {
       public TypeDeclarationOptions() {}
 
       public bool OmitEndOfStatement { get; set; }
       public bool WithAccessibility { get; set; }
       public bool WithDeclaringTypeName { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
     public class ValueDeclarationOptions {
       public ValueDeclarationOptions() {}
 
       public bool UseDefaultLiteral { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
     }
 
     public GeneratorOptions() {}
 
-    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; }
+    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; init; }
     public bool IgnorePrivateOrAssembly { get; set; }
+    [Nullable(2)]
     public string Indent { get; set; }
-    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; }
+    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; init; }
+    public GeneratorOptions.ParameterDeclarationOptions ParameterDeclaration { get; init; }
     public bool TranslateLanguagePrimitiveTypeDeclaration { get; set; }
-    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; }
-    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; }
+    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; init; }
+    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; init; }
+
+    public virtual GeneratorOptions Clone() {}
+    object ICloneable.Clone() {}
   }
 }
 
diff --git a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net5.0.apilist.cs b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net5.0.apilist.cs
index bfaef74..1443d84 100644
--- a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net5.0.apilist.cs
+++ b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net5.0.apilist.cs
@@ -1,90 +1,137 @@
-// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.0.5)
+// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.1.0)
 //   Name: Smdn.Reflection.ReverseGenerating
-//   AssemblyVersion: 1.0.5.0
-//   InformationalVersion: 1.0.5+dd9591cbed8623f61349f46c833f14f1578db406
+//   AssemblyVersion: 1.1.0.0
+//   InformationalVersion: 1.1.0+074a83ab64ee9e829c2f3835cf0c03af8af0f59d
 //   TargetFramework: .NETCoreApp,Version=v5.0
 //   Configuration: Release
 
 using System;
 using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
 using System.Reflection;
+using System.Runtime.CompilerServices;
 using Smdn.Reflection;
 using Smdn.Reflection.ReverseGenerating;
 
 namespace Smdn.Reflection.ReverseGenerating {
   public delegate bool AttributeTypeFilter(Type type, ICustomAttributeProvider attributeProvider);
 
+  public enum AttributeSectionFormat : int {
+    Discrete = 1,
+    List = 0,
+  }
+
   public enum MethodBodyOption : int {
     EmptyImplementation = 1,
     None = 0,
     ThrowNotImplementedException = 2,
+    ThrowNull = 3,
   }
 
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
   public static class CSharpFormatter {
     public static string EscapeString(string s, bool escapeSingleQuote = false, bool escapeDoubleQuote = false) {}
     public static string FormatAccessibility(Accessibility accessibility) {}
     public static string FormatParameter(ParameterInfo p, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatParameterList(MethodBase m, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatParameterList(ParameterInfo[] parameterList, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatSpecialNameMethod(MethodBase methodOrConstructor, out MethodSpecialName nameType) {}
-    public static string FormatTypeName(this Type t, ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
-    public static string FormatValueDeclaration(object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
-    public static bool IsLanguagePrimitiveType(Type t, out string primitiveTypeName) {}
+    public static string FormatTypeName(this EventInfo ev, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this FieldInfo f, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this ParameterInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this PropertyInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this Type t, [Nullable(2)] ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatValueDeclaration([Nullable(2)] object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
+    public static bool IsLanguagePrimitiveType(Type t, [MaybeNullWhen(false)] out string primitiveTypeName) {}
     public static IEnumerable<string> ToNamespaceList(Type t) {}
   }
 
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
   public static class Generator {
-    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateMemberDeclaration(MemberInfo member, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateTypeDeclaration(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    [return: Nullable(2)] public static string GenerateMemberDeclaration(MemberInfo member, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateTypeDeclaration(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
   }
 
-  public class GeneratorOptions {
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
+  public class GeneratorOptions : ICloneable {
+    [Nullable(byte.MinValue)]
+    [NullableContext(2)]
     public class AttributeDeclarationOptions {
       public AttributeDeclarationOptions() {}
 
+      public AttributeSectionFormat AccessorFormat { get; set; }
+      public AttributeSectionFormat AccessorParameterFormat { get; set; }
+      public AttributeSectionFormat BackingFieldFormat { get; set; }
+      public AttributeSectionFormat DelegateParameterFormat { get; set; }
+      public AttributeSectionFormat GenericParameterFormat { get; set; }
+      public AttributeSectionFormat MethodParameterFormat { get; set; }
+      public bool OmitAttributeSuffix { get; set; }
       public AttributeTypeFilter TypeFilter { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
       public bool WithNamedArguments { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
     public class MemberDeclarationOptions {
       public MemberDeclarationOptions() {}
 
+      public MethodBodyOption AccessorBody { get; set; }
       public MethodBodyOption MethodBody { get; set; }
       public bool OmitEndOfStatement { get; set; }
       public bool WithAccessibility { get; set; }
       public bool WithDeclaringTypeName { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
+    public class ParameterDeclarationOptions {
+      public ParameterDeclarationOptions() {}
+
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    [NullableContext(byte.MinValue)]
     public class TypeDeclarationOptions {
       public TypeDeclarationOptions() {}
 
       public bool OmitEndOfStatement { get; set; }
       public bool WithAccessibility { get; set; }
       public bool WithDeclaringTypeName { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
     public class ValueDeclarationOptions {
       public ValueDeclarationOptions() {}
 
       public bool UseDefaultLiteral { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
     }
 
     public GeneratorOptions() {}
 
-    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; }
+    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; init; }
     public bool IgnorePrivateOrAssembly { get; set; }
+    [Nullable(2)]
     public string Indent { get; set; }
-    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; }
+    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; init; }
+    public GeneratorOptions.ParameterDeclarationOptions ParameterDeclaration { get; init; }
     public bool TranslateLanguagePrimitiveTypeDeclaration { get; set; }
-    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; }
-    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; }
+    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; init; }
+    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; init; }
+
+    public virtual GeneratorOptions Clone() {}
+    object ICloneable.Clone() {}
   }
 }
 
diff --git a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net6.0.apilist.cs b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net6.0.apilist.cs
new file mode 100644
index 0000000..7162cd9
--- /dev/null
+++ b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-net6.0.apilist.cs
@@ -0,0 +1,148 @@
+// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.1.0)
+//   Name: Smdn.Reflection.ReverseGenerating
+//   AssemblyVersion: 1.1.0.0
+//   InformationalVersion: 1.1.0+074a83ab64ee9e829c2f3835cf0c03af8af0f59d
+//   TargetFramework: .NETCoreApp,Version=v6.0
+//   Configuration: Release
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using Smdn.Reflection;
+using Smdn.Reflection.ReverseGenerating;
+
+namespace Smdn.Reflection.ReverseGenerating {
+  public delegate bool AttributeTypeFilter(Type type, ICustomAttributeProvider attributeProvider);
+
+  public enum AttributeSectionFormat : int {
+    Discrete = 1,
+    List = 0,
+  }
+
+  public enum MethodBodyOption : int {
+    EmptyImplementation = 1,
+    None = 0,
+    ThrowNotImplementedException = 2,
+    ThrowNull = 3,
+  }
+
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
+  public static class CSharpFormatter {
+    public static string EscapeString(string s, bool escapeSingleQuote = false, bool escapeDoubleQuote = false) {}
+    public static string FormatAccessibility(Accessibility accessibility) {}
+    public static string FormatParameter(ParameterInfo p, [Nullable(2)] NullabilityInfoContext nullabilityInfoContext, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
+    public static string FormatParameter(ParameterInfo p, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
+    public static string FormatParameterList(MethodBase m, [Nullable(2)] NullabilityInfoContext nullabilityInfoContext, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
+    public static string FormatParameterList(MethodBase m, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
+    public static string FormatParameterList(ParameterInfo[] parameterList, [Nullable(2)] NullabilityInfoContext nullabilityInfoContext, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
+    public static string FormatParameterList(ParameterInfo[] parameterList, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
+    public static string FormatSpecialNameMethod(MethodBase methodOrConstructor, out MethodSpecialName nameType) {}
+    public static string FormatTypeName(this EventInfo ev, [Nullable(2)] NullabilityInfoContext nullabilityInfoContext, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this EventInfo ev, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this FieldInfo f, [Nullable(2)] NullabilityInfoContext nullabilityInfoContext, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this FieldInfo f, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this ParameterInfo p, [Nullable(2)] NullabilityInfoContext nullabilityInfoContext, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this ParameterInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this PropertyInfo p, [Nullable(2)] NullabilityInfoContext nullabilityInfoContext, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this PropertyInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this Type t, [Nullable(2)] ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatValueDeclaration([Nullable(2)] object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
+    public static bool IsLanguagePrimitiveType(Type t, [MaybeNullWhen(false)] out string primitiveTypeName) {}
+    public static IEnumerable<string> ToNamespaceList(Type t) {}
+  }
+
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
+  public static class Generator {
+    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    [return: Nullable(2)] public static string GenerateMemberDeclaration(MemberInfo member, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateTypeDeclaration(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+  }
+
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
+  public class GeneratorOptions : ICloneable {
+    [Nullable(byte.MinValue)]
+    [NullableContext(2)]
+    public class AttributeDeclarationOptions {
+      public AttributeDeclarationOptions() {}
+
+      public AttributeSectionFormat AccessorFormat { get; set; }
+      public AttributeSectionFormat AccessorParameterFormat { get; set; }
+      public AttributeSectionFormat BackingFieldFormat { get; set; }
+      public AttributeSectionFormat DelegateParameterFormat { get; set; }
+      public AttributeSectionFormat GenericParameterFormat { get; set; }
+      public AttributeSectionFormat MethodParameterFormat { get; set; }
+      public bool OmitAttributeSuffix { get; set; }
+      public AttributeTypeFilter TypeFilter { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamedArguments { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    [Nullable(byte.MinValue)]
+    [NullableContext(2)]
+    public class MemberDeclarationOptions {
+      public MemberDeclarationOptions() {}
+
+      public MethodBodyOption AccessorBody { get; set; }
+      public MethodBodyOption MethodBody { get; set; }
+      public NullabilityInfoContext NullabilityInfoContext { get; set; }
+      public bool OmitEndOfStatement { get; set; }
+      public bool WithAccessibility { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    [NullableContext(byte.MinValue)]
+    public class ParameterDeclarationOptions {
+      public ParameterDeclarationOptions() {}
+
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    [Nullable(byte.MinValue)]
+    [NullableContext(2)]
+    public class TypeDeclarationOptions {
+      public TypeDeclarationOptions() {}
+
+      public NullabilityInfoContext NullabilityInfoContext { get; set; }
+      public bool OmitEndOfStatement { get; set; }
+      public bool WithAccessibility { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    [NullableContext(byte.MinValue)]
+    public class ValueDeclarationOptions {
+      public ValueDeclarationOptions() {}
+
+      public bool UseDefaultLiteral { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    public GeneratorOptions() {}
+
+    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; init; }
+    public bool IgnorePrivateOrAssembly { get; set; }
+    [Nullable(2)]
+    public string Indent { get; set; }
+    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; init; }
+    public GeneratorOptions.ParameterDeclarationOptions ParameterDeclaration { get; init; }
+    public bool TranslateLanguagePrimitiveTypeDeclaration { get; set; }
+    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; init; }
+    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; init; }
+
+    public virtual GeneratorOptions Clone() {}
+    object ICloneable.Clone() {}
+  }
+}
+
diff --git a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-netstandard2.0.apilist.cs b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-netstandard2.0.apilist.cs
index a13e562..0135654 100644
--- a/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-netstandard2.0.apilist.cs
+++ b/doc/api-list/Smdn.Reflection.ReverseGenerating/Smdn.Reflection.ReverseGenerating-netstandard2.0.apilist.cs
@@ -1,90 +1,136 @@
-// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.0.5)
+// Smdn.Reflection.ReverseGenerating.dll (Smdn.Reflection.ReverseGenerating-1.1.0)
 //   Name: Smdn.Reflection.ReverseGenerating
-//   AssemblyVersion: 1.0.5.0
-//   InformationalVersion: 1.0.5+dd9591cbed8623f61349f46c833f14f1578db406
+//   AssemblyVersion: 1.1.0.0
+//   InformationalVersion: 1.1.0+074a83ab64ee9e829c2f3835cf0c03af8af0f59d
 //   TargetFramework: .NETStandard,Version=v2.0
 //   Configuration: Release
 
 using System;
 using System.Collections.Generic;
 using System.Reflection;
+using System.Runtime.CompilerServices;
 using Smdn.Reflection;
 using Smdn.Reflection.ReverseGenerating;
 
 namespace Smdn.Reflection.ReverseGenerating {
   public delegate bool AttributeTypeFilter(Type type, ICustomAttributeProvider attributeProvider);
 
+  public enum AttributeSectionFormat : int {
+    Discrete = 1,
+    List = 0,
+  }
+
   public enum MethodBodyOption : int {
     EmptyImplementation = 1,
     None = 0,
     ThrowNotImplementedException = 2,
+    ThrowNull = 3,
   }
 
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
   public static class CSharpFormatter {
     public static string EscapeString(string s, bool escapeSingleQuote = false, bool escapeDoubleQuote = false) {}
     public static string FormatAccessibility(Accessibility accessibility) {}
     public static string FormatParameter(ParameterInfo p, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatParameterList(MethodBase m, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatParameterList(ParameterInfo[] parameterList, bool typeWithNamespace = true, bool useDefaultLiteral = false) {}
     public static string FormatSpecialNameMethod(MethodBase methodOrConstructor, out MethodSpecialName nameType) {}
-    public static string FormatTypeName(this Type t, ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
-    public static string FormatValueDeclaration(object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
+    public static string FormatTypeName(this EventInfo ev, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this FieldInfo f, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this ParameterInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this PropertyInfo p, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatTypeName(this Type t, [Nullable(2)] ICustomAttributeProvider attributeProvider = null, bool typeWithNamespace = true, bool withDeclaringTypeName = true, bool translateLanguagePrimitiveType = true) {}
+    public static string FormatValueDeclaration([Nullable(2)] object val, Type typeOfValue, bool typeWithNamespace = true, bool findConstantField = false, bool useDefaultLiteral = false) {}
     public static bool IsLanguagePrimitiveType(Type t, out string primitiveTypeName) {}
     public static IEnumerable<string> ToNamespaceList(Type t) {}
   }
 
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
   public static class Generator {
-    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateMemberDeclaration(MemberInfo member, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static string GenerateTypeDeclaration(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
-    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateAttributeList(ICustomAttributeProvider attributeProvider, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateGenericArgumentConstraintDeclaration(Type genericArgument, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    [return: Nullable(2)] public static string GenerateMemberDeclaration(MemberInfo member, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static string GenerateTypeDeclaration(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
+    public static IEnumerable<string> GenerateTypeDeclarationWithExplicitBaseTypeAndInterfaces(Type t, [Nullable] ISet<string> referencingNamespaces, GeneratorOptions options) {}
   }
 
-  public class GeneratorOptions {
+  [Nullable(byte.MinValue)]
+  [NullableContext(1)]
+  public class GeneratorOptions : ICloneable {
+    [Nullable(byte.MinValue)]
+    [NullableContext(2)]
     public class AttributeDeclarationOptions {
       public AttributeDeclarationOptions() {}
 
+      public AttributeSectionFormat AccessorFormat { get; set; }
+      public AttributeSectionFormat AccessorParameterFormat { get; set; }
+      public AttributeSectionFormat BackingFieldFormat { get; set; }
+      public AttributeSectionFormat DelegateParameterFormat { get; set; }
+      public AttributeSectionFormat GenericParameterFormat { get; set; }
+      public AttributeSectionFormat MethodParameterFormat { get; set; }
+      public bool OmitAttributeSuffix { get; set; }
       public AttributeTypeFilter TypeFilter { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
       public bool WithNamedArguments { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
     public class MemberDeclarationOptions {
       public MemberDeclarationOptions() {}
 
+      public MethodBodyOption AccessorBody { get; set; }
       public MethodBodyOption MethodBody { get; set; }
       public bool OmitEndOfStatement { get; set; }
       public bool WithAccessibility { get; set; }
       public bool WithDeclaringTypeName { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
+    public class ParameterDeclarationOptions {
+      public ParameterDeclarationOptions() {}
+
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
+    }
+
+    [NullableContext(byte.MinValue)]
     public class TypeDeclarationOptions {
       public TypeDeclarationOptions() {}
 
       public bool OmitEndOfStatement { get; set; }
       public bool WithAccessibility { get; set; }
       public bool WithDeclaringTypeName { get; set; }
       public bool WithNamespace { get; set; }
     }
 
+    [NullableContext(byte.MinValue)]
     public class ValueDeclarationOptions {
       public ValueDeclarationOptions() {}
 
       public bool UseDefaultLiteral { get; set; }
+      public bool WithDeclaringTypeName { get; set; }
+      public bool WithNamespace { get; set; }
     }
 
     public GeneratorOptions() {}
 
-    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; }
+    public GeneratorOptions.AttributeDeclarationOptions AttributeDeclaration { get; init; }
     public bool IgnorePrivateOrAssembly { get; set; }
+    [Nullable(2)]
     public string Indent { get; set; }
-    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; }
+    public GeneratorOptions.MemberDeclarationOptions MemberDeclaration { get; init; }
+    public GeneratorOptions.ParameterDeclarationOptions ParameterDeclaration { get; init; }
     public bool TranslateLanguagePrimitiveTypeDeclaration { get; set; }
-    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; }
-    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; }
+    public GeneratorOptions.TypeDeclarationOptions TypeDeclaration { get; init; }
+    public GeneratorOptions.ValueDeclarationOptions ValueDeclaration { get; init; }
+
+    public virtual GeneratorOptions Clone() {}
+    object ICloneable.Clone() {}
   }
 }
 

Full Changelog: releases/Smdn.Reflection.ReverseGenerating-1.0.5...releases/Smdn.Reflection.ReverseGenerating-1.1.0