If obj is null and the supplier is also null, you will not get an NPE with the expected message. Since it's kind of odd to get an NPE constructing an NPE, I think:
@throws NullPointerException if {@code obj} is {@code null} should be changed to: @throws NullPointerException if {@code obj} or {@code supplier} are {@code null}