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

import "dart:math" as math;

class Trace extends core::Object {
  field core::List<self::Frame> frames = core::_GrowableList::•<self::Frame>(0);
  synthetic constructor •() → self::Trace
    : super core::Object::•()
    ;
}
class Frame extends core::Object {
  field core::String location = "";
  synthetic constructor •() → self::Frame
    : super core::Object::•()
    ;
}
static method main() → dynamic {
  core::List<self::Trace> traces = core::_GrowableList::•<self::Trace>(0);
  core::int longest = traces.{core::Iterable::map}<core::int>((self::Trace trace) → core::int {
    return trace.{self::Trace::frames}{core::List<self::Frame>}.{core::Iterable::map}<core::int>((self::Frame frame) → core::int => frame.{self::Frame::location}{core::String}.{core::String::length}{core::int}){((self::Frame) → core::int) → core::Iterable<core::int>}.{core::Iterable::fold}<core::int>(0, #C2){(core::int, (core::int, core::int) → core::int) → core::int};
  }){((self::Trace) → core::int) → core::Iterable<core::int>}.{core::Iterable::fold}<core::int>(0, #C2){(core::int, (core::int, core::int) → core::int) → core::int};
}

constants  {
  #C1 = static-tearoff math::max
  #C2 = instantiation #C1 <core::int*>
}
