// e.g.: // sclass Bla extends Stages & Var { svoid tok_andVarMixIn(LS tok) { for (i : jfindAll_reversed_any(tok, "& Var<> {", "& Var<<>> {")) { int iOpening = indexOf(tok, i, "{"); S valueType = tok_scanTypeArgWithoutBrackets(tok, indexOf(tok, i, "<")); int iClosing = tok_endOfBracketPart(tok, iOpening)-1; // get Var include LS tokVar = javaTok(cacheGet(#1032845)); jreplace(tokVar, "A", valueType); // find code that is to be executed before get() returns a result int iGet = jfind_upTo(tok, iOpening, iClosing, "get :: before {"); if (iGet >= 0) { int iOpening2 = indexOf(tok, iGet, "{"); int iClosing2 = tok_endOfBracketPart(tok, iOpening2)-1; S code = joinSubList(tok, iOpening2+1, iClosing2); jreplace1(tokVar, "get() {", "get() {" + code); clearTokens_reTok(tok, iGet, iClosing2+1); } tokReplace_reTok(tok, iOpening+1, "\n" + join(tokVar) + "\n"); tokReplace_reTok(tok, i, i+3, "implements IVar"); } }