Passes need to be simple. Not even functional - just a plain term rewriting.<p>Although, my approach allows to analyse sufficiently imperative passes too: I&#x27;ve got special cases for &quot;collectors&quot; (lists accumulating ordered data imperatively which theb can be read once), maps (same restriction - all the writes must be done before the first read) and all kinds of destructive assignment to the simple variables.