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

static method sideEffect<T extends core::Object? = dynamic>(core::List<self::sideEffect::T%> list) → core::List<self::sideEffect::T%> {
  core::print(self::sideEffect::T%);
  return list;
}
static method method() → dynamic {
  {
    final synthesized dynamic #0#0 = self::sideEffect<dynamic>(<dynamic>[]);
    if(!true)
      throw new core::StateError::•("Pattern matching error");
  }
  block {
    final synthesized dynamic #1#0 = self::sideEffect<dynamic>(<dynamic>[]);
    if(!true)
      throw new core::StateError::•("Pattern matching error");
  } =>#1#0;
  {
    final synthesized core::List<dynamic> #2#0 = self::sideEffect<dynamic>(<dynamic>[]);
    if(true) {
      core::print(true);
    }
  }
  #L1:
  {
    final synthesized core::List<dynamic> #3#0 = self::sideEffect<dynamic>(<dynamic>[]);
    {
      if(true) {
      }
    }
  }
  return block {
    core::bool #t1;
    final synthesized core::List<dynamic> #4#0 = self::sideEffect<dynamic>(<dynamic>[]);
    #L2:
    {
      {
        if(true) {
          #t1 = true;
          break #L2;
        }
      }
      throw new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable type.");
    }
  } =>#t1;
}
