def add(self, recipients):
if recipients:<EOL><INDENT>if isinstance(recipients, str):<EOL><INDENT>self._recipients.append(<EOL>Recipient(address=recipients, parent=self._parent,<EOL>field=self._field))<EOL><DEDENT>elif isinstance(recipients, Recipient):<EOL><INDENT>self._recipients.append(recipients)<EOL><DEDENT>elif isinstance(recipients, tuple):<EOL><INDENT>name, address = recipients<EOL>if address:<EOL><INDENT>self._recipients.append(<EOL>Recipient(address=address, name=name,<EOL>parent=self._parent, field=self._field))<EOL><DEDENT><DEDENT>elif isinstance(recipients, list):<EOL><INDENT>for recipient in recipients:<EOL><INDENT>self.add(recipient)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>raise ValueError('<STR_LIT>'<EOL>'<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT>self._track_changes()<EOL><DEDENT>
Add the supplied recipients to the exiting list

        :param recipients: list of either address strings or
         tuples (name, address) or dictionary elements
        :type recipients: list[str] or list[tuple] or list[dict]