public static List<JsonSchemaObject> andGroups(@NotNull List<? extends JsonSchemaObject> g1,
                                                 @NotNull List<? extends JsonSchemaObject> g2) {
    List<JsonSchemaObject> result = new ArrayList<>(g1.size() * g2.size());
    for (JsonSchemaObject s : g1) {
      result.addAll(andGroup(s, g2));
    }
    return result;
  }
public static List<JsonSchemaObject> andGroups(@NotNull List<? extends JsonSchemaObject> g1,
                                                 @NotNull List<? extends JsonSchemaObject> g2)