Polymorphic this Typing seems like a major change with many possible corner cases. I think Dart .. operator is a better solution<p><pre><code>    newModel.setupBase().setupAdvanced();
</code></pre>
becomes<p><pre><code>    newModel..setupBase()..setupAdvanced();</code></pre>