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

class Foo extends core::Object {
  field core::List<dynamic> list = core::_GrowableList::_literal3<dynamic>(1, 2, 3);
  synthetic constructor •() → self::Foo
    : super core::Object::•()
    ;
  set first(dynamic x) → void
    return let final core::List<dynamic> #t1 = this.{self::Foo::list}{core::List<dynamic>} in let final core::int #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int, dynamic) → void} in #t3;
  operator []=(dynamic x, dynamic y) → void
    return let final core::List<dynamic> #t5 = this.{self::Foo::list}{core::List<dynamic>} in let final core::int #t6 = x as{TypeError,ForDynamic,ForNonNullableByDefault} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int, dynamic) → void} in #t7;
  method clear() → void
    return this.{self::Foo::list}{core::List<dynamic>}.{core::List::clear}(){() → void};
}
static method main() → dynamic {
  new self::Foo::•().{self::Foo::first} = 4;
  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) → void};
  new self::Foo::•().{self::Foo::clear}(){() → void};
}


Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///void_methods.dart:7:24 -> IntConstant(0)
Extra constant evaluation: evaluated: 36, effectively constant: 1
