### Question:
Utils { static boolean nullAwareEquals(Object a, Object b) { if (a == b) { return true; } else if (Missing.isNullOrMissing(a) && Missing.isNullOrMissing(b)) { return true; } else if (Missing.isNullOrMissing(a) || Missing.isNullOrMissing(b)) { return false; } else if (a instanceof byte[] && b instanceof byte[]) { byte[] bytesA = (byte[]) a; byte[] bytesB = (byte[]) b; return Arrays.equals(bytesA, bytesB); } else { Object normalizedA = normalizeValue(a); Object normalizedB = normalizeValue(b); return Objects.equals(normalizedA, normalizedB); } }  static Object getSubdocumentValue(Document document, String key); static Object getSubdocumentValueCollectionAware(Document document, String key); static String getDatabaseNameFromFullName(String fullName); static String getCollectionNameFromFullName(String fullName); static boolean isTrue(Object value); static Number normalizeNumber(Number value); static void markOkay(Document result); static String join(List<?> values, String delimiter); static void changeSubdocumentValue(Object document, String key, Object newValue); static void validateFieldNames(Document document); static Object removeSubdocumentValue(Object document, String key); static String describeType(Object value); static String joinTail(List<String> pathFragments); static String firstFragment(String input); static List<String> splitPath(String input); static String getShorterPathIfPrefix(String path1, String path2); static List<String> collectCommonPathFragments(String path1, String path2); static String getHostName(); static void copySubdocumentValue(Document input, Document result, String key); static final String PATH_DELIMITER; }### Answer:
@Test void testNullAwareEquals() { assertThat(Utils.nullAwareEquals(null, null)).isTrue(); assertThat(Utils.nullAwareEquals(null, Missing.getInstance())).isTrue(); assertThat(Utils.nullAwareEquals(Missing.getInstance(), null)).isTrue(); assertThat(Utils.nullAwareEquals(Missing.getInstance(), Missing.getInstance())).isTrue(); assertThat(Utils.nullAwareEquals(null, 4)).isFalse(); assertThat(Utils.nullAwareEquals(4, null)).isFalse(); assertThat(Utils.nullAwareEquals(4, 4)).isTrue(); assertThat(Utils.nullAwareEquals(4, 4.0)).isTrue(); assertThat(Utils.nullAwareEquals(Float.valueOf(3.0f), Double.valueOf(3.0))).isTrue(); assertThat(Utils.nullAwareEquals(new byte[] {}, new byte[] {})).isTrue(); assertThat(Utils.nullAwareEquals(new byte[] {}, new byte[] { 0x01 })).isFalse(); assertThat(Utils.nullAwareEquals(new byte[] { 0x01 }, new byte[] { 0x01 })).isTrue(); assertThat(Utils.nullAwareEquals(new byte[] { 0x01 }, new byte[] { 0x01, 0x02 })).isFalse(); assertThat(Utils.nullAwareEquals(new byte[] { 0x01, 0x02, 0x03 }, new byte[] { 0x01, 0x02 })).isFalse(); assertThat(Utils.nullAwareEquals(new byte[] { 0x01 }, new int[] { 0x01 })).isFalse(); assertThat(Utils.nullAwareEquals(json("a: 1"), json("a: 1"))).isTrue(); assertThat(Utils.nullAwareEquals(json("a: 1"), json("a: 1.0"))).isTrue(); assertThat(Utils.nullAwareEquals(json("a: 0"), json("a: -0.0"))).isTrue(); assertThat(Utils.nullAwareEquals(json("a: 0, b: 1"), json("a: 0, b: 1"))).isTrue(); assertThat(Utils.nullAwareEquals(json("a: 0, b: 1"), json("a: 0, b: 0"))).isFalse(); assertThat(Utils.nullAwareEquals(json("a: 0, b: 1"), json("b: 1, a: 0"))).isFalse(); }