def METHOD_NAME(self, *, new_out_template: Optional[Tensor] = None) -> RandomJournalEntry:
    """read next"""
    assert self._cur_entry_idx < len(self._entries)
    entry = self._entries[self._cur_entry_idx]
    if new_out_template:
        assert new_out_template.dtype == entry.out.dtype, (
            f"random journal entry dtype mismatch,"
            f" expected {new_out_template}, got {entry.out} at index {self._cur_entry_idx}"
        )
        assert len(new_out_template.dims) == len(entry.out.dims), (
            f"random journal entry dims mismatch,"
            f" expected {new_out_template}, got {entry.out} at index {self._cur_entry_idx}"
        )
        for new_dim, old_dim in zip(new_out_template.dims, entry.out.dims):
            new_dim: Dim
            old_dim: Dim
            assert new_dim.dimension == old_dim.dimension, (
                f"random journal entry dim mismatch,"
                f" expected {new_out_template}, got {entry.out} at index {self._cur_entry_idx}"
            )
    self._cur_entry_idx += 1
    return entry