Bug 66043 Java editor not released when window closed
build I20040607-0800 - new window - open a Java editor - close window - ASTProvider maintains a ref to the editor: GC Roots -> Object EditorPane #013d394d: Reverse Paths | +---org.eclipse.ui.internal.EditorPane (#013d394d) | +---pane of org.eclipse.ui.internal.EditorSite (#0154c573) | +---partSite of org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor (#0006b4ee) | +---fActiveEditor of org.eclipse.jdt.internal.ui.javaeditor.ASTProvider (#00eea6dc) | +---fASTProvider of org.eclipse.jdt.internal.ui.JavaPlugin (#019777af) | +---fgJavaPlugin of org.eclipse.jdt.internal.ui.JavaPlugin (#01c0a077)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/ASTProvider.java
private String toString(CompilationUnit ast) {
		if (ast == null)
			return "null"; 
		
		List types= ast.types();
		if (types != null && types.size() > 0)
			return ((AbstractTypeDeclaration)types.get(0)).getName().getIdentifier();
		else
			return "AST without any type"; 
	}
	/**
	 * Caches the given compilation unit AST for the given Java element.
	 * 
	 * @param ast
	 * @param javaElement
	 */
	private synchronized void cache(CompilationUnit ast, IJavaElement javaElement) {
		
		if (DEBUG && (javaElement != null || ast != null)) 
			System.out.println(DEBUG_PREFIX + "caching AST:" + toString(ast) + " for: " + toString(javaElement)); 
		if (fAST != null)
			disposeAST();
		fAST= ast;
		
		fActiveJavaElement= javaElement;
		
		
		synchronized (fWaitLock) {
			fWaitLock.notifyAll();
		}