abstract srecord noeq Tok_FieldModifierKeyword(S keyword) { settable LS tok; int iEndOfLModifiers, iLModifiers, iRModifiers, iEndOfRModifiers, iType, iEndOfType; S type, var; LS modifiers; Cl recognizedModifiers = javaModifiers(); void run(LS tok) { this.tok = tok; int i = -1; while ((i = jfind(tok, i+1, keyword + " ")) >= 0) { iEndOfLModifiers = i; iLModifiers = leftScanModifiers(tok, iEndOfLModifiers, recognizedModifiers); iRModifiers = i+2; iEndOfRModifiers = tok_scanModifiers_idx(tok, iRModifiers); iType = iEndOfRModifiers; iEndOfType = tok_endOfType(tok, iEndOfRModifiers); type = joinSubList_cToC(tok, iType, iEndOfType); var = identifierOrQuestionMark(get(tok, iEndOfType); modifiers = identifiersOnly(joinLists( subList(tok, iLModifiers, iEndOfLModifiers), subList(tok, iRModifiers, iEndOfRModifiers))); S replacement = replacement(); printVars(+i, +iRModifiers, +iEndOfRModifiers, +iType, +iEndOfType, +type, +var, +replacement); tokReplace_reTok(tok, iLModifiers, iEndOfType-1, replacement); } } S boxedType() { ret tok_toNonPrimitiveTypes(type); } abstract S replacement(); }