A container of potential reports.
Things that produce reports (typically tasks) expose a report container that contains Report objects for each
possible report that they can produce. Each report object can be configured individually, including whether or not it should
be produced by way of its Report#setEnabled(boolean)#setEnabled(boolean) property.
ReportContainer implementations are immutable in that standard collection methods such as add(), remove()
and clear() will throw an ImmutableViolationException. However, implementations may provide new methods that allow
the addition of new report object and/or the removal of existing report objects.
Parameters:
- The base report type for reports of this container.
Returns an immutable collection of all the enabled reports.
The returned collection is live. That is, as reports are enabled/disabled the returned collection always
reflects the current set of enabled reports.