public static FunctionPointerMethodSymbol CreateFromSource(FunctionPointerTypeSyntax syntax, Binder typeBinder, DiagnosticBag diagnostics, ConsList <TypeSymbol> basesBeingResolved, bool suppressUseSiteDiagnostics) { var(callingConvention, conventionIsValid) = FunctionPointerTypeSymbol.GetCallingConvention(syntax.CallingConvention.Text); if (!conventionIsValid) { // '{0}' is not a valid calling convention for a function pointer. Valid conventions are 'cdecl', 'managed', 'thiscall', and 'stdcall'. diagnostics.Add(ErrorCode.ERR_InvalidFunctionPointerCallingConvention, syntax.CallingConvention.GetLocation(), syntax.CallingConvention.Text); } RefKind refKind = RefKind.None; TypeWithAnnotations returnType; var refReadonlyModifiers = ImmutableArray <CustomModifier> .Empty; if (syntax.Parameters.Count == 0) { returnType = TypeWithAnnotations.Create(typeBinder.CreateErrorType()); } else { var returnTypeParameter = syntax.Parameters[^ 1];