@override Node substitute(Map<Variable, Node>? bindings) { if (bindings != null) { final value = bindings[this]; if (value != null) { return value.substitute(bindings); } } return this; }