I haven't looked at all the code yet, but it looks like this will allow mutable descriptions to be added to a suite. I would prefer that the builders always create immutable instances. I think we should create an `ImmutableDescription` subclass of `Description` (it would need to have a package-scope constructor, of course). Then we could do one of the following

* Pass in a List<ImmutableDescription> here
* Add a method to `Description` named `toImmutableDescription()` and have the code here convert the `List<Description>` to a List<ImmutableDescription>`