# File lib/generator.rb, line 66
  def initialize(enum = nil, &block)
    if enum
      @block = proc{|g| enum.each{|value| g.yield value}}
    else
      @block = block
    end
    @index = 0
    @queue = []
    @main_thread = nil
    @loop_thread.kill if defined?(@loop_thread)
    @loop_thread = Thread.new do
      Thread.stop
      begin
        @block.call(self)
      rescue
        @main_thread.raise $!
      ensure
        @main_thread.wakeup
      end
    end
    Thread.pass until @loop_thread.stop?
    self
  end