def name=(value)
      value = Name.parse(value) if String === value
      # a missing name is equivalent to an empty name for our purposes here
      value = Name.new(nil, nil) if value.nil?
      unless Name === value then
        raise ArgumentError.new("Name argument type invalid; expected <#{Name}>, found <#{value.class}>")
      end
      self.first_name = value.first
      self.last_name = value.last
      self.middle_name = value.middle if respond_to?(:middle_name)
    end
def name=(value)
      value = Name.parse(value) if String === value
      # a missing name is equivalent to an empty name for our purposes here
      value = Name.new(nil, nil) if value.nil?
      unless Name === value then
        raise ArgumentError.new("Name argument type invalid; expected <#{Name}>, found <#{value.class}>")
      end
      self.first_name = value.first
      self.last_name = value.last
      self.middle_name = value.middle if respond_to?(:middle_name)
    end
Sets this Person's name to the name string or Name object.
 A string name argument is parsed using Name.parse.

 @quirk caTissue CaTissue person names are inconsistent: Participant has a middle name, User doesn't.