title: How Default argument and @JvmOverloads work on Kotlin?
body: <p>When we created fun with Kotlin like this</p>
  
  <pre><code>fun foo(bar: Int = 0, baz: Int) { /* ... */ }
  
  foo(baz = 1) // The default value bar = 0 is used
  </code></pre>
  
  <p>So in java we need to write it this way
  E.g.</p>
  
  <p>don't need to write</p>
  
  <pre><code>void foo(int bar, int baz){
  ...
  }
  
  void foo(int baz){
  foo(0,baz);
  }
  </code></pre>
  
  <p>Let's imagine if we have 10+ params. I wonder how Kotlin handle this. Will Kotlin generate all possible methods? Or it just generate the method that programmer really use?</p>