title: Is it possible to provide multiple delegate types with a single class?
body: <p>I'd like to provide multiple different delegates from a single class, with differing types.  For example:</p>
  
  <pre><code>class A {
    val instanceOfB = B()
  
    val aNumber: SomeType by instanceOfB
    val anotherNumber: SomeOtherType by instanceOfB
  }
  
  class B {
    operator fun &lt;T1: SomeType&gt; getValue(thisRef: Any?, property: KProperty&lt;T1&gt;): T1 {
      return SomeType()
    }
  
    operator fun &lt;T2: SomeOtherType&gt; getValue(thisRef: Any?, property: KProperty&lt;T2&gt;): T2 {
      return SomeOtherType()
    }
  }
  
  open class SomeType {}
  open class SomeOtherType {}
  </code></pre>
  
  <p>This example gives the following compiler error:
  <code>'operator' modifier is inapplicable on this function: second parameter must be of type KProperty&lt;*&gt; or its supertype</code></p>
  
  <p>Is there some way to specify the generic type arguments such that I can achieve this?</p>