@Nullable
    private Object createCollection(Class<?> aClass, ParameterizedType genericType, FList<Type> processedTypes, List<Type> elementTypes) throws Exception {
      Collection<Object> o;
      if (List.class.isAssignableFrom(aClass)) {
        o = new ArrayList<>();
      }
      else if (Set.class.isAssignableFrom(aClass)) {
        o = new HashSet<>();
      }
      else {
        return null;
      }
      final Type elementClass = genericType.getActualTypeArguments()[0];
      for (int i = 0; i < Math.max(elementTypes.size(), 2); i++) {
        Type type = elementTypes.isEmpty() ? elementClass : elementTypes.get(i % elementTypes.size());
        final Object item = createValue(type, processedTypes);
        if (item != null) {
          o.add(item);
        }
      }
      return o;
    }
@Nullable
    private Object createCollection(Class<?> aClass, ParameterizedType genericType, FList<Type> processedTypes, List<Type> elementTypes)