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

static method main() → dynamic {
  lowered final core::int? #i;
  function #i#get() → core::int
    return let final core::int? #t1 = #i in #t1 == null ?{core::int} throw new _in::LateError::localNI("i") : #t1{core::int};
  function #i#set(core::int i#param) → dynamic
    if(#i == null)
      return #i = i#param;
    else
      throw new _in::LateError::localAI("i");
  #i#set(1){(core::int) → dynamic};
  core::print(#i#get(){() → core::int});
  lowered final core::int? #j;
  function #j#get() → core::int
    return let final core::int? #t2 = #j in #t2 == null ?{core::int} throw new _in::LateError::localNI("j") : #t2{core::int};
  function #j#set(core::int j#param) → dynamic
    if(#j == null)
      return #j = j#param;
    else
      throw new _in::LateError::localAI("j");
  block {
    final synthesized dynamic #0#0 = (2, "Hello");
    if(!(let final dynamic #t3 = #j#set(#0#0{(core::int, core::String)}.$1{core::int}){(core::int) → dynamic} in true))
      throw new core::StateError::•("Pattern matching error");
  } =>#0#0;
  core::print(#j#get(){() → core::int});
}
