static S format3(S pat, O... args) { if (args.length == 0) return pat; L tok = javaTokPlusPeriod(pat); int argidx = 0; for (int i = 1; i < tok.size(); i += 2) if (tok.get(i).equals("*")) tok.set(i, format3_formatArg(argidx < args.length ? args[argidx++] : "null")); return join(tok); } static S format3_formatArg(O arg) { if (arg == null) return "null"; if (arg instanceof String) { S s = (S) arg; ret isIdentifier(s) || isNonNegativeInteger(s) ? s : quote(s); } if (arg instanceof Integer || arg instanceof Long) ret String.valueOf(arg); return quote(structure(arg)); }