def save_stack(data: str) -> str:
        """Save the call stack for later rendering or inspection in the recorded
        trace."""

        # Save a copy of the live stack here which makes it available for the
        # developer to check later. Note that it overwrites any previously saved
        # stack. This is here because we cannot serialize everything about a
        # stack to include in the return of this method but at the same time
        # want to be able to take a look at those things which we didn't
        # serialize.
        current_stack = list(f.frame for f in inspect.stack())
        DummyStackTool.last_stacks.append(
            # Has to be a weakref to prevent GC test failures.
            python_utils.WeakWrapper(current_stack)
        )

        ret = "<table>\n"
        for frame in current_stack:
            fmod = inspect.getmodule(frame)
            if fmod is None:
                continue
            else:
                fmod = fmod.__name__
            ffunc = frame.f_code.co_name
            if not fmod.startswith("examples.") or fmod.startswith(
                "trulens_eval"
            ):
                continue

            ret += f"""
            <tr>
                <td>{fmod}</td>
                <td>{ffunc}</td>
            </tr>
            """

            # Don't include bytecode as it has non-deterministic addresses which mess with
            # golden test comparison.
            # bytecode = dis.Bytecode(frame.f_code)
            # <td><pre><code>{bytecode.dis()}</code></pre></td>

        ret += "</table>\n"

        return ret
Save the call stack for later rendering or inspection in the recorded
        trace.
examples/dev/dummy_app/tool.py