private bool SearchNode(Node NodeToSearch, Node NodeToFind) { if (NodeToSearch == null | NodeToFind == null) { return false; } if (seenNodes.IndexOf(NodeToSearch) < 0) { seenNodes.Add(NodeToSearch); foreach (INodeConnection CurrentConnection in NodeToSearch.GetConnections()) { if (NodeToSearch == CurrentConnection.NodeRemote) { if (CurrentConnection.NodeLocal == NodeToFind) { return true; } } else { if (CurrentConnection.NodeRemote == NodeToFind) { return true; } } } foreach (INodeConnection CurrentConnection in NodeToSearch.GetConnections()) { if (NodeToSearch == CurrentConnection.NodeRemote) { if (SearchNode(CurrentConnection.NodeLocal, NodeToFind) == true) { return true; } } else { if (SearchNode(CurrentConnection.NodeRemote, NodeToFind) == true) { return true; } } } } return false; }