| // 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. | 
 |  | 
 | /*@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() {} |