code: public Object decode(byte[] frame, int offset, int indirect, JMFMessageData msg) throws JMFMessageCorruptionException {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) JmfTr.entry(this, tc, "decode", new Object[]{frame, offset, indirect, msg});
      Object result = null;
      if (indirect < 0) {
        indirect = this.indirect;
      }
      if (indirect > 0) {
        result = new JSVaryingListImpl(frame, offset, element, indirect);
      }
      else if (varying) {
        result = new JSVaryingListImpl(frame, offset, element, 0);
      }
      else {
        result = new JSFixedListImpl(frame, offset, element);
      }
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) JmfTr.exit(this, tc, "decode",  result);
      return result;
    }
docs: Implement JSCoder.decode