### Question:
Utils { static Object normalizeValue(Object value) { if (Missing.isNullOrMissing(value)) { return null; } if (value instanceof Number) { double doubleValue = ((Number) value).doubleValue(); if (doubleValue == -0.0) { doubleValue = 0.0; } return Double.valueOf(doubleValue); } else if (value instanceof Map) { @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) value; Document result = new Document(); for (Entry<String, Object> entry : map.entrySet()) { result.put(entry.getKey(), normalizeValue(entry.getValue())); } return result; } else if (value instanceof Collection<?>) { Collection<?> collection = (Collection<?>) value; return collection.stream() .map(Utils::normalizeValue) .collect(Collectors.toList()); } else { return value; } }  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 testNormalizeValue() { assertThat(Utils.normalizeValue(null)).isNull(); assertThat(Utils.normalizeValue(Integer.valueOf(4))).isEqualTo(4.0); assertThat(Utils.normalizeValue(-0.0)).isEqualTo(0.0); assertThat(Utils.normalizeValue(0.0)).isEqualTo(0.0); assertThat(Utils.normalizeValue(Missing.getInstance())).isNull(); assertThat(Utils.normalizeValue(Instant.now())).isInstanceOf(Instant.class); assertThat(Utils.normalizeValue(json("a: {b: 1}"))).isEqualTo(json("a: {b: 1.0}")); assertThat(Utils.normalizeValue(json("a: {b: -0.0, c: -1}"))).isEqualTo(json("a: {b: 0.0, c: -1.0}")); assertThat(Utils.normalizeValue(json("a: {c: 1, b: 0}"))) .isNotEqualTo(json("a: {b: 0.0, c: 1.0}")) .isEqualTo(json("a: {c: 1.0, b: 0.0}")) ; }