library test;
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::_GrowableList::•<core::String*>(0);
  }
  on dynamic catch(final dynamic _) {
    return;
  }
  list{dynamic}.map((dynamic value) → core::String* => "${value}");
}
static method main() → dynamic {}

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