((noHeaderInput) input).subsequentCalls = false;
((HeadlessInput) input).subsequentCalls = false;
  static Object read_instance(InputStream input, final int position,    Object value, int value_tag, BoxedValueHelper helper, String id,    String[] ids, String codebase)  {    if (helper != m_StringValueHelper && id != null)      if (id.equals(StringValueHelper.id()))        {          value = null;          helper = m_StringValueHelper;        }    try      {        if ((value_tag & vf_CHUNKING) != 0)          {            cdrBufOutput output = createBuffer(input, 1024);            // Read the current (not a nested one) value in this spec case.            readNestedValue(value_tag, input, output, -1);            cdrBufInput ci = new cdrBufInput(output.buffer.getBuffer());            ci.setRunTime(output.getRunTime());            input = new noHeaderInput(ci, input);          }        else          {            if (input instanceof cdrBufInput)              {                // Highly probable case.                input = new noHeaderInput((cdrBufInput) input, null);              }            else if (input instanceof noHeaderInput)              {                // There is no need to instantiate one more noHeaderInput                // as we can just reset.                ((noHeaderInput) input).subsequentCalls = false;              }            else              {                cdrBufOutput bout = new cdrBufOutput();                int c;                while ((c = input.read()) >= 0)                  bout.write((byte) c);                input = new noHeaderInput(                  (cdrBufInput) bout.create_input_stream(), input);              }          }      }    catch (IOException ex)      {        MARSHAL m = new MARSHAL("Unable to read chunks");        m.minor = Minor.Value;        m.initCause(ex);        throw m;      }    return readValue(input, position, value, helper, id, ids, codebase);  }