ParameterDescriptor
A parameter of an exported FunctionDescriptor.
Sealed so that each variant represents a distinct contribution to the wrapper:
Plain maps 1:1 to the source function's parameter list;
Spread expands a class type into one wrapper parameter per constructor member and rebuilds the instance at the delegation call site.
The code generator flat-maps every parameter to its Plain contributions when assembling the wrapper's signature and switches on the concrete variant when assembling the delegation.
Inheritors
Types
A plain parameter: exactly one entry in the source function's parameter list, exactly one entry in the wrapper's parameter list.
A spread parameter: the source function declared one parameter of a class type marked with @Spread; the wrapper exposes one Plain per primary-constructor member of that class and reconstructs an instance via named-argument constructor invocation at the delegation.