public void RegisterConstructorCall(MethodDescriptor callee, IList <PropGraphNodeDescriptor> arguments,
                                            VariableNode lhs, AnalysisCallNode callNode)
        {
            Contract.Requires(callee != null);
            Contract.Requires(callNode != null);
            Contract.Requires(arguments != null);
            //var argumentValues = arguments.Select(a => a!=null?worker.GetTypes(a):new HashSet<Type>());

            var callExp = new MethodCallInfo(this.Method, callNode, callee, lhs, arguments, lhs, true);

            PropagationGraph.AddCall(callExp, callNode);
            PropagationGraph.AddToWorkList(callNode);

            foreach (var argument in arguments)
            {
                if (argument != null)
                {
                    PropagationGraph.AddEdge(argument, callNode);
                }
            }
        }