Extendable immutable value objects from standard Java interfaces