public AutomataTable(AutomataTable table) : this() { this._idCounter = table._idCounter; var map = new Dictionary <Node, Node>(); foreach (var node in table.Nodes) { var copy = new Node(node); map[node] = copy; this._nodes.Add(copy); } this.StartState = map[table.StartState]; foreach (var transition in table.Transitions) { var source = map[transition.Source]; var destination = map[transition.Destination]; if (transition.Symbol == null) { this._transitions.Add(Transition.New(source, destination)); } else { this._transitions.Add(Transition.New(source, destination, transition.Symbol)); } } }