Immutables Java annotation processors to generate simple, safe and consistent value objects. Do not repeat yourself, try Immutables, the most comprehensive tool in this field! Get started! Read guide... v2.9.2 import org.immutables.value.Value; // Define abstract value type @Value.Immutable public interface ValueObject { String name(); List<Integer> counts(); Optional<String> description(); } // U