Merge pull request #287 from Verdent/272-enumset-deserialization

Fixes #272 EnumSet deserialization
diff --git a/src/main/java/org/eclipse/yasson/internal/serializer/CollectionDeserializer.java b/src/main/java/org/eclipse/yasson/internal/serializer/CollectionDeserializer.java
index 4a4587d..53c52b8 100644
--- a/src/main/java/org/eclipse/yasson/internal/serializer/CollectionDeserializer.java
+++ b/src/main/java/org/eclipse/yasson/internal/serializer/CollectionDeserializer.java
@@ -56,6 +56,8 @@
         if (rawType.isInterface()) {
             final T x = createInterfaceInstance(rawType);
             if (x != null) return x;
+        } else if (EnumSet.class.isAssignableFrom(rawType)) {
+            return (T) EnumSet.noneOf((Class<Enum>) collectionValueType);
         }
         return builder.getJsonbContext().getInstanceCreator().createInstance(rawType);
     }
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/collections/CollectionsTest.java b/src/test/java/org/eclipse/yasson/defaultmapping/collections/CollectionsTest.java
index a6fb699..b17079d 100644
--- a/src/test/java/org/eclipse/yasson/defaultmapping/collections/CollectionsTest.java
+++ b/src/test/java/org/eclipse/yasson/defaultmapping/collections/CollectionsTest.java
@@ -213,6 +213,7 @@
 
         final String result = jsonb.toJson(languageEnumSet);
         assertTrue("[\"Czech\",\"Slovak\"]".equals(result) || "[\"Slovak\",\"Czech\"]".equals(result));
+        assertEquals(languageEnumSet, jsonb.fromJson(result, new TestTypeToken<EnumSet<Language>>() {}.getType()));
     }
 
     @Test