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

static method main() → dynamic {
  () → core::Iterable<core::Null> f = () → core::Iterable<core::Null> /* originally sync* */ {
    dynamic :await_jump_var = 0;
    dynamic :await_ctx_var;
    function :sync_op(core::_SyncIterator<core::Null> :iterator) → core::bool yielding {
      {
        {
          :iterator.{core::_SyncIterator::_current} = null;
          [yield] true;
        }
      }
      return false;
    }
    return new core::_SyncIterable::•<core::Null>(:sync_op);
  };
  core::Iterable<dynamic> y = f.call();
  core::Iterable<core::String> z = f.call();
  core::String s = f.call().{core::Iterable::first};
}
