title: null and default behaviour with immutables
body: <p>Using <a href="https://immutables.github.io" rel="nofollow noreferrer">https://immutables.github.io</a> in my Java App</p>
  
  <p>My immutable POJO:</p>
  
  <pre><code>@Value.Immutable
  public interface AdditionalInfo {
  
    @Nullable
    @Value.Default
    default String getCountry() {
      return "US";
    }
  }
  </code></pre>
  
  <p>My code that creates POJO</p>
  
  <pre><code>ImmutableAdditionalInfo.builder().country(countryVar).build()
  </code></pre>
  
  <p>If countryVar is null, getCountry will return null. This seems counter intuitive to me, as a default to me, is best used if no value can be set. 
  I can have null checks in the app code that creates AdditionalInfo, but that seems less than optimal. </p>
  
  <pre><code>if (countryVar != null) {
      ImmutableAdditionalInfo.builder().country(countryVar).build()
  } else {
      ImmutableAdditionalInfo.builder().build()
  }
  </code></pre>
  
  <p>The builder generated code is:</p>
  
  <pre><code>this.country = builder.countryIsSet() ? builder.country : AdditionalTaxLineInfo.super.getCountry(); 
  </code></pre>
  
  <p>Whereas what I want is:</p>
  
  <pre><code>this.country = builder.countryIsSet() &amp;&amp; builder.country != null ? builder.country : AdditionalTaxLineInfo.super.getCountry(); 
  </code></pre>
  
  <p>Thanks!</p>