def METHOD_NAME(self, idx: int) -> ColumnFn:
    column = self._columns[idx]
    column_type = column.column_type
    # Internal function that will get called by all
    # Column getters.
    def get_i(col: Any, i: int) -> Any:
        return col.data[i]
    if column_type == vpb.TIME64NS:
        return lambda x, i: get_i(x.time64ns_data, i)
    if column_type == vpb.FLOAT64:
        return lambda x, i: get_i(x.float64_data, i)
    if column_type == vpb.INT64:
        return lambda x, i: get_i(x.int64_data, i)
    if column_type == vpb.STRING:
        return lambda x, i: get_i(x.string_data, i)
    if column_type == vpb.UINT128:
        # Encode the UINT128 as UUIDs to be readable.
        return lambda x, i: _encode_uint128_as_UUID(get_i(x.uint128_data, i))
    if column_type == vpb.BOOLEAN:
        return lambda x, i: get_i(x.boolean_data, i)
    raise ValueError("{} type not supported".format(column_type))
    return lambda x, i: ''