@utilities.arguments_not_none<EOL><INDENT>def move_asset_behind(self, asset_id, composition_id, reference_id):<DEDENT>
if (not isinstance(composition_id, ABCId) and<EOL>composition_id.get_identifier_namespace() != '<STR_LIT>'):<EOL><INDENT>raise errors.InvalidArgument('<STR_LIT>')<EOL><DEDENT>composition_map, collection = self._get_composition_collection(composition_id)<EOL>composition_map['<STR_LIT>'] = move_id_behind(asset_id, reference_id, composition_map['<STR_LIT>'])<EOL>collection.save(composition_map)<EOL>
Reorders assets in a composition by moving the specified asset behind of a reference asset.

        arg:    asset_id (osid.id.Id): ``Id`` of the ``Asset``
        arg:    composition_id (osid.id.Id): ``Id`` of the
                ``Composition``
        arg:    reference_id (osid.id.Id): ``Id`` of the reference
                ``Asset``
        raise:  NotFound - ``asset_id`` or ``reference_id``  ``not found
                in composition_id``
        raise:  NullArgument - ``asset_id, reference_id`` or
                ``composition_id`` is ``null``
        raise:  OperationFailed - unable to complete request
        raise:  PermissionDenied - authorization fauilure
        *compliance: mandatory -- This method must be implemented.*