title: Ignoring certain properties when generating equals(), hashCode(), etc
body: <p>Let's say I have a data class that has three properties:</p>
  
  <pre><code>data class Product(
      val id: Int,
      val name: String,
      val manufacturer: String)
  </code></pre>
  
  <p>If I understand correctly, Kotlin will generate <code>equals()</code> and <code>hashCode()</code> using all the three properties, which will be like:</p>
  
  <pre><code>override fun equals(other: Any?): Boolean {
      if (this === other) return true
      if (other == null || javaClass != other.javaClass) return false
      val that = other as Product?
      return id == that.id &amp;&amp;
              name == that!!.name &amp;&amp;
              manufacturer == that.manufacturer
  }
  
  override fun hashCode(): Int {
      return Objects.hash(id, name, manufacturer)
  }
  </code></pre>
  
  <p>So what if I don't want <code>id</code> to be used in <code>equals()</code> and <code>hashCode()</code>? Is there a way to tell Kotlin to ignore certain properties when generating these functions? How about <code>toString()</code> and <code>compareTo()</code>?</p>