Event represents all the things that happened simultaneously in a
given execution cycle. Event may contain only one update for each
variable and netidx subscription in a given cycle, if more updates
happen simultaneously they must be queued and deferred to later
cycles.
Apply is a kind of node that represents a function application. It
does not hold ownership of it’s arguments, instead those are held
by a CallSite node. This allows us to change the function called
at runtime without recompiling the arguments.
Update represents a regular graph node, as opposed to a function
application represented by Apply. Regular graph nodes are used for
every built in node except for builtin functions.