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<core::Null?>*) →* core::bool* {
      core::int* :await_jump_var = 0;
      dynamic :await_ctx_var;
      return (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_gen);
  };
  core::Iterable<dynamic>* y = f.call();
  core::Iterable<core::String*>* z = f.call();
  core::String* s = f.call().{core::Iterable::first};
}
