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;
                }
            }
        }