title: Group types by common base class in given assembly
body: <p>In a given assembly, I want to find all types that have a common base class, but without specifying the base class, for example:</p>
  
  <pre><code>A : Base, IInterface
  B : Base, IInterface
  C : Base, IInterface
  X : Other, IInterface
  Y : Other, IInterface
  </code></pre>
  
  <p>I have 2 groups, A,B,C (inheriting from Base) and X,Y (inheriting from Other). Base and Other are abstract and all implements a common interface.</p>
  
  <p>The method signature could be something like:</p>
  
  <pre><code>public IEnumerable&lt;IGrouping&lt;Type, IEnumerable&lt;Type&gt;&gt;&gt; FindGroups(Assembly assembly, Type @interface)
  {
  }
  </code></pre>
  
  <p>How can I create those groups?</p>