Isn't that what caused the compiler to consume twice as much memory on some cases? Though if the IDs are not on the references, but on the selectors themselves, this would only add a word-ish worth on each record. And you could reuse the unique logic that is already in place for LEFT/RIGHT.