\documentclass{article}



%%% Setting a higher cache version will cause a re-evaluation of the
% \DeclareCachedDocumentCommand macros present in the preamble
% Otherwise, the definitions can be altered or even removed without breaking
% the document, as long as the aux file is present.



%% \DeclareCachedDocumentCommand is now just a plain wrapper around \DeclareDocumentCommand
%% that implements this caching, so it is not useful on itself
%% 
%% If \DeclareCachedDocumentCommand is, however, some macro that does lengthy computations
%% and then issues one ore more of underlying \DeclareDocumentCommands
%% we can save this computation on the second run, since we do not evaluate
%% \DeclareCachedDocumentCommand further (we just copied its definition)
%% and load the plain definitions that the  invocation produced in the last run
%% and that we saved to the aux file for restoration.

\usepackage[cache version = 0]{mkessler-cache}

\DeclareCachedDocumentCommand\foo{m}{foo: Called with argument '#1'. hi}
\DeclareCachedDocumentCommand\baz{m}{baz: Called with argument '#1'.}

\DeclareCachedDocumentCommand\parser{!s !t+}
  {
    \IfBooleanT {#1} {*}
    \IfBooleanT {#2} {$\dagger$}
  }

\begin{document}

\foo {  one  }

\baz{ arg }

\parser*+

Some text.
  
\end{document}
