I think the real issue is that readOps.getIndexesGetForLabelAndPropertyKey() should return both indexes. This currently can't be done (at least not nicely) because uniqueness isn't part of IndexDescriptor. On top of that, we know we'd like to have a statement-lifecycle bound IndexReference. So yes, definitely, we should refactor this but we should do that more thoroughly.