static FunctionCall parseFragmentExpressionToFunctionCall(O o) { if (!o instanceof L) null; L l = cast o; O first = first(l); if (!first instanceof Fragment) null; S first2 = first/Fragment.text; if (!isIdentifierPlusOpeningBracket(first2)) null; if (!eq(last(l), Fragment(")"))) null; int i = 1, n = l(l)-1; S fname = dropLast(first2); 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)); }