// Note: Identity based on globalID, so eq(new SymVar("a"), new SymVar("b")) is FALSE. sclass SymVar > HasGlobalID { S name; *() {} *(S *name) {} public bool equals(O o) { ret eqHasGlobalID(this, o); } public int hashCode() { ret _hashCode(globalID); } toString { ret "SymVar" + (nempty(name) ? " " + name : ""); } }