public override void switchNetwork(Network from, Network to, bool silently)
        {
            bool change_label = false;
            String name = LabelString.Substring(0, LabelString.IndexOf('_')-1);
            int instance = Int32.Parse(LabelString.Substring(LabelString.IndexOf('_')));

            if (name != null && name == NameString && instance != InstanceNumber)
            {
                change_label = true;
            }

            String new_name = "";

            List<Node> rnl = to.makeClassifiedNodeList(typeof(ProbeNode), false);
            if (rnl != null && !change_label)
            {
                foreach (Node n in rnl)
                {
                    if (!change_label)
                    {
                        if (n.LabelString == LabelString)
                        {
                            change_label = true;
                            break;
                        }
                    }
                }
            }

            if (change_label)
            {
                String new_label = NameString + "_" + InstanceNumber;
                if (!silently)
                {
                    InfoDialog id = new InfoDialog();
                    id.post("{0} {1} has been relabled {2}", NameString, LabelString, new_label);
                }
                setLabelString(new_label);
            }
            base.switchNetwork(from, to, silently);
        }
        public override void switchNetwork(Network from, Network to, bool silently)
        {
            String conflict = to.nameConflictExists(this, LabelString);
            String new_name = "";
            bool name_change_required = false;
            if (conflict != null)
            {
                new_name = String.Format("wireless_{0}", InstanceNumber);
                name_change_required = true;
            }

            List<Node> rnl = to.makeClassifiedNodeList(typeof(TransmitterNode), false);
            String cp = (name_change_required ? new_name : LabelString);
            if (rnl != null)
            {
                foreach (Node n in rnl)
                {
                    ReceiverNode rn = (ReceiverNode)n;
                    if (!rn.IsTransmitterConnected &&
                        rn.LabelString == cp)
                    {
                        if (to.checkForCycle(this, rn))
                        {
                            new_name = String.Format("cyclic_connection_{0}", InstanceNumber);
                            name_change_required = true;
                            break;
                        }
                    }
                }
            }

            if (name_change_required)
            {
                if (!silently)
                {
                    InfoDialog id = new InfoDialog();
                    id.post("Transmitter {0} has been relabled {1}", LabelString, new_name);
                }
                setLabelString(new_name);
            }
            rnl = to.makeClassifiedNodeList(typeof(ReceiverNode), false);
            if (rnl != null)
            {
                foreach (Node n in rnl)
                {
                    ReceiverNode rn = (ReceiverNode)n;
                    if (!rn.IsTransmitterConnected &&
                        rn.LabelString == LabelString)
                    {
                        new Ark(this, 0, rn, 0);
                    }
                }
            }
            base.switchNetwork(from, to, silently);
        }