The part you&#x27;re missing is the `this` in `Extension.this`. This method is a member of Extension&lt;T&gt;, and it returns an Extension&lt;S&gt;. So `this` (of type Extension&lt;T&gt;) is transformed by the method to Extension&lt;S&gt;.