return null;
return binding;
	public static ITypeBinding getTypeBinding(ASTNode node) {		ASTNode parent= node.getParent();		if (parent instanceof Assignment) {			Assignment assignment= (Assignment) parent;			if (node.equals(assignment.getLeftHandSide())) {				// field write access: xx= expression				return assignment.getRightHandSide().resolveTypeBinding();			}			// read access			return assignment.getLeftHandSide().resolveTypeBinding();		} else if (parent instanceof InfixExpression) {			InfixExpression infix= (InfixExpression) parent;			InfixExpression.Operator op= infix.getOperator();			if (node.equals(infix.getLeftOperand())) {				// xx == expression				if (op == InfixExpression.Operator.INSTANCEOF) {					ASTNode left= infix.getRightOperand();					if (left instanceof SimpleName) {						return ASTNodes.getTypeBinding(((SimpleName) left));					}				}				return infix.getRightOperand().resolveTypeBinding();			}			// expression == xx			if (op == InfixExpression.Operator.LEFT_SHIFT || op == InfixExpression.Operator.RIGHT_SHIFT_UNSIGNED							|| op == InfixExpression.Operator.RIGHT_SHIFT_SIGNED) {				return infix.getAST().resolveWellKnownType("int"); //$NON-NLS-1$			}			return infix.getLeftOperand().resolveTypeBinding();		} else if (parent instanceof VariableDeclarationFragment) {			VariableDeclarationFragment frag= (VariableDeclarationFragment) parent;			if (frag.getInitializer().equals(node)) {				// int val= xx;				VariableDeclarationStatement stmt= (VariableDeclarationStatement) frag.getParent();				return stmt.getType().resolveBinding();			}		} else if (parent instanceof MethodInvocation) {			MethodInvocation invocation= (MethodInvocation) parent;			SimpleName name= invocation.getName();			IMethodBinding binding= ASTNodes.getMethodBinding(name);			if (binding != null) {				return getParameterTypeBinding(node, invocation.arguments(), binding);			}						} else if (parent instanceof SuperConstructorInvocation) {			SuperConstructorInvocation invocation= (SuperConstructorInvocation) parent;			IMethodBinding binding= invocation.resolveConstructorBinding();			if (binding != null) {				return getParameterTypeBinding(node, invocation.arguments(), binding);			}		} else if (parent instanceof IfStatement || parent instanceof WhileStatement || parent instanceof DoStatement) {			if (node instanceof Expression) {				return parent.getAST().resolveWellKnownType("boolean"); //$NON-NLS-1$			}		} else if (parent instanceof SwitchStatement) {			if (((SwitchStatement) parent).getExpression().equals(node)) {				return parent.getAST().resolveWellKnownType("int"); //$NON-NLS-1$			}		} else if (parent instanceof ReturnStatement) {			MethodDeclaration decl= findParentMethodDeclaration(parent);			if (decl != null) {				return decl.getReturnType().resolveBinding();			}		}					return null;	}