The codegen creates a cache of delegates (created using expression trees), but uses a structure more suited to the problem than a simple ConcurrentDictionary.
[1]: http://geekswithblogs.net/simonc/archive/2012/07/20/inside-t...
[1]: http://geekswithblogs.net/simonc/archive/2012/07/20/inside-t...