} else {
} else if( c.equals( SetType.getInstance() )) { if (value != null) { throw new LemRuntimeException( "VariableFactory unable to create SetVariable with non-null value" ); } v = new SetVariable( null ); } else {
    static Variable newVariable( DataType type, java.lang.Object value ) throws LemRuntimeException {        Variable v = null;        DataType c = type;                if( type instanceof DomainSpecificDataType ) {            c = ((DomainSpecificDataType)type).getCoreDataType();        }                if( c.equals( StringType.getInstance() )) {            v = new StringVariable( (String)value );        } else if( c.equals( ArbitraryIdType.getInstance() )) {            return new ArbitraryIdVariable();        } else if( c.equals( NumericType.getInstance() )) {            return new NumericVariable( type, (String)value );        } else if( c.equals( BooleanType.getInstance() )) {            v = new BooleanVariable( (String)value );        } else if( c.equals( ObjectReferenceType.getInstance() )) {            v = new ObjectReferenceVariable( (runtime.Object)value );        } else {            throw new LemRuntimeException( "VariableFactory for type '" + type.getName() + "' unimplemented" );        }                v.setType( type );        return v;    }