def METHOD_NAME(self) -> str:
    # Fetch the fat pointer, the bounds and then go subscript the
    # underlying array ourselves.
    src_buffer = self.tdh.value['source_buffer']
    first = int(self.value['source_first'])
    last = int(self.value['source_last'])
    length = last - first + 1
    if length <= 0:
        return u''
    # It does not seem possible to get an architecture from a gdb.Value, so
    # take the architecture for the current selected frame and hope for the
    # best.
    uint32_t = gdb.selected_frame().architecture().integer_type(
        32, signed=False
    )
    text_addr = (src_buffer['P_ARRAY'].cast(uint32_t.pointer()) +
                 (first - int(src_buffer['P_BOUNDS']['LB0'])))
    char = gdb.lookup_type('character').pointer()
    return text_addr.cast(char).string('utf32', length=4 * length)