Replace an expensive null throw with a cheap one in MessageSchema.mergeFrom

mergeFrom is a very hot method.

R8 can turn this into getClass() call.

PiperOrigin-RevId: 875335888
diff --git a/java/core/src/main/java/com/google/protobuf/MessageSchema.java b/java/core/src/main/java/com/google/protobuf/MessageSchema.java
index 193ad9e..0f09aee 100644
--- a/java/core/src/main/java/com/google/protobuf/MessageSchema.java
+++ b/java/core/src/main/java/com/google/protobuf/MessageSchema.java
@@ -45,6 +45,7 @@
 import static com.google.protobuf.ArrayDecoders.mergeGroupField;
 import static com.google.protobuf.ArrayDecoders.mergeMessageField;
 import static com.google.protobuf.ArrayDecoders.skipField;
+import static com.google.protobuf.Internal.checkNotNull;
 
 import com.google.protobuf.ArrayDecoders.Registers;
 import com.google.protobuf.ByteString.CodedBuilder;
@@ -1186,9 +1187,7 @@
   @Override
   public void mergeFrom(T message, T other) {
     checkMutable(message);
-    if (other == null) {
-      throw new NullPointerException();
-    }
+    checkNotNull(other);
     for (int i = 0; i < buffer.length; i += INTS_PER_FIELD) {
       // A separate method allows for better JIT optimizations
       mergeSingleField(message, other, i);