private fiGraphMetadata(fiGraphMetadata parentMetadata, string accessKey) { _childrenInt = new CullableDictionary <int, fiGraphMetadata, IntDictionary <fiGraphMetadata> >(); _childrenString = new CullableDictionary <string, fiGraphMetadata, Dictionary <string, fiGraphMetadata> >(); _metadata = new CullableDictionary <Type, object, Dictionary <Type, object> >(); _parentMetadata = parentMetadata; if (_parentMetadata == null) { _precomputedData = new Dictionary <string, List <object> >(); } else { _precomputedData = _parentMetadata._precomputedData; } RebuildAccessPath(accessKey); if (_precomputedData.ContainsKey(_accessPath)) { foreach (var data in _precomputedData[_accessPath]) { _metadata[data.GetType()] = data; } } }