code: def merge_attributes(other, attributes=nil, matches=nil, &filter)
        case other
        when SpecimenRequirement then
          # merge with the default requirement merge attributes if necessary
          attributes ||= MERGEABLE_RQMT_ATTRS
          super(other, attributes)
          # copy the requirement characteristics
          sc = other.specimen_characteristics
          self.specimen_characteristics ||= sc.copy(MERGEABLE_SPC_CHR_ATTRS) if sc
        when Jinx::Hasher then
          # the requirement template
          rqmt = other[:specimen_requirement] || other[:requirement]
          # merge the attribute => value hash
          super
          # merge the SpecimenRequirement after the hash
          merge_attributes(rqmt) if rqmt
        else super
        end
        self
      end
docs: # Restores this disposed Specimen by deleting the DisposalEventParameters and resetting the availability and activity status.
      # Returns the deleted DisposalEventParameters, or nil if none.
      def recover
        # TODO - test this
        dep = event_parameters.detect { |ep| CaTissue::DisposalEventParameters === ep }
        return if dep.nil?
        dep.delete
        self.available = true
        self.activity_status = 'Active'
        update
      end
   Override default +Jinx::Resource.merge_attributes+ to ignore a source SpecimenRequirement parent_specimen.