library #lib;
import self as self;
import "dart:core" as core;
import "dart:_interceptors" as _in;

static method main() → void {
  core::print( block {
    final _in::JSArray<core::List<core::int*>*> _list = _in::JSArray::allocateGrowable<core::List<core::int*>*>(10);
    for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::int) →* core::int}) {
      core::int* i = i;
      _list.{_in::JSArray::[]=}{Invariant,BoundsSafe}(i, block {
        final core::int _length = i;
        final _in::JSArray<core::int*> _list = _in::JSArray::allocateGrowable<core::int*>(_length);
        for (core::int i = 0; i.{core::num::<}(_length){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::int) →* core::int}) {
          core::int* i = i;
          _list.{_in::JSArray::[]=}{Invariant,BoundsSafe}(i, i.{core::num::+}(1){(core::num*) →* core::int*}){(core::int, core::int*) → void};
        }
      } =>_list){(core::int, core::List<core::int*>*) → void};
    }
  } =>_list);
}
