protected virtual bool Remove(TSinkItem item, bool inSource) { if (item == null) { return(false); } var sourceItem = Get(item); RemoveEdgeInMapping(Sink.DepthFirstTwig(item)); var result = false; var sinkGraph = Sink as ISinkGraph <TSinkItem, TSinkEdge>; if (inSource || sinkGraph == null) { result = Sink.Remove(item); } else { result = sinkGraph.RemoveSinkItem(item); } if (sourceItem != null) { RemoveEdgeInMapping(Source.DepthFirstTwig(sourceItem)); if (inSource) { Source.Remove(sourceItem); } Mapper.Source2Sink.Remove(sourceItem); } Mapper.Sink2Source.Remove(item); return(result); }