code: private void updateArrayOfSetters(ClassOutline co, JCodeModel model) {
      JDefinedClass implClass = co.implClass;
  
      List<JMethod> removedMethods = new ArrayList<>();
      Iterator<JMethod> iter = implClass.methods().iterator();
      while (iter.hasNext()) {
        JMethod method = iter.next();
        if (method.params().size() == 1 && method.params().get(0).type().name().startsWith("ArrayOf")) {
          removedMethods.add(method);
          iter.remove();
        }
      }
  
      for (JMethod removed : removedMethods) {
        // Parse the old code to get the variable name
        StringWriter oldWriter = new StringWriter();
        removed.body().state(new JFormatter(oldWriter));
        String oldBody = oldWriter.toString();
        String varName = oldBody.substring(oldBody.indexOf("this.") + "this.".length(), oldBody.indexOf(" = "));
  
        // Build the new method
        JType arrType = removed.params().get(0).type();
        String type = arrType.name().substring("ArrayOf".length());
        JFieldVar field = implClass.fields().get(varName);  
        String fieldName = model._getClass(field.type().fullName()).fields().keySet().iterator().next();
  
        JMethod newMethod = implClass.method(removed.mods().getValue(), Void.TYPE, removed.name());
        newMethod.param(model.ref("java.util.List").narrow(model.ref(type)), "value");
        newMethod.body().decl(arrType, "arr", JExpr._new(arrType));
        newMethod.body().directStatement("arr.get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1) + "().addAll(value);");
        newMethod.body().directStatement("this." + varName + " = arr;");
      }
    }
docs: Update setters to use Java List. For example:
  setLineItems(ArrayOfLineItem value) -> setLineItems(List<LineItem> value)