transient srecord noeq G22NetworkInstance(G22Network network) { new Map valuesByIdentifier; new Map valuesByBlueprint; sclass Value { settable O object; // the actual value calculated by the node settable Timestamp calculatedWhen; // when the value was calculated O get() { ret object; } } void makeInstance(G22Utils g22utils, G22NetworkElement e) { if (e == null) ret; O instance = e.makeInstance(g22utils, this); print("Calculated: " + instance); if (instance != null) { new Value value; value.object(instance).calculatedWhen(tsNow()); valuesByBlueprint.put(e, value); mapPut(valuesByIdentifier, e.identifier(), value); } } void init(G22Utils g22utils) { // This is in wrong order anyway for (e : network.elements) makeInstance(g22utils, e); } O getObjectForBlueprint(G22NetworkElement element) { var value = valuesByIdentifier.get(element); ret value?!; } }