{ω α : Type} →
  {prio : α → Thunk ω} →
    {ε : α → Type} →
      [inst : LinearOrder ω] →
        [inst_1 : (a : α) → Estimator (prio a) (ε a)] →
          [I : ∀ (a : α), WellFoundedGT ↑(Set.range (EstimatorData.bound (prio a)))] →
            {m : Type → Type} →
              [Monad m] →
                {β : Type} →
                  [inst_3 : Ord α] → {maxSize : Option ℕ} → BestFirstQueue prio ε m β maxSize → MLList m (α × β)