_call

        :param op:
        :param args:
        :return:

def _call(self, op, args):
        """_call

        :param op:
        :param args:
        :return:
        """
        if op in self._op_raw:
            # the raw ops don't get the model, cause, for example, Z3 stuff can't take it
            obj = self._op_raw[op](*args)
        elif not op.startswith("__"):
            l.debug("backend has no operation %s", op)
            raise BackendUnsupportedError
        else:
            obj = NotImplemented

            # first, try the operation with the first guy
            try:
                obj = getattr(operator, op)(*args)
            except (TypeError, ValueError):
                pass

        if obj is NotImplemented:
            l.debug("received NotImplemented in %s.call() for operation %s", self, op)
            raise BackendUnsupportedError

        return obj