def METHOD_NAME(self):
    """Returns the pyarrow implementation of the __dataframe__ protocol.
    If the backing ibis Table hasn't been executed yet, this will result
    in executing and caching the result."""
    if self._pyarrow_table is None:
        self._pyarrow_table = self._table.to_pyarrow()
    return self._pyarrow_table.__dataframe__(
        nan_as_null=self._nan_as_null,
        allow_copy=self._allow_copy,
    )