private bool TryGetCompiledFunctionCall(
     Type t,
     string name,
     out CallSite site)
 {
     Dictionary<string, CallSite> sites;
     if (_compiledFunctionCall.TryGetValue(t, out sites)
         && sites.TryGetValue(name, out site))
     {
         return true;
     }
     site = null;
     return false;
 }
 private void SetCompiledFunctionCall(
     Type t,
     string name,
     CallSite site)
 {
     Dictionary<string, CallSite> sites;
     if (!_compiledFunctionCall.TryGetValue(t, out sites))
     {
         sites = new Dictionary<string, CallSite>();
         _compiledFunctionCall[t] = sites;
     }
     sites[name] = site;
 }