import java.util.List; import lombok.Builder; @Builder(toBuilder = true) @lombok.experimental.Accessors(prefix = "m") class BuilderWithToBuilder { private String mOne, mTwo; @Builder.ObtainVia(method = "rrr", isStatic = true) private T foo; @lombok.Singular private List bars; public static K rrr(BuilderWithToBuilder x) { return x.foo; } } @lombok.experimental.Accessors(prefix = "m") class ConstructorWithToBuilder { private String mOne, mTwo; private T foo; @lombok.Singular private com.google.common.collect.ImmutableList bars; @Builder(toBuilder = true) public ConstructorWithToBuilder(String mOne, @Builder.ObtainVia(field = "foo") T baz, com.google.common.collect.ImmutableList bars) { } } class StaticMethodWithToBuilder { private T foo; public StaticMethodWithToBuilder(T foo) { this.foo = foo; } @Builder(toBuilder = true) public static StaticMethodWithToBuilder of(T foo) { return new StaticMethodWithToBuilder(foo); } }