/// <summary> /// Search for the entity node that represents the entity in the given state. /// Returns null if not found. /// </summary> private static EntityNode FindNodeForState(IEntityState state, TreeNodeCollection nodes) { var result = nodes.OfType <EntityNode>().FirstOrDefault(x => state.IsStateOf(x.Entity)); if (result != null) { return(result); } return(nodes.Cast <TreeNode>().Select(x => FindNodeForState(state, x.Nodes)).FirstOrDefault(x => x != null)); }