destination = source.getAttribute( r.getVariableName() );
String attribute_name = r.getVariableName(); destination = source.getAttribute( attribute_name );
    protected Variable getVariable( VariableReference r, Context c ) throws LemRuntimeException {        String name = r.getObjectName();        Variable destination;                if ( name != null ) {            // Look up the object reference in the current context            Variable v = c.getVariable( name );            if ( v == null ) {                throw new LemRuntimeException( "Variable '" + name + "' is not defined" );            }                        if ( !( v.getType().equals( ObjectReferenceType.getInstance() ) ) ) {                throw new LemRuntimeException( "Variable '" + name + "' is not an object reference" );            }                        // OK, we've got a valid object reference            // TODO: What if the referenced object has been deleted or reclassified?            // Why is life so complex?            runtime.Object source = ( runtime.Object ) ( v.getValue() );                        // Now we've got the target object. We need to get the named attribute from that object.            destination = source.getAttribute( r.getVariableName() );            if ( destination == null ) {                throw new LemRuntimeException( "Attribute '" + r.getVariableName() + "' not defined on object named '" + name + "'" );            }        } else {            if ( r.getVariableName().equals( "self" ) ) {                /* special case for self */                if ( currentObject == null ) {                    throw new LemRuntimeException( "Cannot reference self - not executing within an object" );                }                                try {                    destination = VariableFactory.newVariable( CoreDataType.findByName( "objref" ), currentObject );                } catch ( LemException e ) {                    throw new LemRuntimeException( "todo" );                }            } else {                destination = c.getVariable( r.getVariableName() );            }        }                return destination;    }