/// <inheritdoc/>
        protected override void ProcessEntry(FreeBaseNode source, FreeBaseEdge edge, FreeBaseNode target)
        {
            if (_nodesToSelect.Contains(source) && _nodesToSelect.Contains(target))
            {
                //add new edge between the nodes
                selectTriplet(source, edge, target);
                return;
            }

            if (_nodesToSelect.Contains(source) && _edgesToSelect.Contains(edge))
            {
                //new node is connected with known edge
                selectTriplet(source, edge, target);
                _nodesToSelect.Add(target);
                return;
            }

            if (_edgesToSelect.Contains(edge) && _nodesToSelect.Contains(target))
            {
                //connection from new node with known edge
                selectTriplet(source, edge, target);
                _nodesToSelect.Add(source);
                return;
            }

            //triplet is not selected
        }
        private void selectTriplet(FreeBaseNode source, FreeBaseEdge edge, FreeBaseNode target)
        {
            var triplet = new FreeBaseTriplet(source, edge, target);

            _selectedTriplets.Add(triplet);
        }