Consider the following code. ```dart Iterable<num> a(Iterable<num>? i) => i = (true ? <int>[] : <double>[]); // promotion works Iterable<num> b(Iterable<num>? i) => i = (true ? <int>[] : <int>{}); // promotion works Iterable<num> c(Iterable<num>? i) => i = (true ? <int>[] : <double>{}); // promotion fails! ``` Here functions `a` and `b` compile and run as expected, however function `c` results in an error. ``` A value of type 'Iterable<num>?' can't be returned from the function 'c' because it has a return type of 'Iterable<num>'. ```