@Override
	public boolean equals(Object that) {
		if (!(that instanceof Transition)) {
			return false;
		}
		Transition t = (Transition) that;

		if (!t.destinations.equals(destinations))
			return false;
		
		if (this.origin.equals(t.origin) && this.origin != t.origin) {
			Logger.log("WARN: synonymous but different origin states in transitions");
		}

		return this.key.equals(t.getKey()) && this.origin == t.origin;
	}