You may also want to look at making this ConcurrentDictionary, as you are sharing recursively...not sure if we are sharing this across threads.