// Try to get the quoting right... static S smartJoin(S[] args) { if (args.length == 1) return args[0]; S[] a = new S[args.length]; for (int i = 0; i < a.length; i++) a[i] = !isJavaIdentifier(args[i]) && !isQuoted(args[i]) ? quote(args[i]) : args[i]; return join(" ", a); }