throw new LemRuntimeException( "Attribute '" + name + "' not defined on object named '" + name + "'");
throw new LemRuntimeException( "Attribute '" + r.getVariableName() + "' not defined on object named '" + 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.getLocalVariable( 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 '" + name + "' not defined on object named '" + name + "'");            }        } else {            destination = c.getLocalVariable( r.getVariableName () );        }        return destination;    }