{"record":{"id":"c60cbb4ce4cebc1b","repo":"dotnet/BenchmarkDotNet","slug":"asyncmethodbuilder-buildertype-getdisplayname","errorCode":null,"errorMessage":"AsyncMethodBuilder {builderType.GetDisplayName()} has generic arity greater than 1.","messagePattern":"AsyncMethodBuilder (.+?) has generic arity greater than 1\\.","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"src/BenchmarkDotNet/Toolchains/InProcess/Emit/Implementation/Emitters/AsyncCoreEmitterBase.cs","lineNumber":144,"sourceCode":"                {\n                    return typeof(AsyncTaskMethodBuilder);\n                }\n                if (asyncType.IsGenericType && asyncType.GetGenericTypeDefinition() == typeof(Task<>))\n                {\n                    return typeof(AsyncTaskMethodBuilder<>).MakeGenericType([asyncType.GetGenericArguments()[0]]);\n                }\n                throw new NotSupportedException($\"AsyncMethodBuilderAttribute not found on type {asyncType.GetDisplayName()} from {Descriptor.DisplayInfo}\");\n            }\n\n            static Type GetConcreteBuilderType(Type builderType, Type forReturnType)\n            {\n                if (!builderType.IsGenericTypeDefinition)\n                {\n                    return builderType;\n                }\n                if (builderType.GetGenericArguments().Length != 1)\n                {\n                    throw new NotSupportedException($\"AsyncMethodBuilder {builderType.GetDisplayName()} has generic arity greater than 1.\");\n                }\n                var resultType = forReturnType\n                    .GetMethod(nameof(Task.GetAwaiter), BindingFlags.Public | BindingFlags.Instance)!\n                    .ReturnType\n                    .GetMethod(nameof(TaskAwaiter.GetResult), BindingFlags.Public | BindingFlags.Instance)!\n                    .ReturnType;\n                return builderType.MakeGenericType([resultType]);\n            }\n        }\n\n        private void EmitOverhead()\n        {\n            var noUnrollMethod = EmitOverheadNoUnrollMethod();\n            EmitOverheadUnrollMethod(noUnrollMethod);\n        }\n\n        private MethodInfo EmitOverheadNoUnrollMethod()\n        {","sourceCodeStart":126,"sourceCodeEnd":162,"githubUrl":"https://github.com/dotnet/BenchmarkDotNet/blob/b515068b61ad1c9c9aa938b8ece4af1e7d6d85a3/src/BenchmarkDotNet/Toolchains/InProcess/Emit/Implementation/Emitters/AsyncCoreEmitterBase.cs#L126-L162","documentation":"The InProcess emitter supports AsyncMethodBuilder types with generic arity 0 or 1 only; builders with more than one generic parameter cannot be emitted.","triggerScenarios":"Thrown at src/BenchmarkDotNet/Toolchains/InProcess/Emit/Implementation/Emitters/AsyncCoreEmitterBase.cs:144 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use an async method builder with at most one generic type parameter (e.g. AsyncTaskMethodBuilder or AsyncTaskMethodBuilder<T>).","If you authored a custom builder, reduce its generic arity to 0 or 1."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b515068b61ad1c9c9aa938b8ece4af1e7d6d85a3","analyzedAt":"2026-08-13T19:12:24.196Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}