if (!fTypesVisited.add(binding)) { return; }
	private void addTypeDeclarations(ITypeBinding binding, int flags) {		if (!fTypesVisited.add(binding)) {			return;		}						if (hasFlag(TYPES, flags)) {			if (!binding.isAnonymous()) {				fRequestor.add(binding);			}		}				addInherited(binding, flags); // add inherited 				if (binding.isLocal()) {			addOuterDeclarationsForLocalType(binding, flags);		} else {			ITypeBinding declaringClass= binding.getDeclaringClass();			if (declaringClass != null) {				addTypeDeclarations(declaringClass, flags); // recursivly add inherited 			} else if (hasFlag(TYPES, flags)) {				if (fRoot.findDeclaringNode(binding) != null) {					List types= fRoot.types();					for (int i= 0; i < types.size(); i++) {						TypeDeclaration decl= (TypeDeclaration) types.get(i);						ITypeBinding curr= decl.resolveBinding();						if (curr != null) {							fRequestor.add(curr);						}					}				}			}		}	}