/// <summary>
        /// We use this mapping as a cache of already computed callees info
        /// </summary>
        //public MethodEntityProcessor EntityProcessor { get; private set; }
        //public ISet<E> NodesProcessing = new HashSet<E>();
        //public ISet<CallConext<M,E>> NodesProcessing = new HashSet<CallConext<M,E>>();
        /// <summary>
        /// A method entity is built using the methods interface (params, return) and the propagation graph that is 
        /// initially populated with the variables, parameters and calls of the method 
        /// </summary>
        /// <param name="methodDescriptor"></param>
        /// <param name="mid"></param>
        /// <param name="propGraph"></param>
        /// <param name="instantiatedTypes"></param>
        public MethodEntity(MethodDescriptor methodDescriptor,
			MethodInterfaceData mid,
			PropagationGraph propGraph,
			IEnumerable<TypeDescriptor> instantiatedTypes)
            : base()
        {
            this.MethodDescriptor = methodDescriptor;
            this.EntityDescriptor = EntityFactory.Create(methodDescriptor);
            this.MethodInterfaceData = mid;

            this.PropGraph = propGraph;
            this.InstantiatedTypes = new HashSet<TypeDescriptor>(instantiatedTypes);
        }
        /// <summary>
        /// We use this mapping as a cache of already computed callees info
        /// </summary>
        //public MethodEntityProcessor EntityProcessor { get; private set; }
        //public ISet<E> NodesProcessing = new HashSet<E>();
        //public ISet<CallConext<M,E>> NodesProcessing = new HashSet<CallConext<M,E>>();
        /// <summary>
        /// A method entity is built using the methods interface (params, return) and the propagation graph that is 
        /// initially populated with the variables, parameters and calls of the method 
        /// </summary>
        /// <param name="methodDescriptor"></param>
        /// <param name="mid"></param>
        /// <param name="propGraph"></param>
        /// <param name="instantiatedTypes"></param>
        public MethodEntity(MethodDescriptor methodDescriptor,
            MethodInterfaceData mid,
            PropagationGraph propGraph,
            IEntityDescriptor descriptor,
            IEnumerable<TypeDescriptor> instantiatedTypes,
            bool canBeAnalyzed = true)
            : base()
        {
            this.MethodDescriptor = methodDescriptor;
            this.EntityDescriptor = descriptor; // EntityFactory.Create(methodDescriptor);
            this.MethodInterfaceData = mid;

            this.propGraph = propGraph;
            this.InstantiatedTypes = new HashSet<TypeDescriptor>(instantiatedTypes);
            this.CanBeAnalized = canBeAnalyzed;
        }