library;
import self as self;
import "dart:core" as core;

static method main() → dynamic {
  core::List<core::int> list = let final core::List<core::int> #t1 = <core::int>[1] in let final void #t2 = #t1.{core::List::add}(2) in let final void #t3 = #t1.{core::List::add}(3) in let final void #t4 = #t1.{core::List::addAll}(<core::int>[4, 5]) in #t1;
  core::print(list);
  let final core::List<core::int> #t5 = list in let final void #t6 = #t5.{core::List::add}(2) in let final core::int #t7 = #t5.{core::List::length} in let final core::int #t8 = #t5.{core::List::length} = 0 in #t5;
  core::print(list);
  let final core::List<core::int> #t9 = list in let final void #t10 = #t9.{core::List::add}(2) in let final core::int #t11 = #t9.{core::List::[]}(0) in let final void #t12 = #t9.{core::List::[]=}(0, 87) in #t9;
  core::print(list);
  list = let final core::List<core::int> #t13 = <core::int>[let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/cascade.dart:26:5: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
 - 'List' is from 'dart:core'.
Try changing the type of the left hand side, or casting the right hand side to 'int'.
    [1]
    ^" in <core::int>[1] as{TypeError} core::int] in let final core::String #t15 = (let final core::int #t16 = #t13.{core::Iterable::first} in invalid-expression "pkg/front_end/testcases/cascade.dart:28:13: Error: The getter 'last' isn't defined for the class 'int'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
    ..first.last.toString()
            ^^^^").{core::Object::toString}() in let final core::String #t17 = (let final core::int #t18 = #t13.{core::Iterable::first} in invalid-expression "pkg/front_end/testcases/cascade.dart:29:12: Error: The method '[]' isn't defined for the class 'int'.
Try correcting the name to the name of an existing method, or defining a method named '[]'.
    ..first[0].toString()
           ^^").{core::Object::toString}() in let final core::String #t19 = (let final core::int #t20 = #t13.{core::List::[]}(0) in invalid-expression "pkg/front_end/testcases/cascade.dart:30:11: Error: The getter 'last' isn't defined for the class 'int'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'last'.
    ..[0].last.toString();
          ^^^^").{core::Object::toString}() in #t13;
  core::print(list);
}
