List<T> flatten<T>(Iterable list) => [ for (var element in list) if (element is! Iterable) element else ...flatten(element as List), ];