title: Complex type bounds
body: <p>Assuming a given a class hierarchy </p>
  
  <pre><code>class Region{};
  class Shape extends Region{};
  class Triangle   extends Shape{};
  class Circle     extends Shape{};
  </code></pre>
  
  <p>Is there a way to define a method accepting only <code>Shape</code> or <code>Triangle</code>, but not a <code>Circle</code> ?  </p>
  
  <p>I can preform run-time type check and throw exception, but compile-time type check would be much better. <br/>
  (For clarifications: by writing "given a class hierarchy" I mean it can not be changed).</p>