private VisualizationNodeData AddNodeCacheForNode(string id, string type)
        {
            string key = NodeDependencyLookupUtility.GetNodeKey(id, type);

            if (!_cachedVisualizationNodeDatas.ContainsKey(key))
            {
                INodeHandler nodeHandler = GetNodeHandlerForType(type);
                ITypeHandler typeHandler = GetTypeHandlerForType(type);

                VisualizationNodeData data = typeHandler.CreateNodeCachedData(id);
                _nodeDependencyLookupContext.NodeHandlerLookup = GetNodeHandlerLookup();

                if (_showThumbnails || DisplayData.ShowAdditionalInformation)
                {
                    data.OwnSize       = NodeDependencyLookupUtility.GetNodeSize(true, false, id, type, new HashSet <string>(), _nodeDependencyLookupContext, _cachedSizes);
                    data.HierarchySize = NodeDependencyLookupUtility.GetNodeSize(true, true, id, type, new HashSet <string>(), _nodeDependencyLookupContext, _cachedSizes);
                }

                data.Id   = id;
                data.Type = type;

                data.NodeHandler = nodeHandler;
                data.TypeHandler = typeHandler;

                data.Name          = typeHandler.GetName(id);
                data.IsEditorAsset = nodeHandler.IsNodeEditorOnly(id, type);
                data.IsPackedToApp = NodeDependencyLookupUtility.IsNodePackedToApp(id, type, _nodeDependencyLookupContext, new HashSet <string>());

                _cachedVisualizationNodeDatas.Add(key, data);
            }

            return(_cachedVisualizationNodeDatas[key]);
        }
        private bool IsNodeFiltered(string id, string type)
        {
            string key = NodeDependencyLookupUtility.GetNodeKey(id, type);

            VisualizationNodeData nodeData    = _cachedVisualizationNodeDatas[key];
            ITypeHandler          typeHandler = nodeData.TypeHandler;

            return(typeHandler.HasFilter() && !typeHandler.IsFiltered(nodeData.Id));
        }