// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/*@testedFeatures=inference*/

void test() {
  List<dynamic> l = /*@typeArgs=dynamic*/ [1, "hello"];
  List<String> l2 = l
      . /*@target=Iterable::map*/ /*@typeArgs=String*/ map(
          /*@returnType=String*/ (dynamic element) =>
              element. /*@target=Object::toString*/ toString())
      . /*@target=Iterable::toList*/ toList();
}

void main() {}
