<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_next(cls, task, releasetype, typ, descriptor=None):
 """Returns a TaskFileInfo that with the next available version and the provided info :param task: the task of the taskfile :type task: :class:`jukeboxcore.djadapter.models.Task` :param releasetype: the releasetype :type releasetype: str - :data:`jukeboxcore.djadapter.RELEASETYPES` :param typ: the file type, see :data:`TaskFileInfo.TYPES` :type typ: str :param descriptor: the descriptor, if the taskfile has one. :type descriptor: str|None :returns: taskfileinfoobject with next available version and the provided info :rtype: :class:`TaskFileInfo` :raises: None """

        qs = dj.taskfiles.filter(task=task, releasetype=releasetype, descriptor=descriptor, typ=typ)
        if qs.exists():
            ver = qs.aggregate(Max('version'))['version__max']+1
        else:
            ver = 1
        return TaskFileInfo(task=task, version=ver, releasetype=releasetype, typ=typ, descriptor=descriptor)