code: def create_derived(opts)
        # Merge the non-domain attribute values from this specimen, unless there is a requirement.
        opts = value_hash(DERIVED_MERGEABLE_ATTRS).merge!(opts) unless opts.has_key?(:specimen_requirement)
        # Copy this specimen's characteristics, if not already given in the options.
        opts[:specimen_characteristics] ||= default_derived_characteristics
        # Make the new specimen.
        spc = Specimen.create_specimen(opts)
        # The derived specimen's parent is this specimen.
        spc.parent = self
        spc
      end
docs: Creates a derived specimen. The options is an attribute => value hash. The options
   can also include a +:specimen_requirement+. The non-domain attribute values of the
   new derived specimen are determined according to the following precedence rule:
   1. The attribute => value option.
   2. The requirement property value.
   3. This specimen's property value.
  
   @param [{Symbol => Object}] opts the derived specimen attribute => value hash
   @return [AbstractSpecimen] the derived specimen or requirement