AbstractExternalDependency () { AbstractExternalDependency dependency = (AbstractExternalDependency)myToProcess.removeFirst(); if (mySeenDependencies.add(dependency)) { myToProcess.addAll(dependency.myDependencies); myProcessedStructure.add(dependency.myDependencies.size()); return dependency; } else { return next(); } }