/// <summary>
        /// Adds a new edge to the graph.
        /// </summary>
        /// <param name="edge">The edge to add.</param>
        /// <returns>
        /// <see langword="true" /> if the edge was added successfully; otherwise, <see langword="false" />.
        /// </returns>
        public bool AddEdge(TEdge edge)
        {
            var result = Current.AddEdge(edge);

            if (result)
            {
                Changes.Add(new AddEdgeChange(edge));
                RaiseEdgeAdded(edge);
            }

            return(result);
        }