code: public Object copyValue(Object val, int indirect)
        throws JMFSchemaViolationException {
      if (indirect == 0)
        return copy(val, 0);
      else
        return coder.copy(val, indirect - 1);
    }
docs: Create a copy of the value of this JSField's type
  
  @param val the value to be copied
  @param indirect the list indirection that applies to the object or -1 if the
  JSField's maximum list indirection (based on the number of JSRepeated nodes that
  dominate it in the schema) is to be used: this, of course, includes the possibility
  that it isn't a list at all.
  @return a copy of val.  This can be the original if the type for this field is immutable.