I guess Dwight's point is that it is hard to read as it stands, not that it is impure.  I would personally write a different assignment for which `new` which makes sense, e.g.,

```
  Ambiguity amb = new Ambiguity("K", new ArrayList<Term>(input));
```

Maybe I would go even further, like one assignment per `new`.

Dwight, if this is a style that we want people to use, then we should make it clear in the wiki page.  The point is that we want the code to be readable and understandable by others easily.