'Raises ASFHeaderError'

@classmethod
def parse_full(cls, asf, fileobj):

    header = cls()
    (remaining_header, num_objects) = cls.parse_size(fileobj)
    remaining_header -= 30
    for i in xrange(num_objects):
        obj_header_size = 24
        if (remaining_header < obj_header_size):
            raise ASFHeaderError('invalid    header    size')
        data = fileobj.read(obj_header_size)
        if (len(data) != obj_header_size):
            raise ASFHeaderError('truncated')
        remaining_header -= obj_header_size
        (guid, size) = struct.unpack('<16sQ', data)
        obj = BaseObject._get_object(guid)
        payload_size = (size - obj_header_size)
        if (remaining_header < payload_size):
            raise ASFHeaderError('invalid    object    size')
        remaining_header -= payload_size
        try:
            data = fileobj.read(payload_size)
        except OverflowError:
            raise ASFHeaderError('invalid    header    size')
        if (len(data) != payload_size):
            raise ASFHeaderError('truncated')
        obj.parse(asf, data)
        header.objects.append(obj)
    return header
