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