def set_public_domain(self, public_domain=None):
if public_domain is None:<EOL><INDENT>raise NullArgument()<EOL><DEDENT>metadata = Metadata(**settings.METADATA['<STR_LIT>'])<EOL>if metadata.is_read_only():<EOL><INDENT>raise NoAccess()<EOL><DEDENT>if self._is_valid_input(public_domain, metadata, array=False):<EOL><INDENT>self._my_map['<STR_LIT>'] = public_domain<EOL><DEDENT>else:<EOL><INDENT>raise InvalidArgument()<EOL><DEDENT>
Sets the public domain flag.

        :param public_domain: the public domain status
        :type public_domain: ``boolean``
        :raise: ``NoAccess`` -- ``Metadata.isReadOnly()`` is ``true``

        *compliance: mandatory -- This method must be implemented.*