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 core::List<dynamic> #0#0 = self::sideEffect<dynamic>(<dynamic>[]);
    if(!true)
      throw new core::StateError::•("Pattern matching error");
  }
  {
    final synthesized core::List<dynamic> #1#0 = self::sideEffect<dynamic>(<dynamic>[]);
    if(!true)
      throw new core::StateError::•("Pattern matching error");
  }
  {
    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;
}
