public override bool Equals(object obj) { var tr = obj as TreeRule; if (tr == null) return false; if (!object.Equals(output,tr.output)) return false; if (!state.Equals(tr.state)) return false; return base.Equals(obj); }