if( value.getType() != destination.getType() ) {
if( value.getCoreDataType() != destination.getCoreDataType() ) {
    public Variable executeAssignmentAction( AssignmentAction a, Context c ) throws LemRuntimeException {        VariableReference r = a.getVariableReference();        String name = r.getObjectName();        runtime.Object o = null;                Variable destination = getVariable( r, c );                // At this point, we evaluate the expression no matter what        Variable value = evaluateExpression( a.getExpression(), c );        System.err.println( "Debug: " + value.getValue() );                // If the destination is not defined, then there is no object reference and we should         // create a new Variable and place it in the current context        // TODO: Variable references are declared anyway. We probably don't need this behaviour.        if( destination == null ) {            destination = VariableFactory.newVariable( value.getType() );            c.addLocalVariable( r.getVariableName(), value );            destination.setValue( value.getValue() );            return destination;        }                // Otherwise, we do a type check. If there's a mismatch, throw an error        if( value.getType() != destination.getType() ) {            throw new LemRuntimeException( "Type mismatch: evaluated '" + value.getType().getName() + "'"                     + ", expected '" + destination.getType() );        }                destination.setValue( value.getValue() );        return destination;    }