code: func Close() {
  	// we ignore errors here, because we can't really do anything about them
  	Clear(0, 0)
  	Flush()
  
  	// stop event producer
  	cancel_comm <- true
  	set_event(interrupt)
  	select {
  	case <-input_comm:
  	default:
  	}
  	<-cancel_done_comm
  
  	set_console_screen_buffer_size(out, orig_size)
  	set_console_window_info(out, &orig_window)
  	set_console_cursor_info(out, &orig_cursor_info)
  	set_console_cursor_position(out, coord{})
  	set_console_mode(in, orig_mode)
  	syscall.Close(in)
  	syscall.Close(out)
  	syscall.Close(interrupt)
  	IsInit = false
  }
docs: // Finalizes termbox library, should be called after successful initialization
  // when termbox's functionality isn't required anymore.