Element? searchFirst( Iterable<Element> root, bool Function(Element) predicate, ) { final e = search(root, predicate); if (e.isEmpty) return null; return e.first; }