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>*) →* core::bool* {
      core::int* :await_jump_var = 0;
      dynamic :await_ctx_var;
      return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
        {
          {
            :iterator.{core::_SyncIterator::_current} = null;
            [yield] true;
          }
        }
        return false;
      };
    }
    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};
}
