BuilderWithToBuilder<T> () { java.util.List<T> bars; switch (this.bars == null ? 0 : this.bars.size()) { case 0: bars = java.util.Collections.emptyList(); break; case 1: bars = java.util.Collections.singletonList(this.bars.get(0)); break; default: bars = java.util.Collections.unmodifiableList(new java.util.ArrayList<T>(this.bars)); } return new BuilderWithToBuilder<T>(this.one, this.two, this.foo, bars); }