I still don't like the verbosity of this... it can get really hairy... another option is to have a boolean overloaded version of the method instead:

```
public void writeOptionalStreamable(@Nullable Streamable streamable, boolean apply) throws IOException {
```
then have it used as:

```
public void writeTo(StreamOutput out) throws IOException {
   ...
   out. writeOptionalStreamable(streamable, out.getVersion().onOrAfter(Version.V_1_2_0));
}
```