static FunctionCall parseFragmentExpressionToFunctionCall(O o) { if (!o instanceof L) null; L l = cast o; int i = 0; if (!isIdentifierPlusOpeningBracket(get(l, i))) null; if (!eq(last(l), Fragment(")"))) null; int n = l(l)-1; S fname = dropLast(get(l, i++)); new L args; while (i < n) { args.add(get(l, i++)); if (i >= n) break; if (!eq(get(l, i++), Fragment(","))) null; } ret FunctionCall(fname, toObjectArray(args)); }