in src/assembler.ts [1898:1922]
abstract: _isAbstract(symbol, type) || undefined,
name: symbol.name,
parameters: parameters.length > 0 ? parameters : undefined,
protected: _isProtected(symbol) || undefined,
returns: _isVoid(returnType)
? undefined
: this._optionalValue(returnType, declaration.type ?? declaration.name, 'return type'),
async: _isPromise(returnType) || undefined,
static: _isStatic(symbol) || undefined,
locationInModule: this.declarationLocation(declaration),
},
declaration,
);
method.variadic = method.parameters?.some((p) => !!p.variadic) === true ? true : undefined;
this._verifyConsecutiveOptionals(declaration, method.parameters);
method.docs = this._visitDocumentation(symbol, ctx).docs;
// If the last parameter is a datatype, verify that it does not share any field names with
// other function arguments, so that it can be turned into keyword arguments by jsii frontends
// that support such.
const lastParamTypeRef = apply(last(parameters), (x) => x.type);
const lastParamSymbol = last(signature.getParameters());
if (lastParamTypeRef && spec.isNamedTypeReference(lastParamTypeRef)) {