Symmetric version management

        :param tp:
        :param params:
        :param version:
        :return:

async def version(self, tp, params, version=None, elem=None):
        """
        Symmetric version management

        :param tp:
        :param params:
        :param version:
        :return:
        """
        if self.writing:
            return await self.set_version(tp, params, version, elem)
        else:
            return await self.get_version(tp, params)