private static void injectField( JavacNode typeNode, JCVariableDecl field, boolean addSuppressWarnings) { JCClassDecl type = (JCClassDecl) typeNode.get(); if (addSuppressWarnings) addSuppressWarningsAll(field.mods, typeNode, field.pos, getGeneratedBy(field)); List<JCTree> insertAfter = null; List<JCTree> insertBefore = type.defs; while (insertBefore.tail != null) { if (insertBefore.head instanceof JCVariableDecl) { JCVariableDecl f = (JCVariableDecl) insertBefore.head; if (isEnumConstant(f) || isGenerated(f)) { insertAfter = insertBefore; insertBefore = insertBefore.tail; continue; } } break; } List<JCTree> fieldEntry = List.<JCTree>of(field); fieldEntry.tail = insertBefore; if (insertAfter == null) { type.defs = fieldEntry; } else { insertAfter.tail = fieldEntry; } typeNode.add(field, Kind.FIELD); }