// TODO: why doesn't it extend ReversibleFunctionImpl? static class FJoin extends FunctionImpl { String glue; *(String *glue) {} public O process(Object _in) { return join(glue, (List) _in); } public O unprocess(Object _in) { String in = cast _in; return new ArrayList(Arrays.asList(in.split(glue))); } }