private void ProcessMethodWorkSet()
 {
     while (_methodQ.Count > 0)
     {
         MethodCallInfo mci    = _methodQ.Dequeue();
         MethodBase     method = mci.GetStrongestOverride();
         if (FactUniverse.Instance.HaveFacts(method) &&
             FactUniverse.Instance.GetFacts(method).IsDecompilable)
         {
             Resolve(mci);
         }
     }
 }
        private MethodDescriptor ConstructMethodDescriptor(MethodCallInfo mci, bool special)
        {
            MethodBase       method = mci.GetStrongestOverride();
            MethodDescriptor md     = new MethodDescriptor(
                method,
                mci.EvaluatedArgumentsWithoutThis,
                special ? mci.ArgumentVariabilities : VariabilityPattern.CreateDefault(method).Pattern);
            var caller   = mci.CallerTemplate.Decompilee;
            var callerPd = caller as ProcessDescriptor;
            var callerMd = caller as MethodDescriptor;

            if (callerPd != null)
            {
                md.CallingProcess = callerPd;
            }
            else
            {
                md.CallingProcess = callerMd.CallingProcess;
            }

            return(md);
        }
        private MethodDescriptor ConstructMethodDescriptor(MethodCallInfo mci, bool special)
        {
            MethodBase method = mci.GetStrongestOverride();
            MethodDescriptor md = new MethodDescriptor(
                method,
                mci.EvaluatedArgumentsWithoutThis,
                special ? mci.ArgumentVariabilities : VariabilityPattern.CreateDefault(method).Pattern);
            var caller = mci.CallerTemplate.Decompilee;
            var callerPd = caller as ProcessDescriptor;
            var callerMd = caller as MethodDescriptor;
            if (callerPd != null)
                md.CallingProcess = callerPd;
            else
                md.CallingProcess = callerMd.CallingProcess;

            return md;
        }