public static boolean objectEquals(@Nullable Object first, @Nullable Object second) {
    //noinspection EqualsReplaceableByObjectsCall
    return (first == second) || (first != null && first.equals(second));
  }
@Test
  public void testObjectsEqual() {
    Assert.assertTrue(CompatUtils.objectEquals(null, null));
    Assert.assertFalse(CompatUtils.objectEquals(null, new Object()));
    Assert.assertFalse(CompatUtils.objectEquals(new Object(), null));
    Assert.assertTrue(CompatUtils.objectEquals(new String("test"), new String("test")));
    Assert.assertFalse(CompatUtils.objectEquals(new String("test"), new String("test1")));
  }