library test /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

static method getListOfString() → core::List<core::String>
  return #C1;
static method foo() → void {
  core::List<dynamic> myList = self::getListOfString();
  myList.{core::Iterable::map}<core::int>((dynamic type) → core::int => 42){((dynamic) → core::int) → core::Iterable<core::int>};
}
static method bar() → void {
  dynamic list;
  try {
    list = <core::String>[];
  }
  on core::Object catch(final core::Object _) {
    return;
  }
  list{dynamic}.map((dynamic value) → core::String => "${value}");
}
static method main() → dynamic {}

constants  {
  #C1 = <core::String*>[]
}
