if (visibleTypes[i] == typeBinding) {
ITypeBinding curr= ((ITypeBinding) visibleTypes[i]).getTypeDeclaration(); if (curr == typeBinding) {
		private boolean needsImport(ITypeBinding typeBinding, SimpleName ref) {			if (!typeBinding.isTopLevel() && !typeBinding.isMember()) {				return false; // no imports for anonymous, local, primitive types or parameters types			}			int modifiers= typeBinding.getModifiers();			if (Modifier.isPrivate(modifiers)) {				return false; // imports for privates are not required			}			ITypeBinding currTypeBinding= Bindings.getBindingOfParentType(ref);			if (currTypeBinding == null) {				return false; // not in a type			}			if (!Modifier.isPublic(modifiers)) {				if (!currTypeBinding.getPackage().getName().equals(typeBinding.getPackage().getName())) {					return false; // not visible				}			}						ASTNode parent= ref.getParent();			if (parent instanceof Type) {				parent= parent.getParent();			}			if (parent instanceof AbstractTypeDeclaration && parent.getParent() instanceof CompilationUnit) {				return true;			}						if (typeBinding.isMember()) {				IBinding[] visibleTypes= fAnalyzer.getDeclarationsInScope(ref, ScopeAnalyzer.TYPES);				for (int i= 0; i < visibleTypes.length; i++) {					if (visibleTypes[i] == typeBinding) {						return false;					}				}			}			return true;						}