// 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.
// @dart=2.9
/*@testedFeatures=inference*/
library test;

void main() {
  var /*@ type=List<List<String*>*>* */ l = /*@ typeArgs=List<String*>* */ [
    /*@ typeArgs=String* */ ["hi", "world"]
  ];
  var /*@ type=Iterable<List<String*>*>* */ i1 =
      l. /*@target=Iterable.map*/ /*@ typeArgs=List<String*>* */ map(
          /*@ returnType=List<String*>* */ (/*@ type=List<String*>* */ ll) =>
              ll ?? /*@ typeArgs=String* */ []);
  var /*@ type=Iterable<int*>* */ i2 =
      i1. /*@target=Iterable.map*/ /*@ typeArgs=int* */ map(
          /*@ returnType=int* */ (List<String> l) =>
              l. /*@target=List.length*/ length);
  print(i2);
}
