public State Clone() { return new State(this); }
public static State merge(State state1, State state2) { State ret = state1.Clone(); ret.Merge(state2); return ret; }