+ -- ^ Given the node which needs to be
+ -- updated, and which node caused that node
+ -- to need to be updated, update the state.
+ --
+ -- The causing node will be 'Nothing' if
+ -- this is the initial/bootstrapping update.
+ --
+ -- Must return 'Nothing' if no change,
+ -- otherwise returrn 'Just' of the new state.
+
+ -> [node] -- ^ Nodes that should initially be updated
+
+ -> s -- ^ Initial state
+ -- (usually a map from node to
+ -- the value for that node)
+
+ -> s -- ^ Final state