case ASTNode.POSTFIX_EXPRESSION: PostfixExpression postfix= (PostfixExpression) parent; return postfix.getOperand().resolveTypeBinding();
		private ITypeBinding getBoundType(ASTNode child, ASTNode parent) {			if (parent == null)				return null;						switch (parent.getNodeType()) {				// TODO also add other method like nodes				case ASTNode.METHOD_INVOCATION:					// return declared argument type					MethodInvocation invocation= (MethodInvocation) parent;					StructuralPropertyDescriptor location= child.getLocationInParent();					if (MethodInvocation.ARGUMENTS_PROPERTY == location) {						IMethodBinding methodBinding= invocation.resolveMethodBinding();						List arguments= invocation.arguments();						int index= arguments.indexOf(child);						if (index != -1) {							ITypeBinding[] parameterTypes= methodBinding.getParameterTypes();							if (parameterTypes.length > index)								return parameterTypes[index];						}					}					break;				case ASTNode.ASSIGNMENT:					// return lhs type					Assignment assignment= (Assignment) parent;					if (child == assignment.getRightHandSide()) {						Expression lhs= assignment.getLeftHandSide();						return lhs.resolveTypeBinding();					}					break;				case ASTNode.VARIABLE_DECLARATION_FRAGMENT:					// return variable type					IVariableBinding variable= ((VariableDeclaration) parent).resolveBinding();					if (variable != null)						return variable.getType();					break;									case ASTNode.ARRAY_ACCESS:					// return index type: always int					if (child.getLocationInParent() == ArrayAccess.INDEX_PROPERTY)						return parent.getAST().resolveWellKnownType("int"); //$NON-NLS-1$					break;				case ASTNode.ARRAY_CREATION:					// return index type					if (child.getLocationInParent() == ArrayCreation.DIMENSIONS_PROPERTY)						return parent.getAST().resolveWellKnownType("int"); //$NON-NLS-1$					break;				case ASTNode.INFIX_EXPRESSION:					// return the primitive type when comparing autoboxed types					InfixExpression infix= (InfixExpression) parent;					Expression leftOperand= infix.getLeftOperand();					Expression rightOperand= infix.getRightOperand();					ITypeBinding thisBinding= null;					if (child == rightOperand)						thisBinding= rightOperand.resolveTypeBinding();					else if (child == leftOperand)						thisBinding= leftOperand.resolveTypeBinding();					ITypeBinding parentBinding= infix.resolveTypeBinding();					if (thisBinding != null && parentBinding != null) {						if (!parentBinding.isAssignmentCompatible(thisBinding)) {							// probably a comparison then							if (child == rightOperand && !thisBinding.isPrimitive())								return leftOperand.resolveTypeBinding();							else if (child == leftOperand && !thisBinding.isPrimitive())								return rightOperand.resolveTypeBinding();						}					}					break;								}						if (isPropagatingNode(child, parent))				return ((Expression) parent).resolveTypeBinding();						return null;		}