dvFindMissing function
The paragraphs of blocks whose words are not already in existing.
On the route a build wrote the block for, that block is kept: it carries the links and the landmarks the semantics tree gave it, which a crawler that runs scripts reads and a mirror rebuilt from painted paragraphs would throw away. What the page has drawn since -- rows a list built on scrolling, text that arrived with its data -- is added beside it.
Implementation
List<DVFindBlock> dvFindMissing(String existing, List<DVFindBlock> blocks) {
final String have = dvFindNormalize(existing);
return <DVFindBlock>[
for (final DVFindBlock block in blocks)
if (!have.contains(dvFindNormalize(block.text))) block,
];
}