ocalMin st res _ ts = do
  putTemp (S.terminal st)
    ( short 26 (oneLine (P.reason res))
   ++ " (after " ++ number (S.numSuccessTests st+1) "test"
   ++ concat [ " and "
            ++ show (S.numSuccessShrinks st)
            ++ concat [ "." ++ show (S.numTryShrinks st) | S.numTryShrinks st > 0 ]
            ++ " shrink"
            ++ (if S.numSuccessShrinks st == 1
                && S.numTryShrinks st == 0
                then "" else "s")
             | S.numSuccessShrinks st > 0 || S.numTryShrinks st > 0
             ]
   ++ ")..."
    )
  r <- tryEvaluate ts
  case r of
    Left err ->
      localMinFound st
         (exception "Exception while generating shrink-list" err) { callbacks = callbacks res }
    Right ts' -> localMin' st res ts'

localMin st res _ ts = do
  putTemp (S.terminal st)
    ( short 26 (oneLine (P.reason res))
   ++ " (after " ++ number (S.numSuccessTests st+1) "test"
   ++ concat [ " and "
            ++ show (S.numSuccessShrinks st)
            ++ concat [ "." ++ show (S.numTryShrinks st) | S.numTryShrinks st > 0 ]
            ++ " shrink"
            ++ (if S.numSuccessShrinks st == 1
                && S.numTryShrinks st == 0
                then "" else "s")
             | S.numSuccessShrinks st > 0 || S.numTryShrinks st > 0
             ]
   ++ ")..."
    )
  r <- tryEvaluate ts
  case r of
    Left err ->
      localMinFound st
         (exception "Exception while generating shrink-list" err) { callbacks = callbacks res }
    Right ts' -> localMin' st res ts'
localMin st res _ ts = do
  putTemp (S.terminal st)
    ( short 26 (oneLine (P.reason res))
   ++ " (after " ++ number (S.numSuccessTests st+1) "test"
   ++ concat [ " and "
            ++ show (S.numSuccessShrinks st)
            ++ concat [ "." ++ show (S.numTryShrinks st) | S.numTryShrinks st > 0 ]
            ++ " shrink"
            ++ (if S.numSuccessShrinks st == 1
                && S.numTryShrinks st == 0
                then "" else "s")
             | S.numSuccessShrinks st > 0 || S.numTryShrinks st > 0
             ]
   ++ ")..."
    )
  r <- tryEvaluate ts
  case r of
    Left err ->
      localMinFound st
         (exception "Exception while generating shrink-list" err) { callbacks = callbacks res }
    Right ts' -> localMin' st res ts'