title: What's the purpose of Kotlin's intrinsic `areEqual` method?
body: <p>Let's say I have a </p>
  
  <pre><code>data class Eq(x: Int?)
  </code></pre>
  
  <p>This will generate an <code>equals</code> method that looks something like this</p>
  
  <pre><code>public boolean equals(Object other){
      if(this == other) return true;
      if(!(other instanceof Eq)) return false;
      Eq otherEq = (Eq) other;
      return Intrinsics.areEqual(this.x, otherEq.x);
  }
  </code></pre>
  
  <p>Where intrinsic</p>
  
  <pre><code>public static boolean areEqual(Object first, Object second){
      return first == null ? second == null : first.equals(second);
  }
  </code></pre>
  
  <p>And I don't quite understand the motivation behind that.</p>
  
  <p>What's the benefit in keeping the static invocation as opposed to inlining its implementation?</p>