@Override public Action filter(Node node) { final Element elem = node.asElement(); if (elem != null) { float inlineSum = 0.0f; float blockSum = 0.0f; for (Node child : elem.children()) { final Integer cwords = child.get(WORD_COUNT); if (cwords != null) { Element celm = child.asElement(); if (celm != null) { final Float cwordy = celm.get(WORDINESS); if (isInline(celm)) { inlineSum += cwordy; } else { blockSum += (cwordy * cwords); } } else { inlineSum += cwords; } } } float sum = inlineSum; int ewc = elem.get(WORD_COUNT); if (ewc > 0) sum += (blockSum / ewc); // FIXME: Really just additive in inline plus block case? sum = adjustByTag(elem, sum); elem.set(WORDINESS, sum); } return Action.CONTINUE; }