if (isWorkingCopyRemove((ICompilationUnit)element, delta.getKind()) || delta.getKind() == IJavaElementDelta.CHANGED && isPossibleStructuralChange(delta.getFlags())) {
ICompilationUnit cu= (ICompilationUnit) element; boolean isWorkingCopyRemove= isWorkingCopyRemove(cu, delta.getKind()); if (isWorkingCopyRemove || delta.getKind() == IJavaElementDelta.CHANGED && isPossibleStructuralChange(delta.getFlags())) {
	private void processDelta(IJavaElementDelta delta, ArrayList changedTypes) {		IJavaElement element= delta.getElement();		switch (element.getElementType()) {			case IJavaElement.TYPE:				processTypeDelta((IType) element, changedTypes);				processChildrenDelta(delta, changedTypes); // (inner types)				break;			case IJavaElement.JAVA_MODEL:			case IJavaElement.JAVA_PROJECT:			case IJavaElement.PACKAGE_FRAGMENT_ROOT:			case IJavaElement.PACKAGE_FRAGMENT:				processChildrenDelta(delta, changedTypes);				break;			case IJavaElement.COMPILATION_UNIT:				if (isWorkingCopyRemove((ICompilationUnit)element, delta.getKind()) || delta.getKind() == IJavaElementDelta.CHANGED && isPossibleStructuralChange(delta.getFlags())) {					try {						if (element.exists()) {							IType[] types= ((ICompilationUnit) element).getAllTypes();							for (int i= 0; i < types.length; i++) {								processTypeDelta(types[i], changedTypes);							}						}					} catch (JavaModelException e) {						JavaPlugin.log(e);					}				} else {					processChildrenDelta(delta, changedTypes);				}				break;			case IJavaElement.CLASS_FILE:					if (delta.getKind() == IJavaElementDelta.CHANGED) {					try {						IType type= ((IClassFile) element).getType();						processTypeDelta(type, changedTypes);					} catch (JavaModelException e) {						JavaPlugin.log(e);					}				} else {					processChildrenDelta(delta, changedTypes);				}				break;						}	}