Here's a self-contained example that demonstrates what I mean:<div><br></div><div><div>class Obs {}</div><div>class SubObs extends Obs {}</div><div><br></div><div>fun void count(Obs elems[]) { <<< elems.size() >>>; }</div>
<div><br></div><div>// works...</div><div>[(new Obs), (new Obs)] @=> Obs @ x1[];</div><div>count(x1);</div><div><br></div><div>// works but is really ugly..</div><div>[(new SubObs) $ Obs, (new SubObs) $ Obs] @=> Obs x2[];</div>
<div>count(x2);</div><div><br></div><div>// Doesn't work: needs casting.  but what's the syntax?</div><div>[(new SubObs), (new SubObs)] @=> SubObs @ x3[];</div><div>count(x3);</div><div><br></div></div>