if (castType.isAnonymous() || castType.isNullType()) {
String voidName= PrimitiveType.VOID.toString();  if (castType.isAnonymous() || castType.isNullType() || voidName.equals(castType.getName())) {
	public static boolean canCast(ITypeBinding castType, ITypeBinding bindingToCast) {		if (castType.isAnonymous() || castType.isNullType()) {			throw new IllegalArgumentException();		}				if (castType == bindingToCast) {			return true;		}				if (bindingToCast.isArray()) {			if (!castType.isArray()) {				return isArrayCompatible(castType); // can not cast an arraytype to a non array type (except to Object, Serializable...)			}			int toCastDim= bindingToCast.getDimensions();			int castTypeDim= castType.getDimensions();			if (toCastDim == castTypeDim) {				bindingToCast= bindingToCast.getElementType();				castType= castType.getElementType();				if (castType.isPrimitive() && castType != bindingToCast) {					return false; // can't assign arrays of different primitive types to each other				}				// fall through			} else if (toCastDim < castTypeDim) {				return isArrayCompatible(bindingToCast.getElementType());			} else {				return isArrayCompatible(castType.getElementType());			}		}		if (castType.isPrimitive()) {			if (!bindingToCast.isPrimitive()) {				return false;			}			String bool= "boolean"; //$NON-NLS-1$			return (!bool.equals(castType.getName()) && !bool.equals(bindingToCast.getName()));		} else {			if (bindingToCast.isPrimitive()) {				return false;			}			if (castType.isArray()) {				return isArrayCompatible(bindingToCast);			}						if (castType.isInterface() || bindingToCast.isInterface() || isJavaLangObject(castType)) {				return true;			}						return Bindings.isSuperType(bindingToCast, castType) || Bindings.isSuperType(castType, bindingToCast);		}	}