version
A version that is used as input of the Gradle task. Since OperationOutputGenerator cannot easily be serialized and influences the output of the task, we need a way to mark the task out-of-date when the implementation changes.
Two different implementations must have different versions.
When using the compiler outside a Gradle context, version is not used, making it the empty string is fine.