Revert renaming RejectDuplicateKeysMode and it's values
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
index 977aa31..af0e9cf 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
@@ -72,7 +72,7 @@
             throw new IllegalStateException(current + " doesn't support getObject()");
         }
 
-        JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), DuplicateKeysMode.LAST, provider);
+        JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), RejectDuplicateKeysMode.DEFAULT, provider);
         return jsonReader.readObject();
     }
 
@@ -84,7 +84,7 @@
             throw new IllegalStateException(current + " doesn't support getArray()");
         }
 
-        JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), DuplicateKeysMode.LAST, provider);
+        JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), RejectDuplicateKeysMode.DEFAULT, provider);
         return jsonReader.readArray();
     }
 
@@ -94,7 +94,7 @@
         switch (current) {
             case START_ARRAY:
             case START_OBJECT:
-                JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), DuplicateKeysMode.LAST, provider);
+                JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), RejectDuplicateKeysMode.DEFAULT, provider);
                 return jsonReader.readValue();
             case VALUE_TRUE:
                 return JsonValue.TRUE;
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
index f98c14a..b1ad933 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
@@ -35,7 +35,7 @@
 import org.apache.johnzon.core.util.ArrayUtil;
 
 class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable {
-    private DuplicateKeysMode duplicateKeysMode;
+    private RejectDuplicateKeysMode rejectDuplicateKeysMode;
     private JsonProviderImpl jsonProvider;
     private List<JsonValue> tmpList;
     private BufferStrategy.BufferProvider<char[]> bufferProvider;
@@ -46,18 +46,18 @@
 
     public JsonArrayBuilderImpl(final JsonArray initialData,
                                 final BufferStrategy.BufferProvider<char[]> provider,
-                                final DuplicateKeysMode duplicateKeysMode,
+                                final RejectDuplicateKeysMode rejectDuplicateKeysMode,
                                 final JsonProviderImpl jsonProvider) {
         this.tmpList = new ArrayList<>(initialData);
         this.bufferProvider = provider;
-        this.duplicateKeysMode = duplicateKeysMode;
+        this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
         this.jsonProvider = jsonProvider;
     }
 
     public JsonArrayBuilderImpl(final Collection<?> initialData, final BufferStrategy.BufferProvider<char[]> provider,
-                                final DuplicateKeysMode duplicateKeysMode, final JsonProviderImpl jsonProvider) {
+                                final RejectDuplicateKeysMode rejectDuplicateKeysMode, final JsonProviderImpl jsonProvider) {
         this.bufferProvider = provider;
-        this.duplicateKeysMode = duplicateKeysMode;
+        this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
         this.tmpList = new ArrayList<>();
         if (!initialData.isEmpty()) {
             for (Object initialValue : initialData) {
@@ -229,12 +229,12 @@
         } else if (value instanceof String) {
             add((String) value);
         } else if (value instanceof Map) {
-            add(new JsonObjectBuilderImpl(Map.class.cast(value), bufferProvider, duplicateKeysMode, jsonProvider).build());
+            add(new JsonObjectBuilderImpl(Map.class.cast(value), bufferProvider, rejectDuplicateKeysMode, jsonProvider).build());
         } else if (value instanceof Collection) {
-            add(new JsonArrayBuilderImpl(Collection.class.cast(value), bufferProvider, duplicateKeysMode, jsonProvider).build());
+            add(new JsonArrayBuilderImpl(Collection.class.cast(value), bufferProvider, rejectDuplicateKeysMode, jsonProvider).build());
         } else if (value.getClass().isArray()) {
             final Collection<Object> collection = ArrayUtil.newCollection(value);
-            add(new JsonArrayBuilderImpl(collection, bufferProvider, duplicateKeysMode, jsonProvider).build());
+            add(new JsonArrayBuilderImpl(collection, bufferProvider, rejectDuplicateKeysMode, jsonProvider).build());
         } else {
             throw new JsonException("Illegal JSON type! type=" + value.getClass());
         }
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
index 93d8fe8..8323a1a 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
@@ -36,19 +36,19 @@
 
 class JsonBuilderFactoryImpl implements JsonBuilderFactory, Serializable {
     private final Map<String, Object> internalConfig = new HashMap<String, Object>();
-    private DuplicateKeysMode duplicateKeysMode;
+    private RejectDuplicateKeysMode rejectDuplicateKeysMode;
     private JsonProviderImpl provider;
     private BufferStrategy.BufferProvider<char[]> bufferProvider;
-    private static final List<String> SUPPORTED_CONFIG_KEYS = DuplicateKeysMode.CONFIG_KEYS;
+    private static final List<String> SUPPORTED_CONFIG_KEYS = RejectDuplicateKeysMode.CONFIG_KEYS;
 
     protected JsonBuilderFactoryImpl() {
         // no-op: serialization
     }
 
     JsonBuilderFactoryImpl(final Map<String, ?> config, final BufferStrategy.BufferProvider<char[]> bufferProvider,
-                           final DuplicateKeysMode duplicateKeysMode, final JsonProviderImpl provider) {
+                           final RejectDuplicateKeysMode rejectDuplicateKeysMode, final JsonProviderImpl provider) {
         this.bufferProvider = bufferProvider;
-        this.duplicateKeysMode = duplicateKeysMode;
+        this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
         this.provider = provider;
         if (config != null && !config.isEmpty()) {
             for (String configKey : config.keySet()) {
@@ -64,28 +64,28 @@
 
     @Override
     public JsonObjectBuilder createObjectBuilder() {
-        return new JsonObjectBuilderImpl(emptyMap(), bufferProvider, duplicateKeysMode, provider);
+        return new JsonObjectBuilderImpl(emptyMap(), bufferProvider, rejectDuplicateKeysMode, provider);
     }
 
     @Override
     public JsonObjectBuilder createObjectBuilder(JsonObject initialData) {
-        return new JsonObjectBuilderImpl(initialData, bufferProvider, duplicateKeysMode, provider);
+        return new JsonObjectBuilderImpl(initialData, bufferProvider, rejectDuplicateKeysMode, provider);
     }
 
     @Override
     public JsonArrayBuilder createArrayBuilder() {
-        return new JsonArrayBuilderImpl(emptyList(), bufferProvider, duplicateKeysMode, provider);
+        return new JsonArrayBuilderImpl(emptyList(), bufferProvider, rejectDuplicateKeysMode, provider);
     }
 
 
     @Override
     public JsonArrayBuilder createArrayBuilder(JsonArray initialData) {
-        return new JsonArrayBuilderImpl(initialData, bufferProvider, duplicateKeysMode, provider);
+        return new JsonArrayBuilderImpl(initialData, bufferProvider, rejectDuplicateKeysMode, provider);
     }
 
     @Override
     public JsonArrayBuilder createArrayBuilder(Collection<?> initialData) {
-        return new JsonArrayBuilderImpl(initialData, bufferProvider, duplicateKeysMode, provider);
+        return new JsonArrayBuilderImpl(initialData, bufferProvider, rejectDuplicateKeysMode, provider);
     }
 
     @Override
@@ -95,7 +95,7 @@
 
     @Override
     public JsonObjectBuilder createObjectBuilder(Map<String, Object> initialValues) {
-        return new JsonObjectBuilderImpl(initialValues, bufferProvider, duplicateKeysMode, provider);
+        return new JsonObjectBuilderImpl(initialValues, bufferProvider, rejectDuplicateKeysMode, provider);
     }
 
 }
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchDiff.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchDiff.java
index ddf6a91..221f55d 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchDiff.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchDiff.java
@@ -48,7 +48,7 @@
     }
 
     private JsonValue diff(JsonValue source, JsonValue target) {
-        JsonObjectBuilder builder = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, DuplicateKeysMode.LAST, provider);
+        JsonObjectBuilder builder = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, RejectDuplicateKeysMode.DEFAULT, provider);
 
         if (isJsonObject(source) && isJsonObject(target)) {
             JsonObject srcObj = source.asJsonObject();
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchImpl.java
index 8ad4919..a974cca 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchImpl.java
@@ -61,7 +61,7 @@
     }
 
     private JsonValue applyJsonObjectPatch(JsonObject jsonObject, JsonObject patch) {
-        JsonObjectBuilder builder = new JsonObjectBuilderImpl(jsonObject, bufferProvider, DuplicateKeysMode.LAST, provider);
+        JsonObjectBuilder builder = new JsonObjectBuilderImpl(jsonObject, bufferProvider, RejectDuplicateKeysMode.DEFAULT, provider);
 
         for (Map.Entry<String, JsonValue> patchAttrib : patch.entrySet()) {
             String attribName = patchAttrib.getKey();
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
index 6ec1e21..59b9cdd 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
@@ -36,7 +36,7 @@
 import org.apache.johnzon.core.util.ArrayUtil;
 
 class JsonObjectBuilderImpl implements JsonObjectBuilder, Serializable {
-    private DuplicateKeysMode duplicateKeysMode;
+    private RejectDuplicateKeysMode rejectDuplicateKeysMode;
     private JsonProviderImpl provider;
     private BufferStrategy.BufferProvider<char[]> bufferProvider;
     private Map<String, JsonValue> attributeMap = new LinkedHashMap<>();
@@ -47,20 +47,20 @@
 
     public JsonObjectBuilderImpl(final JsonObject initialData,
                                  final BufferStrategy.BufferProvider<char[]> bufferProvider,
-                                 final DuplicateKeysMode duplicateKeysMode,
+                                 final RejectDuplicateKeysMode rejectDuplicateKeysMode,
                                  final JsonProviderImpl provider) {
         this.bufferProvider = bufferProvider;
-        this.duplicateKeysMode = duplicateKeysMode;
+        this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
         this.provider = provider;
         this.attributeMap = new LinkedHashMap<>(initialData);
     }
 
     public JsonObjectBuilderImpl(final Map<String, Object> initialValues,
                                  final BufferStrategy.BufferProvider<char[]> bufferProvider,
-                                 final DuplicateKeysMode duplicateKeysMode,
+                                 final RejectDuplicateKeysMode rejectDuplicateKeysMode,
                                  final JsonProviderImpl provider) {
         this.bufferProvider = bufferProvider;
-        this.duplicateKeysMode = duplicateKeysMode;
+        this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
         this.provider = provider;
         if (!initialValues.isEmpty()) {
             for (Map.Entry<String, Object> entry : initialValues.entrySet()) {
@@ -93,12 +93,12 @@
         } else if (value == null) {
             addNull(name);
         } else if (value instanceof Map) {
-            add(name, new JsonObjectBuilderImpl(Map.class.cast(value), bufferProvider, duplicateKeysMode, provider).build());
+            add(name, new JsonObjectBuilderImpl(Map.class.cast(value), bufferProvider, rejectDuplicateKeysMode, provider).build());
         } else if (value instanceof Collection) {
-            add(name, new JsonArrayBuilderImpl(Collection.class.cast(value), bufferProvider, duplicateKeysMode, provider).build());
+            add(name, new JsonArrayBuilderImpl(Collection.class.cast(value), bufferProvider, rejectDuplicateKeysMode, provider).build());
         } else if (value.getClass().isArray()) {
             final Collection<Object> collection = ArrayUtil.newCollection(value);
-            add(name, new JsonArrayBuilderImpl(collection, bufferProvider, duplicateKeysMode, provider).build());
+            add(name, new JsonArrayBuilderImpl(collection, bufferProvider, rejectDuplicateKeysMode, provider).build());
         } else {
             throw new JsonException("Illegal JSON type! name=" + name + " type=" + value.getClass());
         }
@@ -189,7 +189,7 @@
         if(value == null) {
             throw new NullPointerException("value/builder must not be null for name: " + name);
         }
-        duplicateKeysMode.put().put(attributeMap, name, value);
+        rejectDuplicateKeysMode.put().put(attributeMap, name, value);
     }
 
 
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
index 158562a..fce0fac 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
@@ -62,7 +62,7 @@
     private final JsonGeneratorFactory generatorFactory = new JsonGeneratorFactoryImpl(null);
     private final JsonWriterFactory writerFactory = new JsonWriterFactoryImpl(null);
     private final Supplier<JsonBuilderFactory> builderFactory = new Cached<>(() ->
-            new JsonBuilderFactoryImpl(null, bufferProvider.get(), DuplicateKeysMode.LAST, this));
+            new JsonBuilderFactoryImpl(null, bufferProvider.get(), RejectDuplicateKeysMode.DEFAULT, this));
     private int maxBigDecimalScale = Integer.getInteger("johnzon.max-big-decimal-scale", 1_000);
     @Override
     public JsonParser createParser(final InputStream in) {
@@ -193,7 +193,7 @@
     public JsonBuilderFactory createBuilderFactory(final Map<String, ?> config) {
         final JsonBuilderFactory builderFactory = this.builderFactory.get();
         return (config == null || config.isEmpty()) ?
-                builderFactory : new JsonBuilderFactoryImpl(config, bufferProvider.get(), DuplicateKeysMode.from(config), this);
+                builderFactory : new JsonBuilderFactoryImpl(config, bufferProvider.get(), RejectDuplicateKeysMode.from(config), this);
     }
 
     @Override
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
index 050a4b8..cd1081e 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
@@ -30,20 +30,20 @@
 import jakarta.json.stream.JsonParser;
 
 class JsonReaderFactoryImpl extends AbstractJsonFactory implements JsonReaderFactory {
-    static final Collection<String> SUPPORTED_CONFIG_KEYS = DuplicateKeysMode.CONFIG_KEYS;
+    static final Collection<String> SUPPORTED_CONFIG_KEYS = RejectDuplicateKeysMode.CONFIG_KEYS;
 
     private final JsonParserFactoryImpl parserFactory;
-    private final DuplicateKeysMode rejectDuplicateKeys;
+    private final RejectDuplicateKeysMode rejectDuplicateKeys;
     private JsonProviderImpl provider;
 
     JsonReaderFactoryImpl(final Map<String, ?> config, final JsonProviderImpl provider) {
         super(config, SUPPORTED_CONFIG_KEYS, JsonParserFactoryImpl.SUPPORTED_CONFIG_KEYS);
         this.provider = provider;
         if (!internalConfig.isEmpty()) {
-            DuplicateKeysMode.CONFIG_KEYS.forEach(internalConfig::remove);
+            RejectDuplicateKeysMode.CONFIG_KEYS.forEach(internalConfig::remove);
         }
         this.parserFactory = new JsonParserFactoryImpl(internalConfig, provider);
-        this.rejectDuplicateKeys = DuplicateKeysMode.from(config);
+        this.rejectDuplicateKeys = RejectDuplicateKeysMode.from(config);
     }
 
     @Override
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
index a8c70ee..b615892 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
@@ -37,14 +37,14 @@
     private final JohnzonJsonParser parser;
     private final BufferStrategy.BufferProvider<char[]> bufferProvider;
     private JsonProviderImpl provider;
-    private final DuplicateKeysMode duplicateKeysMode;
+    private final RejectDuplicateKeysMode rejectDuplicateKeysMode;
     private boolean closed = false;
 
     private boolean subStreamReader;
 
     public JsonReaderImpl(final JsonParser parser, final BufferStrategy.BufferProvider<char[]> bufferProvider,
-                          final DuplicateKeysMode duplicateKeysMode, final JsonProviderImpl provider) {
-        this(parser, false, bufferProvider, duplicateKeysMode, provider);
+                          final RejectDuplicateKeysMode rejectDuplicateKeysMode, final JsonProviderImpl provider) {
+        this(parser, false, bufferProvider, rejectDuplicateKeysMode, provider);
     }
 
     /**
@@ -55,7 +55,7 @@
      */
     public JsonReaderImpl(final JsonParser parser, boolean subStreamReader,
                           final BufferStrategy.BufferProvider<char[]> bufferProvider,
-                          final DuplicateKeysMode rejectDuplicateKeys, final JsonProviderImpl provider) {
+                          final RejectDuplicateKeysMode rejectDuplicateKeys, final JsonProviderImpl provider) {
         this.bufferProvider = bufferProvider;
         this.provider = provider;
         if (parser instanceof JohnzonJsonParser) {
@@ -65,7 +65,7 @@
         }
 
         this.subStreamReader = subStreamReader;
-        this.duplicateKeysMode = rejectDuplicateKeys;
+        this.rejectDuplicateKeysMode = rejectDuplicateKeys;
     }
 
     @Override
@@ -91,14 +91,14 @@
 
         switch (next) {
             case START_OBJECT:
-                final JsonObjectBuilder objectBuilder = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, duplicateKeysMode, provider);
+                final JsonObjectBuilder objectBuilder = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, rejectDuplicateKeysMode, provider);
                 parseObject(objectBuilder);
                 if (!subStreamReader && parser.hasNext()) {
                     throw new JsonParsingException("Expected end of file", parser.getLocation());
                 }
                 return objectBuilder.build();
             case START_ARRAY:
-                final JsonArrayBuilder arrayBuilder = new JsonArrayBuilderImpl(emptyList(), bufferProvider, duplicateKeysMode, provider);
+                final JsonArrayBuilder arrayBuilder = new JsonArrayBuilderImpl(emptyList(), bufferProvider, rejectDuplicateKeysMode, provider);
                 parseArray(arrayBuilder);
                 if (!subStreamReader && parser.hasNext()) {
                     throw new JsonParsingException("Expected end of file", parser.getLocation());
@@ -184,13 +184,13 @@
                     break;
 
                 case START_OBJECT:
-                    JsonObjectBuilder subObject = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, duplicateKeysMode, provider);
+                    JsonObjectBuilder subObject = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, rejectDuplicateKeysMode, provider);
                     parseObject(subObject);
                     builder.add(key, subObject);
                     break;
 
                 case START_ARRAY:
-                    JsonArrayBuilder subArray = new JsonArrayBuilderImpl(emptyList(), bufferProvider, duplicateKeysMode, provider);
+                    JsonArrayBuilder subArray = new JsonArrayBuilderImpl(emptyList(), bufferProvider, rejectDuplicateKeysMode, provider);
                     parseArray(subArray);
                     builder.add(key, subArray);
                     break;
@@ -244,14 +244,14 @@
                     break;
 
                 case START_OBJECT:
-                    JsonObjectBuilder subObject = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, duplicateKeysMode, provider);
+                    JsonObjectBuilder subObject = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, rejectDuplicateKeysMode, provider);
                     parseObject(subObject);
                     builder.add(subObject);
                     break;
 
                 case START_ARRAY:
                     JsonArrayBuilder subArray = null;
-                    parseArray(subArray = new JsonArrayBuilderImpl(emptyList(), bufferProvider, duplicateKeysMode, provider));
+                    parseArray(subArray = new JsonArrayBuilderImpl(emptyList(), bufferProvider, rejectDuplicateKeysMode, provider));
                     builder.add(subArray);
                     break;
 
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/DuplicateKeysMode.java b/johnzon-core/src/main/java/org/apache/johnzon/core/RejectDuplicateKeysMode.java
similarity index 62%
rename from johnzon-core/src/main/java/org/apache/johnzon/core/DuplicateKeysMode.java
rename to johnzon-core/src/main/java/org/apache/johnzon/core/RejectDuplicateKeysMode.java
index ab34110..0d9f754 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/DuplicateKeysMode.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/RejectDuplicateKeysMode.java
@@ -21,19 +21,22 @@
 import jakarta.json.JsonConfig;
 import jakarta.json.JsonException;
 import jakarta.json.JsonValue;
+
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 
 import static java.util.Arrays.asList;
 
-public enum DuplicateKeysMode {
-    NONE((map, k, v) -> {
+public enum RejectDuplicateKeysMode {
+    DEFAULT(Map::put),
+    TRUE((map, k, v) -> {
         if (map.put(k, v) != null) {
             throw new JsonException("Rejected key: '" + k + "', already present");
         }
     }),
-    FIRST(Map::putIfAbsent),
-    LAST(Map::put);
+    FIRST(Map::putIfAbsent);
 
     static final List<String> CONFIG_KEYS = asList(
             JsonConfig.KEY_STRATEGY, // jsonp 2.1 spec
@@ -41,45 +44,25 @@
             "org.glassfish.json.rejectDuplicateKeys" // the spec includes it (yes :facepalm:)
     );
 
-    public static DuplicateKeysMode from(final Map<String, ?> config) {
+    public static RejectDuplicateKeysMode from(final Map<String, ?> config) {
         if (config == null) {
-            return LAST;
+            return DEFAULT;
         }
 
-        for (String configKey : CONFIG_KEYS) {
-            Object value = config.get(configKey);
-            if (value == null) {
-                continue;
-            }
-
-            if (configKey.equals(JsonConfig.KEY_STRATEGY)) {
-                JsonConfig.KeyStrategy specKeyStrategy = (JsonConfig.KeyStrategy) value;
-
-                switch (specKeyStrategy) {
-                    case NONE:
-                        return NONE;
-
-                    case FIRST:
-                        return FIRST;
-
-                    default:
-                    case LAST:
-                        return LAST;
-                }
-            }
-
-            String valueAsString = String.valueOf(value);
-            if ("true".equals(valueAsString)) {
-                return NONE;
-            }
-        }
-
-        return LAST;
+        return CONFIG_KEYS.stream()
+                .map(config::get)
+                .filter(Objects::nonNull)
+                .findFirst()
+                .map(String::valueOf)
+                .map(it -> "false".equalsIgnoreCase(it) || "LAST".equalsIgnoreCase(it) ? "DEFAULT" : it) // aliases to avoid to add an enum value for nothing
+                .map(it -> "NONE".equalsIgnoreCase(it) ? "true" : it)
+                .map(it -> valueOf(it.toUpperCase(Locale.ROOT).trim()))
+                .orElse(TRUE);
     }
 
     private final Put put;
 
-    DuplicateKeysMode(final Put put) {
+    RejectDuplicateKeysMode(final Put put) {
         this.put = put;
     }
 
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonStreamParserImplTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonStreamParserImplTest.java
index 596f362..bf767ab 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonStreamParserImplTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonStreamParserImplTest.java
@@ -68,7 +68,7 @@
         final String json = new JsonObjectBuilderImpl(
             emptyMap(),
             BufferStrategyFactory.valueOf("QUEUE").newCharProvider(100),
-            DuplicateKeysMode.NONE, (JsonProviderImpl) JsonProviderImpl.provider())
+            RejectDuplicateKeysMode.TRUE, (JsonProviderImpl) JsonProviderImpl.provider())
                 .add("content", "{\"foo\":\"barbar\\barbarbar\"}")
                 .build()
                 .toString();