internal AnalysisInvocationExpession(MethodDescriptor caller, 
                        AnalysisCallNode callNode, IList<PropGraphNodeDescriptor> arguments, VariableNode lhs)
		{
			Caller = caller;
			Arguments = arguments;
			LHS = lhs;
			IsStatic = true;
			CallNode = callNode;
            InstatiatedTypes = new HashSet<TypeDescriptor>();
		}
 public PropertyVariableNode(string name, TypeDescriptor declaredType,
     AnalysisCallNode propertyMethod)
     : base(name, declaredType)
 {
     this.ProperyMethod = propertyMethod;
 }
		internal DelegateCallInfo(MethodDescriptor caller, AnalysisCallNode callNode, 
                    DelegateVariableNode calleeDelegate, PropGraphNodeDescriptor receiver, 
                    IList<PropGraphNodeDescriptor> arguments, VariableNode lhs)
			: base(caller, callNode, arguments, lhs)
		{
			Caller = caller;
			CalleeDelegate = calleeDelegate;
			Receiver = receiver;
			Arguments = arguments;
			LHS = lhs;
		}
		internal CallInfo(MethodDescriptor caller, AnalysisCallNode callNode, 
                    MethodDescriptor callee, IList<PropGraphNodeDescriptor> arguments, 
                    VariableNode lhs, bool isConstructor)
			: base(caller, callNode, arguments, lhs)
		{
			Caller = caller;
			Callee = callee;
			Arguments = arguments;
			LHS = lhs;
			Receiver = default(VariableNode);
			IsStatic = true;
			IsConstructor = isConstructor;
		}
        private GraphNode<GraphNodeAnnotationData> AddVertex(AnalysisCallNode m, AnalysisInvocationExpession callNode)
        {
            Contract.Assert(callNode != null);
            var v = AddVertex(m);

            if (callNode != null)
            {
                v.Value.CallNode = callNode;
            }

            return v;
        }
 public void AddCall(AnalysisInvocationExpession call, AnalysisCallNode callNode)
 {
     var v = AddVertex(callNode, call);
     callNodes.Add(callNode);
     AddToWorkList(callNode);
 }
        private Vertex AddVertex(AnalysisCallNode m, AnalysisInvocationExpession callNode)
        {
            Contract.Assert(callNode != null);
            Vertex v = AddVertex(m);
            if (callNode != null)
            {
                var data = GetData(v);
                data.CallNode = callNode;
            }

            return v;
        }