[T, ...A | Record?(T) and (Tuple[...RecordFieldTypes(T)] == Tuple[...A])] inlined T(...args:A) returned:T { ...recordFields(returned) <-- ...args; }