((noHeaderInput) input).subsequentCalls = true;
((HeadlessInput) input).subsequentCalls = true;
  public Serializable read_value(InputStream input)  {    if (input instanceof noHeaderInput)      {        ((noHeaderInput) input).subsequentCalls = true;      }    component = arrayClass.getComponentType();    if (component.equals(byte.class))      return OctetSeqHelper.read(input);    else if (component.equals(String.class))      {        // String array is optimized because this may be frequent.        String[] s = new String[input.read_long()];        for (int i = 0; i < s.length; i++)          s[i] = (String) Vio.read(input, Vio.m_StringValueHelper);        return s;      }    else if (component.equals(int.class))      return LongSeqHelper.read(input);    else if (component.equals(long.class))      return LongLongSeqHelper.read(input);    else if (component.equals(double.class))      return DoubleSeqHelper.read(input);    else if (component.equals(float.class))      return FloatSeqHelper.read(input);    else if (component.equals(boolean.class))      return BooleanSeqHelper.read(input);    else if (component.equals(short.class))      return ShortSeqHelper.read(input);    else if (component.equals(char.class))      return CharSeqHelper.read(input);    else      {        // Read others, use reflection.        int n = input.read_long();        gnuValueStream s = null;        Serializable array = (Serializable) Array.newInstance(component, n);        if (written_as_object())          for (int i = 0; i < n; i++)            {              gnuRuntime g;              int position;              if (input instanceof gnuValueStream)                {                  s = (gnuValueStream) input;                  g = s.getRunTime();                  position = s.getPosition();                }              else                {                  g = null;                  position = -1;                }              if (input instanceof noHeaderInput)                ((noHeaderInput) input).subsequentCalls = true;              Object o = handler.readValue(input, position, component, null, g);              Array.set(array, i, o);            }        else          for (int i = 0; i < n; i++)            Array.set(array, i, Vio.read(input, component));        return array;      }  }