svoid tok_settableFields(LS tok) { int i = -1; while ((i = jfind(tok, i+1, "settable ")) >= 0) { int iEndOfLModifiers = i; int iLModifiers = tok_leftScanModifiers(tok, iEndOfLModifiers); int iRModifiers = i+2; int iEndOfRModifiers = tok_scanModifiers_idx(tok, iRModifiers); int iType = iEndOfRModifiers; int iEndOfType = tok_endOfType(tok, iEndOfRModifiers); S type = joinSubList_cToC(tok, iType, iEndOfType); S var = identifierOrQuestionMark(get(tok, iEndOfType); LS modifiers = identifiersOnly(joinLists( subList(tok, iLModifiers, iEndOfLModifiers), subList(tok, iRModifiers, iEndOfRModifiers))); LS functionModifiers = listMinus(modifiers, "volatile", "transient"); printVars(+i, +iRModifiers, +iEndOfRModifiers, +iType, +iEndOfType, +type, +var); tokReplace_reTok(tok, iLModifiers, i+2, tok_formatDollarVars( joinWithSpace(functionModifiers) + "public selfType $var aka $setVar($type $var) { this.$var = $var; this; } gettable ", +type, +var, setVar := "set" + firstToUpper(var))); } tok_gettableFields(tok); }