/** Create a builder from a {@link JsonValue}. * <p>If the argument is an object or array, use it to initialize the builder. * <p>If the argument is a JSON primitive (string, number, boolean or null), * <p>Otherwise thrown {@link IllegalArgumentException}. */ public static JsonBuilder builder(JsonValue arg) { if ( arg.isObject() ) { JsonObject obj = arg.getAsObject() ; JsonBuilder builder = JsonBuilder.create() ; builder.startObject() ; obj.forEach((k,v) -> builder.key(k).value(copy(v))) ; builder.finishObject() ; return builder ; } if ( arg.isArray() ) { JsonArray array = arg.getAsArray() ; JsonBuilder builder = JsonBuilder.create() ; builder.startArray() ; array.forEach((a)->builder.value(copy(a))) ; builder.finishArray() ; return builder ; } throw new IllegalArgumentException("Not a JSON object or JSON array; "+arg); }