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* */ {
    function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
      core::int* :await_jump_var = 0;
      dynamic :await_ctx_var;
      function :sync_op(core::_SyncIterator<dynamic>* :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
        {
          {
            :iterator.{core::_SyncIterator::_current} = null;
            [yield] true;
          }
        }
        return false;
      }
      return :sync_op;
    }
    return new core::_SyncIterable::•<core::Null?>(:sync_op_gen);
  };
  core::Iterable<dynamic>* y = f.call();
  core::Iterable<core::String*>* z = f.call();
  core::String* s = f.call().{core::Iterable::first};
}
