Experimented with creating immutable lists - eventually solved it using AspectJ and Lombok.  Simplified some structure.