(u) doesn't allocate unless necessary