'A list holding the cache of line position data.  The index is the
line number; the value is a four-tuple of (start pos in bytes,
start pos in chars, line length in bytes, line length in chars).'

@property
def __position_data(self):

    if (self.__position_data_cache is None):
        data = []
        byte_offset = 0
        char_offset = 0
        for line_str in self.content.splitlines(True):
            byte_length = len(line_str.encode('utf-8'))
            char_length = len(line_str)
            data.append((byte_offset, char_offset, byte_length, char_length))
            byte_offset += byte_length
            char_offset += char_length
        self.__position_data_cache = data
    return self.__position_data_cache
