@abc.abstractmethod<EOL><INDENT>def get_agent(self, agent_id):<DEDENT>
return<EOL>
Gets the ``Agent`` specified by its ``Id``.

        In plenary mode, the exact ``Id`` is found or a ``NotFound``
        results. Otherwise, the returned ``Agent`` may have a different
        ``Id`` than requested, such as the case where a duplicate ``Id``
        was assigned to an ``Agent`` and retained for compatibility.

        :param agent_id: the ``Id`` of an ``Agent``
        :type agent_id: ``osid.id.Id``
        :return: the returned ``Agent``
        :rtype: ``osid.authentication.Agent``
        :raise: ``NotFound`` -- no ``Agent`` found with the given ``Id``
        :raise: ``NullArgument`` -- ``agent_id`` is ``null``
        :raise: ``OperationFailed`` -- unable to complete request
        :raise: ``PermissionDenied`` -- authorization failure

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