Compile time annotations and compile time annotation processor to generate consistent value object using either abstract class, interface or annotation as a base.
'org.immutables:value:2.1.10'
<dependency>
<groupId>org.immutables</groupId>
<artifactId>value</artifactId>
<version>2.1.10</version>
</dependency>
<dependency org="org.immutables" name="value" rev="2.1.10"/>
"org.immutables", "value", "2.1.10"