public ClassHierarchy(final EditorContext context,
			final Collection initial, final boolean closure) {
		this.context = context;
		this.closure = closure;

		classes = new HashSet();
		extendsGraph = new Graph();
		implementsGraph = new Graph();

		worklist = new LinkedList();
		inWorklist = new HashSet();

		this.resolvesToCache = new HashMap();

		// Need new ArrayList to avoid ConcurrentModificationException
		final Iterator iter = new ArrayList(initial).iterator();

		while (iter.hasNext()) {
			final String name = (String) iter.next();
			addClass(name);
		}
	}