The problem here is that it's very hard for me to understand what this term represents. If you want it to be a single statement, then that statement needs to not intersperse meaningful information with boilerplate function calls, and what function calls it does make need to be clearly understandable in their purpose. Essentially it's the difference between:

    return new HashSet<KList>(Arrays.asList(new KList(Arrays.asList((Term)new Ambiguity("K", new ArrayList<Term>(result))))));

and:

    KList term = KList.of(Ambiguity.of("K", result));
    return Collections.singleton(term);

or at least:

     KList term = KList.of(Ambiguity.of("K", result));
     Set<KList> s = new HashSet<>();
     s.add(term);
     return term;

...if you don't want an unmodifiable set.

You see how one is much easier to read?

Grigore: this isn't a clearly definable style rule, so I can't make a style guideline. But I can comment in the Code Review page that code containing complex, indecipherable expressions may not be accepted.