public virtual INode AddJumpPoint(string name, INode targetNode)
        {
            INode jumpPointNode;

            if (targetNode.NodeType == NodeType.File)
            {
                jumpPointNode = new JumpPointFile((IFile)targetNode, this.Address.ResolveAddress(name));
            }
            else if (targetNode.NodeType == NodeType.Directory)
            {
                jumpPointNode = new JumpPointDirectory((IDirectory)targetNode, this.Address.ResolveAddress(name));
            }
            else
            {
                throw new NotSupportedException(targetNode.NodeType.ToString());
            }

            if (jumpPoints.ContainsKey(name))
            {
                OnJumpPointRemoved(new JumpPointEventArgs(name, targetNode, jumpPointNode));

                jumpPoints.Remove(name);
            }

            jumpPoints.Add(name, jumpPointNode);

            OnJumpPointAdded(new JumpPointEventArgs(name, targetNode, jumpPointNode));

            return(jumpPointNode);
        }
		public virtual INode AddJumpPoint(string name, INode targetNode)
		{
			INode jumpPointNode;
			
			if (targetNode.NodeType == NodeType.File)
			{
				jumpPointNode = new JumpPointFile((IFile)targetNode, this.Address.ResolveAddress(name));
			}
			else if (targetNode.NodeType == NodeType.Directory)
			{
				jumpPointNode = new JumpPointDirectory((IDirectory)targetNode, this.Address.ResolveAddress(name));
			}
			else
			{
				throw new NotSupportedException(targetNode.NodeType.ToString());
			}

			if (jumpPoints.ContainsKey(name))
			{
				OnJumpPointRemoved(new JumpPointEventArgs(name, targetNode, jumpPointNode));

				jumpPoints.Remove(name);
			}

			jumpPoints.Add(name, jumpPointNode);

			OnJumpPointAdded(new JumpPointEventArgs(name, targetNode, jumpPointNode));
			
			return jumpPointNode;
		}