has = new universalHolder(buffer);
has = new GeneralHolder(buffer);
  public void read_value(org.omg.CORBA.portable.InputStream input,                         TypeCode a_type                        )                  throws MARSHAL  {    try      {        int kind = a_type.kind().value();        // Fixed needs special handling.        if (kind == TCKind._tk_fixed)          {            BigDecimal dec = BigDecimalHelper.read(input, a_type.fixed_scale());            has = new FixedHolder(dec);          }        else          {            has = holderFactory.createHolder(a_type);            if (has == null)              {                // Use the Universal Holder that reads till the end of stream.                // This works with the extract/insert pair of the typical                // Helper.                cdrBufOutput buffer = new cdrBufOutput();                buffer.setOrb(orb);                has = new universalHolder(buffer);              }          }        type(a_type);        if (!(has instanceof universalHolder) &&            (kind == TCKind._tk_value_box))          {            // The streamable only contains operations for            // reading the value, not the value header.            Field vField = has.getClass().getField("value");            Object content = Vio.read(input, a_type.id());            vField.set(has, content);          }        else          has._read(input);      }    catch (Exception ex)      {        MARSHAL m = new MARSHAL();        m.minor = Minor.Any;        m.initCause(ex);        throw m;      }  }