private @NotNull Object createArray(Class<?> valueClass, FList<Type> processedTypes, List<Type> elementTypes) throws Exception {
      final Object[] array = (Object[])Array.newInstance(valueClass.getComponentType(), Math.max(elementTypes.size(), 2));
      for (int i = 0; i < array.length; i++) {
        Type type = elementTypes.isEmpty() ? valueClass.getComponentType() : elementTypes.get(i % elementTypes.size());
        array[i] = createValue(type, processedTypes);
      }
      return array;
    }
private @NotNull Object createArray(Class<?> valueClass, FList<Type> processedTypes, List<Type> elementTypes)