if (variableBinding.isEnumConstant()) { return; }
	public static void addChangeSenderTypeProposals(IInvocationContext context, Expression nodeToCast, ITypeBinding castTypeBinding, boolean isAssignedNode, int relevance, Collection proposals) throws JavaModelException {		IBinding callerBinding= null;		switch (nodeToCast.getNodeType()) {			case ASTNode.METHOD_INVOCATION:				callerBinding= ((MethodInvocation) nodeToCast).resolveMethodBinding();				break;			case ASTNode.SUPER_METHOD_INVOCATION:				callerBinding= ((SuperMethodInvocation) nodeToCast).resolveMethodBinding();				break;			case ASTNode.FIELD_ACCESS:				callerBinding= ((FieldAccess) nodeToCast).resolveFieldBinding();				break;			case ASTNode.SUPER_FIELD_ACCESS:				callerBinding= ((SuperFieldAccess) nodeToCast).resolveFieldBinding();				break;			case ASTNode.SIMPLE_NAME:			case ASTNode.QUALIFIED_NAME:				callerBinding= ((Name) nodeToCast).resolveBinding();				break;		}		ICompilationUnit cu= context.getCompilationUnit();		CompilationUnit astRoot= context.getASTRoot();		ICompilationUnit targetCu= null;		ITypeBinding declaringType= null;		IBinding callerBindingDecl= callerBinding;		if (callerBinding instanceof IVariableBinding) {			IVariableBinding variableBinding= (IVariableBinding) callerBinding;			if (!variableBinding.isField()) {				targetCu= cu;			} else {				callerBindingDecl= Bindings.getVariableDeclaration(variableBinding);				declaringType= variableBinding.getDeclaringClass().getTypeDeclaration();			}		} else if (callerBinding instanceof IMethodBinding) {			IMethodBinding methodBinding= (IMethodBinding) callerBinding;			if (!methodBinding.isConstructor()) {				declaringType= methodBinding.getDeclaringClass().getTypeDeclaration();				callerBindingDecl= methodBinding.getMethodDeclaration();			}		} else if (callerBinding instanceof ITypeBinding && nodeToCast.getLocationInParent() == SingleMemberAnnotation.TYPE_NAME_PROPERTY) {			declaringType= (ITypeBinding) callerBinding;			callerBindingDecl= Bindings.findMethodInType(declaringType, "value", (String[]) null); //$NON-NLS-1$			if (callerBindingDecl == null) {				return;			}		}		if (declaringType != null && declaringType.isFromSource()) {			targetCu= ASTResolving.findCompilationUnitForBinding(cu, astRoot, declaringType);		}		if (targetCu != null && ASTResolving.isUseableTypeInContext(castTypeBinding, callerBindingDecl, false)) {			proposals.add(new TypeChangeCompletionProposal(targetCu, callerBindingDecl, astRoot, castTypeBinding, isAssignedNode, relevance));		}		// add interface to resulting type		if (!isAssignedNode) {			ITypeBinding nodeType= nodeToCast.resolveTypeBinding();			if (castTypeBinding.isInterface() && nodeType != null && nodeType.isClass() && !nodeType.isAnonymous() && nodeType.isFromSource()) {				ITypeBinding typeDecl= nodeType.getTypeDeclaration();				ICompilationUnit nodeCu= ASTResolving.findCompilationUnitForBinding(cu, astRoot, typeDecl);				if (nodeCu != null && ASTResolving.isUseableTypeInContext(castTypeBinding, typeDecl, true)) {					proposals.add(new ImplementInterfaceProposal(nodeCu, typeDecl, astRoot, castTypeBinding, relevance - 1));				}			}		}	}