code: function(json){
      
      // Protect against forgetting the new keyword when calling the constructor
      if(!(this instanceof RecordDescriptor)){
        return new RecordDescriptor(json);
      }
      
      // If the given object is already an instance then just return it. DON'T copy it.
      if(RecordDescriptor.isInstance(json)){
        return json;
      }
      
      this.init(json);
    }
docs: Metadata about the structure and layout of a record, as well as the expected
  data to be extracted from a record.
  
  @see {@link https://github.com/FamilySearch/gedcomx-record/blob/master/specifications/record-specification.md#record-descriptor|GEDCOM X Records Spec}
  
  @class RecordDescriptor
  @extends ExtensibleData
  @param {Object} [json]