} else if (targetType.equals(Character_TYPE) && (expressionType==STRING_TYPE||sourceIsNull)
&& (sourceIsNull || source instanceof ConstantExpression && source.getText().length()==1)) {
} else if (isNumberCategory(getWrapper(targetType)) && isNumberCategory(getWrapper(expressionType))) {
} else if (sourceIsNull && !isPrimitiveType(targetType)) {
} else if (sourceIsNull && isPrimitiveType(targetType)) {
<BUG>addStaticTypeError("Inconvertible types: cannot cast null to "+targetType.getName(), expression);
} else if (!isAssignableTo(targetType, expressionType) && !implementsInterfaceOrIsSubclassOf(expressionType,targetType)) {
addStaticTypeError("Inconvertible types: cannot cast "+expressionType.getName()+" to "+targetType.getName(), expression);
}
}
storeType(expression, expression.getType());</BUG>
}

} else if (targetType.equals(Character_TYPE) && (expressionType==STRING_TYPE||sourceIsNull)
&& (sourceIsNull || source instanceof ConstantExpression && source.getText().length()==1)) {
} else if (isNumberCategory(getWrapper(targetType)) && isNumberCategory(getWrapper(expressionType))) {
} else if (sourceIsNull && !isPrimitiveType(targetType)) {
} else if (sourceIsNull && isPrimitiveType(targetType)) {
return false;
} else if (!isAssignableTo(targetType, expressionType) && !implementsInterfaceOrIsSubclassOf(expressionType,targetType)) {
return false;
}
return true;
}
