public NodeList<Element> filter(NodeList<Element> nodes, Predicate p) {
JsNodeArray res = JsNodeArray.create();
for (int i = 0, l = nodes.getLength(), j = 0; i < l; i++) {
Element e = nodes.getItem(i);
if (p.f(e, i)) {
res.addNode(e, j++);
}
}
return res;
}