There will be quite many of those items and therefore it makes sense to optimize memory usage. As the lower two bits are zero all the time, it's perfectly fine to store information here. The pattern is called "tagged pointers", Volker reminded me of it, and actually I've seen it first in Qt.