// Copyright (c) 2017, 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;

import 'dart:math' show Random;

test2(List<num> o) {
  var /*@type=Iterable<num*>**/ y =
      o. /*@typeArgs=num**/ /*@target=Iterable.map*/ map(
          /*@returnType=num**/ (/*@type=num**/ x) {
    if (new Random(). /*@target=dart.math::Random.nextBool*/ nextBool()) {
      return x. /*@target=num.toInt*/ toInt() /*@target=num.+*/ + 1;
    } else {
      return x. /*@target=num.toDouble*/ toDouble();
    }
  });
  Iterable<num> w = y;
  Iterable<int> z = /*info:ASSIGNMENT_CAST*/ y;
}

main() {}
