if (ignoreDeclarations) { return null; }
    private static ITypeBinding getPossibleTypeBinding(ASTNode node, boolean ignoreDeclarations) {    	AST ast= node.getAST();    	ASTNode parent= node.getParent();    	while (parent instanceof Type) {    		parent= parent.getParent();    	}    	switch (parent.getNodeType()) {    	case ASTNode.METHOD_DECLARATION:			MethodDeclaration decl= (MethodDeclaration) parent;			if (decl.thrownExceptions().contains(node)) {				return ast.resolveWellKnownType("java.lang.Exception");			}			break;		case ASTNode.INSTANCEOF_EXPRESSION:			InstanceofExpression instanceofExpression= (InstanceofExpression) parent;			return instanceofExpression.getLeftOperand().resolveTypeBinding();    	case ASTNode.VARIABLE_DECLARATION_STATEMENT:    		if (ignoreDeclarations) {    			return null;    		}    		return guessVariableType(((VariableDeclarationStatement) parent).fragments());		case ASTNode.FIELD_DECLARATION:    		if (ignoreDeclarations) {    			return null;    		}					return guessVariableType(((FieldDeclaration) parent).fragments());		case ASTNode.VARIABLE_DECLARATION_EXPRESSION:    		if (ignoreDeclarations) {    			return null;    		}					return guessVariableType(((VariableDeclarationExpression) parent).fragments());		case ASTNode.SINGLE_VARIABLE_DECLARATION:    		if (ignoreDeclarations) {    			return null;    		}					SingleVariableDeclaration varDecl= (SingleVariableDeclaration) parent;			if (varDecl.getInitializer() != null) {				return varDecl.getInitializer().resolveTypeBinding();			}			break;		case ASTNode.ARRAY_CREATION:			ArrayCreation creation= (ArrayCreation) parent;			if (creation.getInitializer() != null) {				return creation.getInitializer().resolveTypeBinding();			}			return getPossibleReferenceBinding(parent);        case ASTNode.CATCH_CLAUSE:        case ASTNode.THROW_STATEMENT:            return ast.resolveWellKnownType("java.lang.Exception"); //$NON-NLS-1$        case ASTNode.TYPE_LITERAL:        case ASTNode.CLASS_INSTANCE_CREATION:        case ASTNode.CAST_EXPRESSION:        	return getPossibleReferenceBinding(parent);            					     	}   	    	return null;    }