@classmethod
def from_buffer(cls, buf, offset, size_tag, item_count, item_type):
    """
        buf, offset: the underlying buffer and the offset where the list starts

        item_length: the length of each list item, in BYTES. Note: this is NOT the
        value of the ListPtr.SIZE_* tag, although it's obviously based on it

        item_type: an instance of a subclass of ItemType
        """
    self = cls.__new__(cls)
    self._init_from_buffer(buf, offset, size_tag, item_count, item_type)
    return self
