private bool TraverseAny(NodeModel entry) { bool result; if (_resultDict.TryGetValue(entry, out result)) return result; result = _predicate(entry); _resultDict[entry] = result; if (result) return result; if (entry is Function) { var symbol = Guid.Parse((entry as Function).Symbol); if (!dynSettings.Controller.CustomNodeManager.Contains(symbol)) { DynamoLogger.Instance.Log("WARNING -- No implementation found for node: " + symbol); entry.Error("Could not find .dyf definition file for this node."); return false; } result = dynSettings.Controller.CustomNodeManager.GetFunctionDefinition(symbol) .WorkspaceModel.GetTopMostNodes().Any(ContinueTraversalUntilAny); } _resultDict[entry] = result; if (result) return result; return entry.Inputs.Values.Any(x => x != null && TraverseAny(x.Item2)); }