<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_requisite_objectives(self, objective_id):
 """Gets a list of ``Objectives`` that are the immediate requisites for the given ``Objective``. In plenary mode, the returned list contains all of the immediate requisites, or an error results if an ``Objective`` is not found or inaccessible. Otherwise, inaccessible ``Objectives`` may be omitted from the list and may present the elements in any order including returning a unique set. arg: objective_id (osid.id.Id):
 ``Id`` of the ``Objective`` return: (osid.learning.ObjectiveList) - the returned requisite ``Objectives`` raise: NotFound - ``objective_id`` not found raise: NullArgument - ``objective_id`` is ``null`` raise: OperationFailed - unable to complete request raise: PermissionDenied - authorization failure *compliance: mandatory -- This method is must be implemented.* """

        # Implemented from template for
        # osid.learning.ObjectiveRequisiteSession.get_requisite_objectives_template
        # NOTE: This implementation currently ignores plenary view
        requisite_type = Type(**Relationship().get_type_data('OBJECTIVE.REQUISITE'))
        relm = self._get_provider_manager('RELATIONSHIP')
        rls = relm.get_relationship_lookup_session(proxy=self._proxy)
        rls.use_federated_family_view()
        requisite_relationships = rls.get_relationships_by_genus_type_for_source(objective_id,
                                                                                 requisite_type)
        destination_ids = [ObjectId(r.get_destination_id().identifier)
                           for r in requisite_relationships]
        collection = JSONClientValidated('learning',
                                         collection='Objective',
                                         runtime=self._runtime)
        result = collection.find({'_id': {'$in': destination_ids}})
        return objects.ObjectiveList(result, runtime=self._runtime)