// // permissive record constructor // PermissiveRecordConstructor?(x) = false; [T, ...A | Record?(T) and PermissiveRecordConstructor?(T) and (countValues(...A) == countValues(...RecordFieldTypes(T)))] T(...args:A) returned:T { returned <-- T(); alias n = RecordFieldCount(T); static for (i in ...staticIntegers(static n)) { ref field = staticIndex(returned, i); ref value = nthValue(i, ...args); permissiveAssign(field, value); } }