Introducing mutators.
Mutators have the syntax
#state.[mutator arg1 ... argn]
and is basically a call to a mutator method stored in the type of #state.
Hence, #state is first used to find the type that the mutator method can be retrieved from, and then #state is also passed to the method.
To minimize conflicts with ordinary function calls, the state is passed in a special slot in Kernel::Arguments. This is obviously associated with some overhead present in every function call...
15 files changed: