'java.lang.Boolean#valueOf' doesn't allocate new objects (it uses pre-allocated singletons for 'true' and 'false').
NB user-defined 'equals' can violate contract for 'Object#equals', e.g., it can be asymmetric. Thus we can't avoid boxing for 'object == primitive'.