HORRIFIC MISUSE OF EQUALS AND HASHCODE!
I whipped up a prototype to test the idea, it needs some serious work
before I concentrate on anything else.