diff -r ecec15963b1b -r 74cc97efef51 langtools/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java --- a/langtools/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java Thu Sep 18 18:39:44 2008 -0700 +++ b/langtools/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java Tue Sep 23 10:44:51 2008 -0700 @@ -474,23 +474,22 @@ } abstract class Filter { - void run(ListBuffer> list, Iterable classes) { + void run(Queue> list, Iterable classes) { Set set = new HashSet(); for (TypeElement item: classes) set.add(item); - List> defer = List.>nil(); - while (list.nonEmpty()) { - Env env = list.next(); + ListBuffer> defer = ListBuffer.>lb(); + while (list.peek() != null) { + Env env = list.remove(); ClassSymbol csym = env.enclClass.sym; if (csym != null && set.contains(csym.outermostClass())) process(env); else - defer = defer.prepend(env); + defer = defer.append(env); } - for (List> l = defer; l.nonEmpty(); l = l.tail) - list.prepend(l.head); + list.addAll(defer); } abstract void process(Env env);