title: I cannot undetstand how works "isSubtypeOf" in Dart mirrors
body: <p>According to this test, I can not invoke the method "method" with an argument "list" because argument type is not compatible with the type of the method parameter.</p>
  
  <p>Where I am wrong in my test?</p>
  
  <pre class="lang-dart prettyprint-override"><code>import "dart:mirrors";
  
  void main() {
    var list = new List&lt;String&gt;();
    var listMirror = reflectClass(list.runtimeType);
    // Is "List&lt;String&gt;" subtype of "List&lt;String&gt;"?
    print(listMirror.isSubtypeOf(listMirror));
    // Method with parameter "List&lt;String&gt;"
    var method = (List&lt;String&gt; list) {};
    var closure = reflect(method) as ClosureMirror;
    var function = closure.function;
    var parameter = function.parameters.first;
    // Is "List&lt;String&gt;" subtype of "List&lt;String&gt;"?
    print(parameter.type.isSubtypeOf(listMirror));
    print(listMirror.isSubtypeOf(parameter.type));
    // Invoke method with arg: "List&lt;String&gt;" on param "List&lt;String&gt;"
    method(list);
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>true
  false
  false
  </code></pre>
  
  <p>P.S.</p>
  
  <p>Maybe I not understand something but it still not works.</p>
  
  <pre class="lang-dart prettyprint-override"><code>import "dart:mirrors";
  
  void main() {
    var stringMirror = reflectClass(String);
    // Query "List&lt;int&gt; get codeUnits"
    MethodMirror method = stringMirror.declarations.values
        .where((e) =&gt; e.simpleName == #codeUnits).first;
  
    // List&lt;int&gt;
    var returnType = method.returnType;
    print(returnType);
  
    // List
    var baseType = reflectClass(List);
    print(baseType);
  
    // List&lt;int&gt; is List
    print(returnType.isSubtypeOf(baseType));
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>ClassMirror on 'List'
  ClassMirror on 'List'
  false
  </code></pre>