'Returns a parsed instance of the called type.
The file position is right after the descriptor after this returns.
Raises DescriptorError'

@classmethod
def parse(cls, fileobj):

    try:
        length = cls._parse_desc_length_file(fileobj)
    except ValueError as e:
        raise DescriptorError(e)
    pos = fileobj.tell()
    instance = cls(fileobj, length)
    left = (length - (fileobj.tell() - pos))
    if (left < 0):
        raise DescriptorError('descriptor    parsing    read    too    much    data')
    fileobj.seek(left, 1)
    return instance
