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

static method method() → dynamic {
  hoisted has-declared-initializer core::double v1;
  hoisted has-declared-initializer core::num v2;
  {
    final synthesized core::List<core::double> #0#0 = core::_GrowableList::_literal1<core::double>(42.0);
    synthesized core::bool #0#3;
    synthesized core::bool #0#3#isSet = false;
    synthesized core::double #0#4;
    synthesized core::bool #0#4#isSet = false;
    if(!((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::double && (let final core::double #t3 = v1 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)) && ((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::num && (let final core::double #t7 = v2 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)))))
      throw{for-error-handling} new core::StateError::•("Pattern matching error");
  }
  core::print(v1);
  core::print(v2);
}

constants  {
  #C1 = 1
}
