public void RegisterRemoveAssignment(PropGraphNodeDescriptor lhs, PropGraphNodeDescriptor rhs)
 {
     if (lhs != null && rhs != null)
     {
         var typesToDelete = PropagationGraph.TypesInEdge(rhs, lhs);
         PropagationGraph.RemoveTypes(lhs, typesToDelete);
         PropagationGraph.AddToDeletionWorkList(lhs);
     }
 }
        public void RegisterRemoveTypes(PropGraphNodeDescriptor lhs, IEnumerable <TypeDescriptor> types)
        {
            if (lhs != null)
            {
                this.RemovedTypes.UnionWith(types);

                PropagationGraph.RemoveTypes(lhs, types);
                PropagationGraph.AddToDeletionWorkList(lhs);
            }
        }
        public void RegisterRemoveNewExpressionAssignment(PropGraphNodeDescriptor lhs)
        {
            if (lhs != null)
            {
                var types = PropagationGraph.GetTypes(lhs);

                this.RemovedTypes.UnionWith(types);

                PropagationGraph.RemoveTypes(lhs, types);
                PropagationGraph.AddToDeletionWorkList(lhs);
            }
        }
        public void RegisterRemoveType(PropGraphNodeDescriptor lhs, TypeDescriptor type)
        {
            if (lhs != null)
            {
                var types = new HashSet <TypeDescriptor>();
                types.Add(type);

                this.RemovedTypes.Add(type);

                PropagationGraph.RemoveTypes(lhs, types);
                PropagationGraph.AddToDeletionWorkList(lhs);
            }
        }