diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,16 @@
 # Revision history for explainable-predicates
 
+## 0.1.1.0 -- 2021-09-25
+
+* `Predicate` now has a `Contravariant` instance.
+* `==~` is an infix synonym for `accept`.
+* Cabal `regex` and `containers` flags (default true) enable regex and
+  container predicates, respectively.
+* Cabal `dev` flag (default false) turns GHC warnings into errors.
+* The `inBranch` and `qADT` combinators are now available for more convenient
+  matching of algebraic data types and fields.
+* QuickCheck integration is now available in `Test.Predicates.QuickCheck`.
+
 ## 0.1.0.0 -- 2021-09-18
 
 * First version. Released on an unsuspecting world.
diff --git a/explainable-predicates.cabal b/explainable-predicates.cabal
--- a/explainable-predicates.cabal
+++ b/explainable-predicates.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               explainable-predicates
-version:            0.1.0.0
+version:            0.1.1.0
 synopsis:           Predicates that can explain themselves.
 description:        Explainable predicates are essentially functions from types
                     to 'Bool' which can additionally describe themselves and
@@ -20,37 +20,82 @@
 
 extra-source-files: CHANGELOG.md
 
-tested-with:        GHC == 8.4.4 || == 8.6.5 || == 8.8.4 || == 8.10.4 || == 9.0.1
+tested-with:        GHC == 8.6.5 || == 8.8.4 || == 8.10.4 || == 9.0.1
 
 source-repository head
     type:     git
     location: git://github.com/cdsmith/explainable-predicates.git
 
+flag regex
+    description:       Enable regular expression matching
+    manual:            True
+    default:           True
+
+flag containers
+    description:       Enable container matching, which depends on mono-traversable
+    manual:            True
+    default:           True
+
+flag quickcheck
+    description:       Enable QuickCheck integration
+    manual:            True
+    default:           True
+
+flag dev
+    description:       Developer build
+    manual:            True
+    default:           False
+
 library
-    exposed-modules:  Test.Predicates,
-                      Test.Predicates.Internal.FlowMatcher
-    other-modules:    Test.Predicates.Internal.Util
-    build-depends:    array >= 0.5.2 && < 0.6,
-                      base >=4.11.0 && < 4.16,
-                      mono-traversable >= 1.0.15 && < 1.1,
-                      regex-tdfa >= 1.3.1 && < 1.4,
-                      syb >= 0.7.2 && < 0.8,
-                      template-haskell >= 2.13.0 && < 2.18,
-    hs-source-dirs:   src
-    default-language: Haskell2010
-    ghc-options:      -Wall -Wcompat -Wincomplete-uni-patterns
+    exposed-modules:     Test.Predicates,
+                         Test.Predicates.Internal.FlowMatcher
+    other-modules:       Test.Predicates.Internal.Util
+    build-depends:       array >= 0.5.2 && < 0.6,
+                         base >=4.12.0 && < 4.16,
+                         syb >= 0.7.2 && < 0.8,
+                         template-haskell >= 2.13.0 && < 2.18,
+    hs-source-dirs:      src
+    default-language:    Haskell2010
+    ghc-options:         -Wall -Wcompat -Wincomplete-uni-patterns
 
+    if flag(regex)
+        build-depends:   regex-tdfa >= 1.3.1 && < 1.4,
+        cpp-options:     -DREGEX
+
+    if flag(containers)
+        build-depends:   mono-traversable >= 1.0.15 && < 1.1,
+        cpp-options:     -DCONTAINERS
+
+    if flag(quickcheck)
+        build-depends:   QuickCheck >= 2.8 && < 2.15,
+        exposed-modules: Test.Predicates.QuickCheck
+
+    if flag(dev)
+        ghc-options:     -Werror
+
 test-suite tests
-    type:             exitcode-stdio-1.0
-    main-is:          Main.hs
-    other-modules:    DocTests.All,
-                      DocTests.Test.Predicates,
-                      DocTests.Test.Predicates.Internal.FlowMatcher
-    build-depends:    base,
-                      doctest-exitcode-stdio,
-                      doctest-lib,
-                      explainable-predicates,
-                      hspec,
-    hs-source-dirs:   test
-    default-language: Haskell2010
-    ghc-options:      -threaded -Wall -Wcompat -Wincomplete-uni-patterns
+    type:                exitcode-stdio-1.0
+    main-is:             Main.hs
+    build-depends:       base,
+                         doctest-exitcode-stdio,
+                         doctest-lib,
+                         explainable-predicates,
+                         hspec,
+    hs-source-dirs:      test
+    default-language:    Haskell2010
+    ghc-options:         -threaded -Wall -Wcompat -Wincomplete-uni-patterns
+
+    if flag(regex)
+        cpp-options:     -DREGEX
+
+    if flag(containers)
+        cpp-options:     -DCONTAINERS
+
+    if flag(regex) && flag(containers)
+        other-modules:   DocTests.All,
+                         DocTests.Test.Predicates,
+                         DocTests.Test.Predicates.Internal.FlowMatcher
+        cpp-options:     -DDOCTESTS
+
+    if flag(dev)
+        ghc-options:     -Werror
diff --git a/src/Test/Predicates.hs b/src/Test/Predicates.hs
--- a/src/Test/Predicates.hs
+++ b/src/Test/Predicates.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
@@ -17,8 +18,11 @@
 module Test.Predicates
   ( -- * The Predicate type
     Predicate (..),
+    (==~),
 
     -- * Predicate combinators
+
+    -- ** Basic predicates
     anything,
     eq,
     neq,
@@ -30,22 +34,34 @@
     nothing,
     left,
     right,
+
+    -- ** Zips
     zipP,
     zip3P,
     zip4P,
     zip5P,
+
+    -- ** Logic
     andP,
     orP,
     notP,
+#ifdef REGEX
+    -- ** Regular expressions
+    matchesRegex,
+    matchesCaseInsensitiveRegex,
+    containsRegex,
+    containsCaseInsensitiveRegex,
+#endif
+
+#ifdef CONTAINERS
+    -- ** Strings and sequences
     startsWith,
     endsWith,
     hasSubstr,
     hasSubsequence,
     caseInsensitive,
-    matchesRegex,
-    matchesCaseInsensitiveRegex,
-    containsRegex,
-    containsCaseInsensitiveRegex,
+
+    -- ** Containers
     isEmpty,
     nonEmpty,
     sizeIs,
@@ -57,6 +73,9 @@
     containsOnly,
     keys,
     values,
+#endif
+
+    -- ** Numerics
     approxEq,
     positive,
     negative,
@@ -65,32 +84,31 @@
     finite,
     infinite,
     nAn,
+
+    -- ** Miscellaneous
     is,
     qIs,
     with,
     qWith,
+    inBranch,
+    qADT,
     qMatch,
     typed,
   )
 where
 
-import Data.Char (toUpper)
+import Control.Monad (replicateM)
+import Data.Functor.Contravariant (Contravariant (..))
 import Data.List (intercalate)
-import Data.Maybe (catMaybes, isJust, isNothing)
-import Data.MonoTraversable (Element, MonoFoldable (..), MonoFunctor (..))
-import qualified Data.Sequences as Seq
+import Data.Maybe (isNothing)
 import Data.Typeable (Proxy (..), Typeable, cast, typeRep)
-import GHC.Exts (IsList (Item, toList))
 import GHC.Stack (HasCallStack, callStack)
-import Language.Haskell.TH (ExpQ, PatQ, pprint)
+import Language.Haskell.TH
 import Language.Haskell.TH.Syntax (lift)
-import Test.Predicates.Internal.FlowMatcher (bipartiteMatching)
-import Test.Predicates.Internal.Util
-  ( isSubsequenceOf,
-    locate,
-    removeModNames,
-    withLoc,
-  )
+import Test.Predicates.Internal.Util (locate, removeModNames, withLoc)
+
+#ifdef REGEX
+import Data.Maybe (isJust)
 import Text.Regex.TDFA
   ( CompOption (caseSensitive, lastStarGreedy, newSyntax),
     ExecOption (captureGroups),
@@ -100,8 +118,20 @@
     RegexMaker (makeRegexOpts),
     RegexOptions (defaultCompOpt, defaultExecOpt),
   )
+#endif
 
+#ifdef CONTAINERS
+import Data.Char (toUpper)
+import Data.Maybe (catMaybes)
+import Data.MonoTraversable (Element, MonoFoldable (..), MonoFunctor (..))
+import qualified Data.Sequences as Seq
+import GHC.Exts (IsList (Item, toList))
+import Test.Predicates.Internal.FlowMatcher (bipartiteMatching)
+import Test.Predicates.Internal.Util (isSubsequenceOf)
+#endif
+
 -- $setup
+-- >>> :set -XLambdaCase
 -- >>> :set -XTemplateHaskell
 -- >>> :set -XTypeApplications
 -- >>> :set -Wno-type-defaults
@@ -118,6 +148,15 @@
 
 instance Show (Predicate a) where show = showPredicate
 
+-- | An infix synonym for 'accept'.
+--
+-- >>> eq 1 ==~ 1
+-- True
+-- >>> eq 2 ==~ 1
+-- False
+(==~) :: Predicate a -> a -> Bool
+(==~) = accept
+
 withDefaultExplain ::
   (a -> String) -> String -> ((a -> String) -> Predicate a) -> Predicate a
 withDefaultExplain format connector mk = p
@@ -466,98 +505,7 @@
       explain = explain p
     }
 
--- | A 'Predicate' that accepts sequences that start with the given prefix.
---
--- >>> accept (startsWith "fun") "fungible"
--- True
--- >>> accept (startsWith "gib") "fungible"
--- False
-startsWith :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t
-startsWith pfx = withDefaultExplain show " " $ \explainImpl ->
-  Predicate
-    { showPredicate = "starts with " ++ show pfx,
-      showNegation = "doesn't start with " ++ show pfx,
-      accept = (pfx `Seq.isPrefixOf`),
-      explain = explainImpl
-    }
-
--- | A 'Predicate' that accepts sequences that end with the given suffix.
---
--- >>> accept (endsWith "ow") "crossbow"
--- True
--- >>> accept (endsWith "ow") "trebuchet"
--- False
-endsWith :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t
-endsWith sfx = withDefaultExplain show " " $ \explainImpl ->
-  Predicate
-    { showPredicate = "ends with " ++ show sfx,
-      showNegation = "doesn't end with " ++ show sfx,
-      accept = (sfx `Seq.isSuffixOf`),
-      explain = explainImpl
-    }
-
--- | A 'Predicate' that accepts sequences that contain the given (consecutive)
--- substring.
---
--- >>> accept (hasSubstr "i") "team"
--- False
--- >>> accept (hasSubstr "i") "partnership"
--- True
-hasSubstr :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t
-hasSubstr s = withDefaultExplain show " " $ \explainImpl ->
-  Predicate
-    { showPredicate = "has substring " ++ show s,
-      showNegation = "doesn't have substring " ++ show s,
-      accept = (s `Seq.isInfixOf`),
-      explain = explainImpl
-    }
-
--- | A 'Predicate' that accepts sequences that contain the given (not
--- necessarily consecutive) subsequence.
---
--- >>> accept (hasSubsequence [1..5]) [1, 2, 3, 4, 5]
--- True
--- >>> accept (hasSubsequence [1..5]) [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0]
--- True
--- >>> accept (hasSubsequence [1..5]) [2, 3, 5, 7, 11]
--- False
-hasSubsequence :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t
-hasSubsequence s = withDefaultExplain show " " $ \explainImpl ->
-  Predicate
-    { showPredicate = "has subsequence " ++ show s,
-      showNegation = "doesn't have subsequence " ++ show s,
-      accept = (s `isSubsequenceOf`),
-      explain = explainImpl
-    }
-
--- | Transforms a 'Predicate' on 'String's or string-like types to match without
--- regard to case.
---
--- >>> accept (caseInsensitive startsWith "foo") "FOOTBALL!"
--- True
--- >>> accept (caseInsensitive endsWith "ball") "soccer"
--- False
--- >>> accept (caseInsensitive eq "time") "TIME"
--- True
--- >>> accept (caseInsensitive gt "NOTHING") "everything"
--- False
-caseInsensitive ::
-  ( MonoFunctor t,
-    MonoFunctor a,
-    Element t ~ Char,
-    Element a ~ Char
-  ) =>
-  (t -> Predicate a) ->
-  (t -> Predicate a)
-caseInsensitive p s =
-  Predicate
-    { showPredicate = "(case insensitive) " ++ show (p s),
-      showNegation = "(case insensitive) " ++ show (notP (p s)),
-      accept = accept capP . omap toUpper,
-      explain = explain capP . omap toUpper
-    }
-  where
-    capP = p (omap toUpper s)
+#ifdef REGEX
 
 -- | A 'Predicate' that accepts 'String's or string-like values matching a
 -- regular expression.  The expression must match the entire argument.
@@ -694,6 +642,103 @@
         }
     exec = defaultExecOpt {captureGroups = False}
 
+#endif
+
+#ifdef CONTAINERS
+
+-- | A 'Predicate' that accepts sequences that start with the given prefix.
+--
+-- >>> accept (startsWith "fun") "fungible"
+-- True
+-- >>> accept (startsWith "gib") "fungible"
+-- False
+startsWith :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t
+startsWith pfx = withDefaultExplain show " " $ \explainImpl ->
+  Predicate
+    { showPredicate = "starts with " ++ show pfx,
+      showNegation = "doesn't start with " ++ show pfx,
+      accept = (pfx `Seq.isPrefixOf`),
+      explain = explainImpl
+    }
+
+-- | A 'Predicate' that accepts sequences that end with the given suffix.
+--
+-- >>> accept (endsWith "ow") "crossbow"
+-- True
+-- >>> accept (endsWith "ow") "trebuchet"
+-- False
+endsWith :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t
+endsWith sfx = withDefaultExplain show " " $ \explainImpl ->
+  Predicate
+    { showPredicate = "ends with " ++ show sfx,
+      showNegation = "doesn't end with " ++ show sfx,
+      accept = (sfx `Seq.isSuffixOf`),
+      explain = explainImpl
+    }
+
+-- | A 'Predicate' that accepts sequences that contain the given (consecutive)
+-- substring.
+--
+-- >>> accept (hasSubstr "i") "team"
+-- False
+-- >>> accept (hasSubstr "i") "partnership"
+-- True
+hasSubstr :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t
+hasSubstr s = withDefaultExplain show " " $ \explainImpl ->
+  Predicate
+    { showPredicate = "has substring " ++ show s,
+      showNegation = "doesn't have substring " ++ show s,
+      accept = (s `Seq.isInfixOf`),
+      explain = explainImpl
+    }
+
+-- | A 'Predicate' that accepts sequences that contain the given (not
+-- necessarily consecutive) subsequence.
+--
+-- >>> accept (hasSubsequence [1..5]) [1, 2, 3, 4, 5]
+-- True
+-- >>> accept (hasSubsequence [1..5]) [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0]
+-- True
+-- >>> accept (hasSubsequence [1..5]) [2, 3, 5, 7, 11]
+-- False
+hasSubsequence :: (Show t, Seq.IsSequence t, Eq (Element t)) => t -> Predicate t
+hasSubsequence s = withDefaultExplain show " " $ \explainImpl ->
+  Predicate
+    { showPredicate = "has subsequence " ++ show s,
+      showNegation = "doesn't have subsequence " ++ show s,
+      accept = (s `isSubsequenceOf`),
+      explain = explainImpl
+    }
+
+-- | Transforms a 'Predicate' on 'String's or string-like types to match without
+-- regard to case.
+--
+-- >>> accept (caseInsensitive startsWith "foo") "FOOTBALL!"
+-- True
+-- >>> accept (caseInsensitive endsWith "ball") "soccer"
+-- False
+-- >>> accept (caseInsensitive eq "time") "TIME"
+-- True
+-- >>> accept (caseInsensitive gt "NOTHING") "everything"
+-- False
+caseInsensitive ::
+  ( MonoFunctor t,
+    MonoFunctor a,
+    Element t ~ Char,
+    Element a ~ Char
+  ) =>
+  (t -> Predicate a) ->
+  (t -> Predicate a)
+caseInsensitive p s =
+  Predicate
+    { showPredicate = "(case insensitive) " ++ show (p s),
+      showNegation = "(case insensitive) " ++ show (notP (p s)),
+      accept = accept capP . omap toUpper,
+      explain = explain capP . omap toUpper
+    }
+  where
+    capP = p (omap toUpper s)
+
 -- | A 'Predicate' that accepts empty data structures.
 --
 -- >>> accept isEmpty ([] :: [Int])
@@ -990,6 +1035,8 @@
       explain = ("in values, " ++) . explain p . map snd . toList
     }
 
+#endif
+
 -- | A 'Predicate' that accepts values of 'RealFloat' types that are close to
 -- the given number.  The expected precision is scaled based on the target
 -- value, so that reasonable rounding error is accepted but grossly inaccurate
@@ -1159,7 +1206,8 @@
 
 -- | A conversion from @a -> 'Bool'@ to 'Predicate'.  This is a fallback that
 -- can be used to build a 'Predicate' that checks anything at all.  However, its
--- description will be less helpful than standard 'Predicate's.
+-- description will be less helpful than standard 'Predicate's.  You can use
+-- 'qIs' instead to get better descriptions using Template Haskell.
 --
 -- >>> accept (is even) 3
 -- False
@@ -1178,8 +1226,7 @@
     }
 
 -- | A Template Haskell splice that acts like 'is', but receives a quoted
--- expression at compile time and has a more helpful description for error
--- messages.
+-- expression at compile time and has a more helpful explanation.
 --
 -- >>> accept $(qIs [| even |]) 3
 -- False
@@ -1202,7 +1249,9 @@
     description = lift . pprint . removeModNames =<< p
 
 -- | A combinator to lift a 'Predicate' to work on a property or computed value
--- of the original value.
+-- of the original value.  The explanations are less helpful that standard
+-- predicates like 'size'.  You can use 'qWith' instead to get better
+-- explanations using Template Haskell.
 --
 -- >>> accept (with abs (gt 5)) (-6)
 -- True
@@ -1223,9 +1272,18 @@
   where
     prop = withLoc (locate callStack "property")
 
--- | A Template Haskell splice that acts like 'is', but receives a quoted typed
--- expression at compile time and has a more helpful description for error
--- messages.
+-- | Use 'with' or 'qWith' instead of 'contramap' to get better explanations.
+instance Contravariant Predicate where
+  contramap f p =
+    Predicate
+      { showPredicate = "in a property: " ++ show p,
+        showNegation = "in a property: " ++ showNegation p,
+        accept = accept p . f,
+        explain = ("in a property: " ++) . explain p . f
+      }
+
+-- | A Template Haskell splice that acts like 'with', but receives a quoted
+-- typed expression at compile time and has a more helpful explanation.
 --
 -- >>> accept ($(qWith [| abs |]) (gt 5)) (-6)
 -- True
@@ -1251,6 +1309,97 @@
     |]
   where
     prop = lift . pprint . removeModNames =<< f
+
+-- | A 'Predicate' that accepts values with a given nested value.  This is
+-- intended to match constructors with arguments.  You can use 'qADT' instead
+-- to get better explanations using Template Haskell.
+--
+-- >>> accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Left 1)
+-- True
+-- >>> accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Left 0)
+-- False
+-- >>> accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Right 1)
+-- False
+inBranch :: String -> (a -> Maybe b) -> Predicate b -> Predicate a
+inBranch name f p =
+  Predicate
+    { showPredicate = "(" ++ name ++ " _)",
+      showNegation = "not (" ++ name ++ " _)",
+      accept = \x -> case f x of Just y -> accept p y; _ -> False,
+      explain = \x -> case f x of
+        Just y -> "In " ++ name ++ ": " ++ explain p y
+        _ -> "Branch didn't match"
+    }
+
+-- A Template Haskell splice which, given a constructor for an abstract data
+-- type, writes a 'Predicate' that matches on that constructor and applies other
+-- 'Predicate's to its fields.
+--
+-- >>> accept $(qADT 'Nothing) Nothing
+-- True
+-- >>> accept $(qADT 'Nothing) (Just 5)
+-- False
+-- >>> accept ($(qADT 'Just) positive) (Just 5)
+-- True
+-- >>> accept ($(qADT 'Just) positive) Nothing
+-- False
+-- >>> accept ($(qADT 'Just) positive) (Just 0)
+-- False
+qADT :: Name -> ExpQ
+qADT conName =
+  do
+    let prettyConName = lift (pprint (removeModNames conName))
+    t <- reify conName >>= (\case
+       DataConI _ ty _ -> pure ty
+       PatSynI _ ty -> pure ty
+       _ -> fail $ "qADT: " ++ show conName ++ " is not a data constructor")
+
+    let n = countArguments t
+    subpreds <- replicateM n (newName "p")
+    let subdescs =
+          map
+            (\p -> [|"(" ++ showPredicate $p ++ ")"|])
+            (varE <$> subpreds)
+    let desc = [|unwords ($prettyConName : $(listE subdescs))|]
+    let negDesc
+          | n == 0 = [|"≠ " ++ $desc|]
+          | otherwise = [|"not (" ++ $desc ++ ")"|]
+    args <- replicateM n (newName "x")
+    let pattern = conP conName (varP <$> args)
+    let acceptExplainFields =
+          listE $
+            zipWith
+              (\p x -> [|(accept $p $x, explain $p $x)|])
+              (varE <$> subpreds)
+              (varE <$> args)
+    y <- newName "y"
+    lamE
+      (varP <$> subpreds)
+      [|
+        let acceptAndExplain $(varP y) = case $(varE y) of
+              $pattern -> Just $acceptExplainFields
+              _ -> Nothing
+         in Predicate
+              { showPredicate = $desc,
+                showNegation = $negDesc,
+                accept = maybe False (all fst) . acceptAndExplain,
+                explain = \x -> case acceptAndExplain x of
+                  Nothing -> "Not a " ++ $prettyConName
+                  Just results ->
+                    let significant
+                          | all fst results = results
+                          | otherwise = filter (not . fst) results
+                     in "In " ++ $prettyConName ++ ": "
+                          ++ intercalate " and " (map snd significant)
+              }
+        |]
+  where
+    countArguments (ForallT _ _ t) = countArguments t
+    countArguments (AppT (AppT ArrowT _) t) = countArguments t + 1
+#if MIN_VERSION_template_haskell(2,17,0)
+    countArguments (AppT (AppT (AppT MulArrowT _) _) t) = countArguments t + 1
+#endif
+    countArguments _ = 0
 
 -- | A Template Haskell splice that turns a quoted pattern into a predicate that
 -- accepts values that match the pattern.
diff --git a/src/Test/Predicates/Internal/Util.hs b/src/Test/Predicates/Internal/Util.hs
--- a/src/Test/Predicates/Internal/Util.hs
+++ b/src/Test/Predicates/Internal/Util.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE FlexibleContexts #-}
 
@@ -5,11 +6,14 @@
 module Test.Predicates.Internal.Util where
 
 import Data.Generics (Data, everywhere, mkT)
-import Data.MonoTraversable (Element)
-import qualified Data.Sequences as Seq
 import GHC.Stack (CallStack, getCallStack, prettySrcLoc)
 import Language.Haskell.TH.Syntax (NameFlavour (..))
 
+#ifdef CONTAINERS
+import Data.MonoTraversable (Element)
+import qualified Data.Sequences as Seq
+#endif
+
 -- | A value together with its source location.
 data Located a = Loc (Maybe String) a deriving (Functor)
 
@@ -30,6 +34,8 @@
 choices [] = []
 choices (x : xs) = (x, xs) : (fmap (x :) <$> choices xs)
 
+#ifdef CONTAINERS
+
 -- | Checks if one sequence is a subsequence of another.
 isSubsequenceOf :: (Seq.IsSequence t, Eq (Element t)) => t -> t -> Bool
 xs `isSubsequenceOf` ys = case Seq.uncons xs of
@@ -37,6 +43,8 @@
   Just (x, xs') -> case Seq.uncons (snd (Seq.break (== x) ys)) of
     Nothing -> False
     Just (_, ys') -> xs' `isSubsequenceOf` ys'
+
+#endif
 
 -- | Removes all module names from Template Haskell names in the given value, so
 -- that it will pretty-print more cleanly.
diff --git a/src/Test/Predicates/QuickCheck.hs b/src/Test/Predicates/QuickCheck.hs
new file mode 100644
--- /dev/null
+++ b/src/Test/Predicates/QuickCheck.hs
@@ -0,0 +1,20 @@
+-- | QuickCheck integration for 'Predicate'
+module Test.Predicates.QuickCheck (satisfies) where
+
+import Test.Predicates (Predicate (accept, explain))
+import Test.QuickCheck (Property, counterexample)
+
+-- $setup
+-- >>> :set -XExtendedDefaultRules
+-- >>> :set -Wno-type-defaults
+-- >>> import Test.Predicates
+-- >>> import Test.QuickCheck
+
+-- | QuickCheck property that checks if a predicate is satisfied.
+--
+-- prop> \(Positive x) -> [0 .. x] `satisfies` (containsAll [eq 1, eq 2])
+-- *** Failed! Falsified (after 1 test):
+-- Positive {getPositive = 1}
+-- Missing: 2
+satisfies :: a -> Predicate a -> Property
+x `satisfies` p = counterexample (explain p x) (accept p x)
diff --git a/test/DocTests/Test/Predicates.hs b/test/DocTests/Test/Predicates.hs
--- a/test/DocTests/Test/Predicates.hs
+++ b/test/DocTests/Test/Predicates.hs
@@ -1,928 +1,959 @@
 -- Do not edit! Automatically created with doctest-extract from src/Test/Predicates.hs
-{-# LINE 90 "src/Test/Predicates.hs" #-}
-
-{-# OPTIONS_GHC -XTemplateHaskell #-}
-{-# OPTIONS_GHC -XTypeApplications #-}
-{-# OPTIONS_GHC -Wno-type-defaults #-}
-module DocTests.Test.Predicates where
-
-import Test.Predicates
-import Test.DocTest.Base
-import qualified Test.DocTest.Driver as DocTest
-
-{-# LINE 94 "src/Test/Predicates.hs" #-}
-
-test :: DocTest.T ()
-test = do
- DocTest.printPrefix "Test.Predicates:121: "
-{-# LINE 121 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 121 "src/Test/Predicates.hs" #-}
-      (accept anything "foo")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:123: "
-{-# LINE 123 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 123 "src/Test/Predicates.hs" #-}
-      (accept anything undefined)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:136: "
-{-# LINE 136 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 136 "src/Test/Predicates.hs" #-}
-      (accept (eq "foo") "foo")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:138: "
-{-# LINE 138 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 138 "src/Test/Predicates.hs" #-}
-      (accept (eq "foo") "bar")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:154: "
-{-# LINE 154 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 154 "src/Test/Predicates.hs" #-}
-      (accept (neq "foo") "foo")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:156: "
-{-# LINE 156 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 156 "src/Test/Predicates.hs" #-}
-      (accept (neq "foo") "bar")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:163: "
-{-# LINE 163 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 163 "src/Test/Predicates.hs" #-}
-      (accept (gt 5) 4)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:165: "
-{-# LINE 165 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 165 "src/Test/Predicates.hs" #-}
-      (accept (gt 5) 5)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:167: "
-{-# LINE 167 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 167 "src/Test/Predicates.hs" #-}
-      (accept (gt 5) 6)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:181: "
-{-# LINE 181 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 181 "src/Test/Predicates.hs" #-}
-      (accept (geq 5) 4)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:183: "
-{-# LINE 183 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 183 "src/Test/Predicates.hs" #-}
-      (accept (geq 5) 5)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:185: "
-{-# LINE 185 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 185 "src/Test/Predicates.hs" #-}
-      (accept (geq 5) 6)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:198: "
-{-# LINE 198 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 198 "src/Test/Predicates.hs" #-}
-      (accept (lt 5) 4)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:200: "
-{-# LINE 200 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 200 "src/Test/Predicates.hs" #-}
-      (accept (lt 5) 5)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:202: "
-{-# LINE 202 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 202 "src/Test/Predicates.hs" #-}
-      (accept (lt 5) 6)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:209: "
-{-# LINE 209 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 209 "src/Test/Predicates.hs" #-}
-      (accept (leq 5) 4)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:211: "
-{-# LINE 211 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 211 "src/Test/Predicates.hs" #-}
-      (accept (leq 5) 5)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:213: "
-{-# LINE 213 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 213 "src/Test/Predicates.hs" #-}
-      (accept (leq 5) 6)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:221: "
-{-# LINE 221 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 221 "src/Test/Predicates.hs" #-}
-      (accept (just (eq "value")) Nothing)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:223: "
-{-# LINE 223 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 223 "src/Test/Predicates.hs" #-}
-      (accept (just (eq "value")) (Just "value"))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:225: "
-{-# LINE 225 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 225 "src/Test/Predicates.hs" #-}
-      (accept (just (eq "value")) (Just "wrong value"))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:239: "
-{-# LINE 239 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 239 "src/Test/Predicates.hs" #-}
-      (accept nothing Nothing)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:242: "
-{-# LINE 242 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 242 "src/Test/Predicates.hs" #-}
-      (accept nothing (Just "something"))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:256: "
-{-# LINE 256 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 256 "src/Test/Predicates.hs" #-}
-      (accept (left (eq "value")) (Left "value"))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:258: "
-{-# LINE 258 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 258 "src/Test/Predicates.hs" #-}
-      (accept (left (eq "value")) (Right "value"))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:260: "
-{-# LINE 260 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 260 "src/Test/Predicates.hs" #-}
-      (accept (left (eq "value")) (Left "wrong value"))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:274: "
-{-# LINE 274 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 274 "src/Test/Predicates.hs" #-}
-      (accept (right (eq "value")) (Right "value"))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:276: "
-{-# LINE 276 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 276 "src/Test/Predicates.hs" #-}
-      (accept (right (eq "value")) (Right "wrong value"))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:278: "
-{-# LINE 278 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 278 "src/Test/Predicates.hs" #-}
-      (accept (right (eq "value")) (Left "value"))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:292: "
-{-# LINE 292 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 292 "src/Test/Predicates.hs" #-}
-      (accept (zipP (eq "foo") (eq "bar")) ("foo", "bar"))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:294: "
-{-# LINE 294 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 294 "src/Test/Predicates.hs" #-}
-      (accept (zipP (eq "foo") (eq "bar")) ("bar", "foo"))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:318: "
-{-# LINE 318 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 318 "src/Test/Predicates.hs" #-}
-      (accept (zip3P (eq "foo") (eq "bar") (eq "qux")) ("foo", "bar", "qux"))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:320: "
-{-# LINE 320 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 320 "src/Test/Predicates.hs" #-}
-      (accept (zip3P (eq "foo") (eq "bar") (eq "qux")) ("qux", "bar", "foo"))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:345: "
-{-# LINE 345 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 345 "src/Test/Predicates.hs" #-}
-      (accept (zip4P (eq 1) (eq 2) (eq 3) (eq 4)) (1, 2, 3, 4))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:347: "
-{-# LINE 347 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 347 "src/Test/Predicates.hs" #-}
-      (accept (zip4P (eq 1) (eq 2) (eq 3) (eq 4)) (4, 3, 2, 1))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:378: "
-{-# LINE 378 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 378 "src/Test/Predicates.hs" #-}
-      (accept (zip5P (eq 1) (eq 2) (eq 3) (eq 4) (eq 5)) (1, 2, 3, 4, 5))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:380: "
-{-# LINE 380 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 380 "src/Test/Predicates.hs" #-}
-      (accept (zip5P (eq 1) (eq 2) (eq 3) (eq 4) (eq 5)) (5, 4, 3, 2, 1))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:412: "
-{-# LINE 412 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 412 "src/Test/Predicates.hs" #-}
-      (accept (lt "foo" `andP` gt "bar") "eta")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:414: "
-{-# LINE 414 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 414 "src/Test/Predicates.hs" #-}
-      (accept (lt "foo" `andP` gt "bar") "quz")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:416: "
-{-# LINE 416 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 416 "src/Test/Predicates.hs" #-}
-      (accept (lt "foo" `andP` gt "bar") "alpha")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:433: "
-{-# LINE 433 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 433 "src/Test/Predicates.hs" #-}
-      (accept (lt "bar" `orP` gt "foo") "eta")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:435: "
-{-# LINE 435 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 435 "src/Test/Predicates.hs" #-}
-      (accept (lt "bar" `orP` gt "foo") "quz")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:437: "
-{-# LINE 437 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 437 "src/Test/Predicates.hs" #-}
-      (accept (lt "bar" `orP` gt "foo") "alpha")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:445: "
-{-# LINE 445 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 445 "src/Test/Predicates.hs" #-}
-      (accept (notP (eq "negative")) "positive")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:447: "
-{-# LINE 447 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 447 "src/Test/Predicates.hs" #-}
-      (accept (notP (eq "negative")) "negative")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:460: "
-{-# LINE 460 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 460 "src/Test/Predicates.hs" #-}
-      (accept (startsWith "fun") "fungible")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:462: "
-{-# LINE 462 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 462 "src/Test/Predicates.hs" #-}
-      (accept (startsWith "gib") "fungible")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:475: "
-{-# LINE 475 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 475 "src/Test/Predicates.hs" #-}
-      (accept (endsWith "ow") "crossbow")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:477: "
-{-# LINE 477 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 477 "src/Test/Predicates.hs" #-}
-      (accept (endsWith "ow") "trebuchet")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:491: "
-{-# LINE 491 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 491 "src/Test/Predicates.hs" #-}
-      (accept (hasSubstr "i") "team")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:493: "
-{-# LINE 493 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 493 "src/Test/Predicates.hs" #-}
-      (accept (hasSubstr "i") "partnership")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:507: "
-{-# LINE 507 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 507 "src/Test/Predicates.hs" #-}
-      (accept (hasSubsequence [1..5]) [1, 2, 3, 4, 5])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:509: "
-{-# LINE 509 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 509 "src/Test/Predicates.hs" #-}
-      (accept (hasSubsequence [1..5]) [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:511: "
-{-# LINE 511 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 511 "src/Test/Predicates.hs" #-}
-      (accept (hasSubsequence [1..5]) [2, 3, 5, 7, 11])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:525: "
-{-# LINE 525 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 525 "src/Test/Predicates.hs" #-}
-      (accept (caseInsensitive startsWith "foo") "FOOTBALL!")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:527: "
-{-# LINE 527 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 527 "src/Test/Predicates.hs" #-}
-      (accept (caseInsensitive endsWith "ball") "soccer")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:529: "
-{-# LINE 529 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 529 "src/Test/Predicates.hs" #-}
-      (accept (caseInsensitive eq "time") "TIME")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:531: "
-{-# LINE 531 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 531 "src/Test/Predicates.hs" #-}
-      (accept (caseInsensitive gt "NOTHING") "everything")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:558: "
-{-# LINE 558 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 558 "src/Test/Predicates.hs" #-}
-      (accept (matchesRegex "x{2,5}y?") "xxxy")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:560: "
-{-# LINE 560 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 560 "src/Test/Predicates.hs" #-}
-      (accept (matchesRegex "x{2,5}y?") "xyy")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:562: "
-{-# LINE 562 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 562 "src/Test/Predicates.hs" #-}
-      (accept (matchesRegex "x{2,5}y?") "wxxxyz")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:592: "
-{-# LINE 592 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 592 "src/Test/Predicates.hs" #-}
-      (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "XXXY")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:594: "
-{-# LINE 594 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 594 "src/Test/Predicates.hs" #-}
-      (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "XYY")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:596: "
-{-# LINE 596 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 596 "src/Test/Predicates.hs" #-}
-      (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "WXXXYZ")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:632: "
-{-# LINE 632 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 632 "src/Test/Predicates.hs" #-}
-      (accept (containsRegex "x{2,5}y?") "xxxy")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:634: "
-{-# LINE 634 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 634 "src/Test/Predicates.hs" #-}
-      (accept (containsRegex "x{2,5}y?") "xyy")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:636: "
-{-# LINE 636 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 636 "src/Test/Predicates.hs" #-}
-      (accept (containsRegex "x{2,5}y?") "wxxxyz")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:660: "
-{-# LINE 660 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 660 "src/Test/Predicates.hs" #-}
-      (accept (containsCaseInsensitiveRegex "x{2,5}y?") "XXXY")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:662: "
-{-# LINE 662 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 662 "src/Test/Predicates.hs" #-}
-      (accept (containsCaseInsensitiveRegex "x{2,5}y?") "XYY")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:664: "
-{-# LINE 664 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 664 "src/Test/Predicates.hs" #-}
-      (accept (containsCaseInsensitiveRegex "x{2,5}y?") "WXXXYZ")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:688: "
-{-# LINE 688 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 688 "src/Test/Predicates.hs" #-}
-      (accept isEmpty ([] :: [Int]))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:690: "
-{-# LINE 690 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 690 "src/Test/Predicates.hs" #-}
-      (accept isEmpty [1, 2, 3])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:692: "
-{-# LINE 692 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 692 "src/Test/Predicates.hs" #-}
-      (accept isEmpty "")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:694: "
-{-# LINE 694 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 694 "src/Test/Predicates.hs" #-}
-      (accept isEmpty "gas tank")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:707: "
-{-# LINE 707 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 707 "src/Test/Predicates.hs" #-}
-      (accept nonEmpty ([] :: [Int]))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:709: "
-{-# LINE 709 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 709 "src/Test/Predicates.hs" #-}
-      (accept nonEmpty [1, 2, 3])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:711: "
-{-# LINE 711 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 711 "src/Test/Predicates.hs" #-}
-      (accept nonEmpty "")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:713: "
-{-# LINE 713 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 713 "src/Test/Predicates.hs" #-}
-      (accept nonEmpty "gas tank")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:721: "
-{-# LINE 721 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 721 "src/Test/Predicates.hs" #-}
-      (accept (sizeIs (lt 3)) ['a' .. 'f'])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:723: "
-{-# LINE 723 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 723 "src/Test/Predicates.hs" #-}
-      (accept (sizeIs (lt 3)) ['a' .. 'b'])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:744: "
-{-# LINE 744 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 744 "src/Test/Predicates.hs" #-}
-      (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 3, 4])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:746: "
-{-# LINE 746 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 746 "src/Test/Predicates.hs" #-}
-      (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 3, 4, 5])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:748: "
-{-# LINE 748 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 748 "src/Test/Predicates.hs" #-}
-      (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 10, 4])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:780: "
-{-# LINE 780 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 780 "src/Test/Predicates.hs" #-}
-      (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 2, 3])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:782: "
-{-# LINE 782 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 782 "src/Test/Predicates.hs" #-}
-      (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [2, 3, 1])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:784: "
-{-# LINE 784 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 784 "src/Test/Predicates.hs" #-}
-      (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 2, 3, 4])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:786: "
-{-# LINE 786 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 786 "src/Test/Predicates.hs" #-}
-      (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 3])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:833: "
-{-# LINE 833 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 833 "src/Test/Predicates.hs" #-}
-      (accept (each (gt 5)) [4, 5, 6])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:835: "
-{-# LINE 835 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 835 "src/Test/Predicates.hs" #-}
-      (accept (each (gt 5)) [6, 7, 8])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:837: "
-{-# LINE 837 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 837 "src/Test/Predicates.hs" #-}
-      (accept (each (gt 5)) [])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:862: "
-{-# LINE 862 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 862 "src/Test/Predicates.hs" #-}
-      (accept (contains (gt 5)) [3, 4, 5])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:864: "
-{-# LINE 864 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 864 "src/Test/Predicates.hs" #-}
-      (accept (contains (gt 5)) [4, 5, 6])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:866: "
-{-# LINE 866 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 866 "src/Test/Predicates.hs" #-}
-      (accept (contains (gt 5)) [])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:874: "
-{-# LINE 874 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 874 "src/Test/Predicates.hs" #-}
-      (accept (containsAll [eq "foo", eq "bar"]) ["bar", "foo"])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:876: "
-{-# LINE 876 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 876 "src/Test/Predicates.hs" #-}
-      (accept (containsAll [eq "foo", eq "bar"]) ["foo"])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:878: "
-{-# LINE 878 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 878 "src/Test/Predicates.hs" #-}
-      (accept (containsAll [eq "foo", eq "bar"]) ["foo", "bar", "qux"])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:886: "
-{-# LINE 886 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 886 "src/Test/Predicates.hs" #-}
-      (accept (containsAll [startsWith "f", endsWith "o"]) ["foo"])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:888: "
-{-# LINE 888 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 888 "src/Test/Predicates.hs" #-}
-      (accept (contains (startsWith "f") `andP` contains (endsWith "o")) ["foo"])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:910: "
-{-# LINE 910 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 910 "src/Test/Predicates.hs" #-}
-      (accept (containsOnly [eq "foo", eq "bar"]) ["foo"])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:912: "
-{-# LINE 912 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 912 "src/Test/Predicates.hs" #-}
-      (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "bar"])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:914: "
-{-# LINE 914 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 914 "src/Test/Predicates.hs" #-}
-      (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "qux"])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:921: "
-{-# LINE 921 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 921 "src/Test/Predicates.hs" #-}
-      (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "foo"])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:923: "
-{-# LINE 923 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 923 "src/Test/Predicates.hs" #-}
-      (accept (each (eq "foo" `orP` eq "bar")) ["foo", "foo"])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:949: "
-{-# LINE 949 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 949 "src/Test/Predicates.hs" #-}
-      (accept (keys (each (eq "foo"))) [("foo", 5)])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:952: "
-{-# LINE 952 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 952 "src/Test/Predicates.hs" #-}
-      (accept (keys (each (eq "foo"))) [("foo", 5), ("bar", 6)])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:968: "
-{-# LINE 968 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 968 "src/Test/Predicates.hs" #-}
-      (accept (values (each (eq 5))) [("foo", 5), ("bar", 5)])
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:971: "
-{-# LINE 971 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 971 "src/Test/Predicates.hs" #-}
-      (accept (values (each (eq 5))) [("foo", 5), ("bar", 6)])
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:989: "
-{-# LINE 989 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 989 "src/Test/Predicates.hs" #-}
-      (accept (eq 1.0) (sum (replicate 100 0.01)))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:996: "
-{-# LINE 996 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 996 "src/Test/Predicates.hs" #-}
-      (accept (approxEq 1.0) (sum (replicate 100 0.01)))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:998: "
-{-# LINE 998 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 998 "src/Test/Predicates.hs" #-}
-      (accept (approxEq 1.0) (sum (replicate 100 0.009999)))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1013: "
-{-# LINE 1013 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1013 "src/Test/Predicates.hs" #-}
-      (accept positive 1)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1016: "
-{-# LINE 1016 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1016 "src/Test/Predicates.hs" #-}
-      (accept positive 0)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1019: "
-{-# LINE 1019 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1019 "src/Test/Predicates.hs" #-}
-      (accept positive (-1))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1037: "
-{-# LINE 1037 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1037 "src/Test/Predicates.hs" #-}
-      (accept negative 1)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1040: "
-{-# LINE 1040 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1040 "src/Test/Predicates.hs" #-}
-      (accept negative 0)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1043: "
-{-# LINE 1043 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1043 "src/Test/Predicates.hs" #-}
-      (accept negative (-1))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1062: "
-{-# LINE 1062 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1062 "src/Test/Predicates.hs" #-}
-      (accept nonPositive 1)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1065: "
-{-# LINE 1065 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1065 "src/Test/Predicates.hs" #-}
-      (accept nonPositive 0)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1068: "
-{-# LINE 1068 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1068 "src/Test/Predicates.hs" #-}
-      (accept nonPositive (-1))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1076: "
-{-# LINE 1076 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1076 "src/Test/Predicates.hs" #-}
-      (accept nonNegative 1)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1079: "
-{-# LINE 1079 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1079 "src/Test/Predicates.hs" #-}
-      (accept nonNegative 0)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1082: "
-{-# LINE 1082 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1082 "src/Test/Predicates.hs" #-}
-      (accept nonNegative (-1))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1089: "
-{-# LINE 1089 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1089 "src/Test/Predicates.hs" #-}
-      (accept finite 1.0)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1091: "
-{-# LINE 1091 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1091 "src/Test/Predicates.hs" #-}
-      (accept finite (0 / 0))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1093: "
-{-# LINE 1093 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1093 "src/Test/Predicates.hs" #-}
-      (accept finite (1 / 0))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1111: "
-{-# LINE 1111 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1111 "src/Test/Predicates.hs" #-}
-      (accept infinite 1.0)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1113: "
-{-# LINE 1113 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1113 "src/Test/Predicates.hs" #-}
-      (accept infinite (0 / 0))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1115: "
-{-# LINE 1115 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1115 "src/Test/Predicates.hs" #-}
-      (accept infinite (1 / 0))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1131: "
-{-# LINE 1131 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1131 "src/Test/Predicates.hs" #-}
-      (accept nAn 1.0)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1133: "
-{-# LINE 1133 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1133 "src/Test/Predicates.hs" #-}
-      (accept nAn (0 / 0))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1135: "
-{-# LINE 1135 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1135 "src/Test/Predicates.hs" #-}
-      (accept nAn (1 / 0))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1153: "
-{-# LINE 1153 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1153 "src/Test/Predicates.hs" #-}
-      (accept (is even) 3)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1155: "
-{-# LINE 1155 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1155 "src/Test/Predicates.hs" #-}
-      (accept (is even) 4)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1173: "
-{-# LINE 1173 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1173 "src/Test/Predicates.hs" #-}
-      (accept $(qIs [| even |]) 3)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1175: "
-{-# LINE 1175 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1175 "src/Test/Predicates.hs" #-}
-      (accept $(qIs [| even |]) 4)
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1178: "
-{-# LINE 1178 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1178 "src/Test/Predicates.hs" #-}
-      (show $(qIs [| even |]))
-  [ExpectedLine [LineChunk "\"even\""]]
- DocTest.printPrefix "Test.Predicates:1196: "
-{-# LINE 1196 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1196 "src/Test/Predicates.hs" #-}
-      (accept (with abs (gt 5)) (-6))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1198: "
-{-# LINE 1198 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1198 "src/Test/Predicates.hs" #-}
-      (accept (with abs (gt 5)) (-5))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1200: "
-{-# LINE 1200 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1200 "src/Test/Predicates.hs" #-}
-      (accept (with reverse (eq "olleh")) "hello")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1202: "
-{-# LINE 1202 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1202 "src/Test/Predicates.hs" #-}
-      (accept (with reverse (eq "olleh")) "goodbye")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1219: "
-{-# LINE 1219 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1219 "src/Test/Predicates.hs" #-}
-      (accept ($(qWith [| abs |]) (gt 5)) (-6))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1221: "
-{-# LINE 1221 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1221 "src/Test/Predicates.hs" #-}
-      (accept ($(qWith [| abs |]) (gt 5)) (-5))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1223: "
-{-# LINE 1223 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1223 "src/Test/Predicates.hs" #-}
-      (accept ($(qWith [| reverse |]) (eq "olleh")) "hello")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1225: "
-{-# LINE 1225 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1225 "src/Test/Predicates.hs" #-}
-      (accept ($(qWith [| reverse |]) (eq "olleh")) "goodbye")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1228: "
-{-# LINE 1228 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1228 "src/Test/Predicates.hs" #-}
-      (show ($(qWith [| abs |]) (gt 5)))
-  [ExpectedLine [LineChunk "\"abs: > 5\""]]
- DocTest.printPrefix "Test.Predicates:1247: "
-{-# LINE 1247 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1247 "src/Test/Predicates.hs" #-}
-      (accept $(qMatch [p| Just (Left _) |]) Nothing)
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1249: "
-{-# LINE 1249 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1249 "src/Test/Predicates.hs" #-}
-      (accept $(qMatch [p| Just (Left _) |]) (Just (Left 5)))
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1251: "
-{-# LINE 1251 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1251 "src/Test/Predicates.hs" #-}
-      (accept $(qMatch [p| Just (Left _) |]) (Just (Right 5)))
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1254: "
-{-# LINE 1254 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1254 "src/Test/Predicates.hs" #-}
-      (show $(qMatch [p| Just (Left _) |]))
-  [ExpectedLine [LineChunk "\"Just (Left _)\""]]
- DocTest.printPrefix "Test.Predicates:1276: "
-{-# LINE 1276 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1276 "src/Test/Predicates.hs" #-}
-      (accept (typed @String anything) "foo")
-  [ExpectedLine [LineChunk "True"]]
- DocTest.printPrefix "Test.Predicates:1278: "
-{-# LINE 1278 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1278 "src/Test/Predicates.hs" #-}
-      (accept (typed @String (sizeIs (gt 5))) "foo")
-  [ExpectedLine [LineChunk "False"]]
- DocTest.printPrefix "Test.Predicates:1280: "
-{-# LINE 1280 "src/Test/Predicates.hs" #-}
- DocTest.example
-{-# LINE 1280 "src/Test/Predicates.hs" #-}
+{-# LINE 133 "src/Test/Predicates.hs" #-}
+
+{-# OPTIONS_GHC -XLambdaCase #-}
+{-# OPTIONS_GHC -XTemplateHaskell #-}
+{-# OPTIONS_GHC -XTypeApplications #-}
+{-# OPTIONS_GHC -Wno-type-defaults #-}
+module DocTests.Test.Predicates where
+
+import Test.Predicates
+import Test.DocTest.Base
+import qualified Test.DocTest.Driver as DocTest
+
+{-# LINE 138 "src/Test/Predicates.hs" #-}
+
+test :: DocTest.T ()
+test = do
+ DocTest.printPrefix "Test.Predicates:153: "
+{-# LINE 153 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 153 "src/Test/Predicates.hs" #-}
+      (eq 1 ==~ 1)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:155: "
+{-# LINE 155 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 155 "src/Test/Predicates.hs" #-}
+      (eq 2 ==~ 1)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:171: "
+{-# LINE 171 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 171 "src/Test/Predicates.hs" #-}
+      (accept anything "foo")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:173: "
+{-# LINE 173 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 173 "src/Test/Predicates.hs" #-}
+      (accept anything undefined)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:186: "
+{-# LINE 186 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 186 "src/Test/Predicates.hs" #-}
+      (accept (eq "foo") "foo")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:188: "
+{-# LINE 188 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 188 "src/Test/Predicates.hs" #-}
+      (accept (eq "foo") "bar")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:204: "
+{-# LINE 204 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 204 "src/Test/Predicates.hs" #-}
+      (accept (neq "foo") "foo")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:206: "
+{-# LINE 206 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 206 "src/Test/Predicates.hs" #-}
+      (accept (neq "foo") "bar")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:213: "
+{-# LINE 213 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 213 "src/Test/Predicates.hs" #-}
+      (accept (gt 5) 4)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:215: "
+{-# LINE 215 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 215 "src/Test/Predicates.hs" #-}
+      (accept (gt 5) 5)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:217: "
+{-# LINE 217 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 217 "src/Test/Predicates.hs" #-}
+      (accept (gt 5) 6)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:231: "
+{-# LINE 231 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 231 "src/Test/Predicates.hs" #-}
+      (accept (geq 5) 4)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:233: "
+{-# LINE 233 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 233 "src/Test/Predicates.hs" #-}
+      (accept (geq 5) 5)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:235: "
+{-# LINE 235 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 235 "src/Test/Predicates.hs" #-}
+      (accept (geq 5) 6)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:248: "
+{-# LINE 248 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 248 "src/Test/Predicates.hs" #-}
+      (accept (lt 5) 4)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:250: "
+{-# LINE 250 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 250 "src/Test/Predicates.hs" #-}
+      (accept (lt 5) 5)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:252: "
+{-# LINE 252 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 252 "src/Test/Predicates.hs" #-}
+      (accept (lt 5) 6)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:259: "
+{-# LINE 259 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 259 "src/Test/Predicates.hs" #-}
+      (accept (leq 5) 4)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:261: "
+{-# LINE 261 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 261 "src/Test/Predicates.hs" #-}
+      (accept (leq 5) 5)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:263: "
+{-# LINE 263 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 263 "src/Test/Predicates.hs" #-}
+      (accept (leq 5) 6)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:271: "
+{-# LINE 271 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 271 "src/Test/Predicates.hs" #-}
+      (accept (just (eq "value")) Nothing)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:273: "
+{-# LINE 273 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 273 "src/Test/Predicates.hs" #-}
+      (accept (just (eq "value")) (Just "value"))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:275: "
+{-# LINE 275 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 275 "src/Test/Predicates.hs" #-}
+      (accept (just (eq "value")) (Just "wrong value"))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:289: "
+{-# LINE 289 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 289 "src/Test/Predicates.hs" #-}
+      (accept nothing Nothing)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:292: "
+{-# LINE 292 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 292 "src/Test/Predicates.hs" #-}
+      (accept nothing (Just "something"))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:306: "
+{-# LINE 306 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 306 "src/Test/Predicates.hs" #-}
+      (accept (left (eq "value")) (Left "value"))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:308: "
+{-# LINE 308 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 308 "src/Test/Predicates.hs" #-}
+      (accept (left (eq "value")) (Right "value"))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:310: "
+{-# LINE 310 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 310 "src/Test/Predicates.hs" #-}
+      (accept (left (eq "value")) (Left "wrong value"))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:324: "
+{-# LINE 324 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 324 "src/Test/Predicates.hs" #-}
+      (accept (right (eq "value")) (Right "value"))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:326: "
+{-# LINE 326 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 326 "src/Test/Predicates.hs" #-}
+      (accept (right (eq "value")) (Right "wrong value"))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:328: "
+{-# LINE 328 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 328 "src/Test/Predicates.hs" #-}
+      (accept (right (eq "value")) (Left "value"))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:342: "
+{-# LINE 342 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 342 "src/Test/Predicates.hs" #-}
+      (accept (zipP (eq "foo") (eq "bar")) ("foo", "bar"))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:344: "
+{-# LINE 344 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 344 "src/Test/Predicates.hs" #-}
+      (accept (zipP (eq "foo") (eq "bar")) ("bar", "foo"))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:368: "
+{-# LINE 368 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 368 "src/Test/Predicates.hs" #-}
+      (accept (zip3P (eq "foo") (eq "bar") (eq "qux")) ("foo", "bar", "qux"))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:370: "
+{-# LINE 370 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 370 "src/Test/Predicates.hs" #-}
+      (accept (zip3P (eq "foo") (eq "bar") (eq "qux")) ("qux", "bar", "foo"))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:395: "
+{-# LINE 395 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 395 "src/Test/Predicates.hs" #-}
+      (accept (zip4P (eq 1) (eq 2) (eq 3) (eq 4)) (1, 2, 3, 4))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:397: "
+{-# LINE 397 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 397 "src/Test/Predicates.hs" #-}
+      (accept (zip4P (eq 1) (eq 2) (eq 3) (eq 4)) (4, 3, 2, 1))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:428: "
+{-# LINE 428 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 428 "src/Test/Predicates.hs" #-}
+      (accept (zip5P (eq 1) (eq 2) (eq 3) (eq 4) (eq 5)) (1, 2, 3, 4, 5))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:430: "
+{-# LINE 430 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 430 "src/Test/Predicates.hs" #-}
+      (accept (zip5P (eq 1) (eq 2) (eq 3) (eq 4) (eq 5)) (5, 4, 3, 2, 1))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:462: "
+{-# LINE 462 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 462 "src/Test/Predicates.hs" #-}
+      (accept (lt "foo" `andP` gt "bar") "eta")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:464: "
+{-# LINE 464 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 464 "src/Test/Predicates.hs" #-}
+      (accept (lt "foo" `andP` gt "bar") "quz")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:466: "
+{-# LINE 466 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 466 "src/Test/Predicates.hs" #-}
+      (accept (lt "foo" `andP` gt "bar") "alpha")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:483: "
+{-# LINE 483 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 483 "src/Test/Predicates.hs" #-}
+      (accept (lt "bar" `orP` gt "foo") "eta")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:485: "
+{-# LINE 485 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 485 "src/Test/Predicates.hs" #-}
+      (accept (lt "bar" `orP` gt "foo") "quz")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:487: "
+{-# LINE 487 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 487 "src/Test/Predicates.hs" #-}
+      (accept (lt "bar" `orP` gt "foo") "alpha")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:495: "
+{-# LINE 495 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 495 "src/Test/Predicates.hs" #-}
+      (accept (notP (eq "negative")) "positive")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:497: "
+{-# LINE 497 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 497 "src/Test/Predicates.hs" #-}
+      (accept (notP (eq "negative")) "negative")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:517: "
+{-# LINE 517 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 517 "src/Test/Predicates.hs" #-}
+      (accept (matchesRegex "x{2,5}y?") "xxxy")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:519: "
+{-# LINE 519 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 519 "src/Test/Predicates.hs" #-}
+      (accept (matchesRegex "x{2,5}y?") "xyy")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:521: "
+{-# LINE 521 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 521 "src/Test/Predicates.hs" #-}
+      (accept (matchesRegex "x{2,5}y?") "wxxxyz")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:551: "
+{-# LINE 551 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 551 "src/Test/Predicates.hs" #-}
+      (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "XXXY")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:553: "
+{-# LINE 553 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 553 "src/Test/Predicates.hs" #-}
+      (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "XYY")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:555: "
+{-# LINE 555 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 555 "src/Test/Predicates.hs" #-}
+      (accept (matchesCaseInsensitiveRegex "x{2,5}y?") "WXXXYZ")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:591: "
+{-# LINE 591 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 591 "src/Test/Predicates.hs" #-}
+      (accept (containsRegex "x{2,5}y?") "xxxy")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:593: "
+{-# LINE 593 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 593 "src/Test/Predicates.hs" #-}
+      (accept (containsRegex "x{2,5}y?") "xyy")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:595: "
+{-# LINE 595 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 595 "src/Test/Predicates.hs" #-}
+      (accept (containsRegex "x{2,5}y?") "wxxxyz")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:619: "
+{-# LINE 619 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 619 "src/Test/Predicates.hs" #-}
+      (accept (containsCaseInsensitiveRegex "x{2,5}y?") "XXXY")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:621: "
+{-# LINE 621 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 621 "src/Test/Predicates.hs" #-}
+      (accept (containsCaseInsensitiveRegex "x{2,5}y?") "XYY")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:623: "
+{-# LINE 623 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 623 "src/Test/Predicates.hs" #-}
+      (accept (containsCaseInsensitiveRegex "x{2,5}y?") "WXXXYZ")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:651: "
+{-# LINE 651 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 651 "src/Test/Predicates.hs" #-}
+      (accept (startsWith "fun") "fungible")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:653: "
+{-# LINE 653 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 653 "src/Test/Predicates.hs" #-}
+      (accept (startsWith "gib") "fungible")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:666: "
+{-# LINE 666 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 666 "src/Test/Predicates.hs" #-}
+      (accept (endsWith "ow") "crossbow")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:668: "
+{-# LINE 668 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 668 "src/Test/Predicates.hs" #-}
+      (accept (endsWith "ow") "trebuchet")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:682: "
+{-# LINE 682 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 682 "src/Test/Predicates.hs" #-}
+      (accept (hasSubstr "i") "team")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:684: "
+{-# LINE 684 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 684 "src/Test/Predicates.hs" #-}
+      (accept (hasSubstr "i") "partnership")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:698: "
+{-# LINE 698 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 698 "src/Test/Predicates.hs" #-}
+      (accept (hasSubsequence [1..5]) [1, 2, 3, 4, 5])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:700: "
+{-# LINE 700 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 700 "src/Test/Predicates.hs" #-}
+      (accept (hasSubsequence [1..5]) [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:702: "
+{-# LINE 702 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 702 "src/Test/Predicates.hs" #-}
+      (accept (hasSubsequence [1..5]) [2, 3, 5, 7, 11])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:716: "
+{-# LINE 716 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 716 "src/Test/Predicates.hs" #-}
+      (accept (caseInsensitive startsWith "foo") "FOOTBALL!")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:718: "
+{-# LINE 718 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 718 "src/Test/Predicates.hs" #-}
+      (accept (caseInsensitive endsWith "ball") "soccer")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:720: "
+{-# LINE 720 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 720 "src/Test/Predicates.hs" #-}
+      (accept (caseInsensitive eq "time") "TIME")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:722: "
+{-# LINE 722 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 722 "src/Test/Predicates.hs" #-}
+      (accept (caseInsensitive gt "NOTHING") "everything")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:744: "
+{-# LINE 744 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 744 "src/Test/Predicates.hs" #-}
+      (accept isEmpty ([] :: [Int]))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:746: "
+{-# LINE 746 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 746 "src/Test/Predicates.hs" #-}
+      (accept isEmpty [1, 2, 3])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:748: "
+{-# LINE 748 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 748 "src/Test/Predicates.hs" #-}
+      (accept isEmpty "")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:750: "
+{-# LINE 750 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 750 "src/Test/Predicates.hs" #-}
+      (accept isEmpty "gas tank")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:763: "
+{-# LINE 763 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 763 "src/Test/Predicates.hs" #-}
+      (accept nonEmpty ([] :: [Int]))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:765: "
+{-# LINE 765 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 765 "src/Test/Predicates.hs" #-}
+      (accept nonEmpty [1, 2, 3])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:767: "
+{-# LINE 767 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 767 "src/Test/Predicates.hs" #-}
+      (accept nonEmpty "")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:769: "
+{-# LINE 769 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 769 "src/Test/Predicates.hs" #-}
+      (accept nonEmpty "gas tank")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:777: "
+{-# LINE 777 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 777 "src/Test/Predicates.hs" #-}
+      (accept (sizeIs (lt 3)) ['a' .. 'f'])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:779: "
+{-# LINE 779 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 779 "src/Test/Predicates.hs" #-}
+      (accept (sizeIs (lt 3)) ['a' .. 'b'])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:800: "
+{-# LINE 800 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 800 "src/Test/Predicates.hs" #-}
+      (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 3, 4])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:802: "
+{-# LINE 802 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 802 "src/Test/Predicates.hs" #-}
+      (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 3, 4, 5])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:804: "
+{-# LINE 804 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 804 "src/Test/Predicates.hs" #-}
+      (accept (elemsAre [lt 3, lt 4, lt 5]) [2, 10, 4])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:836: "
+{-# LINE 836 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 836 "src/Test/Predicates.hs" #-}
+      (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 2, 3])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:838: "
+{-# LINE 838 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 838 "src/Test/Predicates.hs" #-}
+      (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [2, 3, 1])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:840: "
+{-# LINE 840 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 840 "src/Test/Predicates.hs" #-}
+      (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 2, 3, 4])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:842: "
+{-# LINE 842 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 842 "src/Test/Predicates.hs" #-}
+      (accept (unorderedElemsAre [eq 1, eq 2, eq 3]) [1, 3])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:889: "
+{-# LINE 889 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 889 "src/Test/Predicates.hs" #-}
+      (accept (each (gt 5)) [4, 5, 6])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:891: "
+{-# LINE 891 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 891 "src/Test/Predicates.hs" #-}
+      (accept (each (gt 5)) [6, 7, 8])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:893: "
+{-# LINE 893 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 893 "src/Test/Predicates.hs" #-}
+      (accept (each (gt 5)) [])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:918: "
+{-# LINE 918 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 918 "src/Test/Predicates.hs" #-}
+      (accept (contains (gt 5)) [3, 4, 5])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:920: "
+{-# LINE 920 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 920 "src/Test/Predicates.hs" #-}
+      (accept (contains (gt 5)) [4, 5, 6])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:922: "
+{-# LINE 922 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 922 "src/Test/Predicates.hs" #-}
+      (accept (contains (gt 5)) [])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:930: "
+{-# LINE 930 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 930 "src/Test/Predicates.hs" #-}
+      (accept (containsAll [eq "foo", eq "bar"]) ["bar", "foo"])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:932: "
+{-# LINE 932 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 932 "src/Test/Predicates.hs" #-}
+      (accept (containsAll [eq "foo", eq "bar"]) ["foo"])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:934: "
+{-# LINE 934 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 934 "src/Test/Predicates.hs" #-}
+      (accept (containsAll [eq "foo", eq "bar"]) ["foo", "bar", "qux"])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:942: "
+{-# LINE 942 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 942 "src/Test/Predicates.hs" #-}
+      (accept (containsAll [startsWith "f", endsWith "o"]) ["foo"])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:944: "
+{-# LINE 944 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 944 "src/Test/Predicates.hs" #-}
+      (accept (contains (startsWith "f") `andP` contains (endsWith "o")) ["foo"])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:966: "
+{-# LINE 966 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 966 "src/Test/Predicates.hs" #-}
+      (accept (containsOnly [eq "foo", eq "bar"]) ["foo"])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:968: "
+{-# LINE 968 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 968 "src/Test/Predicates.hs" #-}
+      (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "bar"])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:970: "
+{-# LINE 970 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 970 "src/Test/Predicates.hs" #-}
+      (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "qux"])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:977: "
+{-# LINE 977 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 977 "src/Test/Predicates.hs" #-}
+      (accept (containsOnly [eq "foo", eq "bar"]) ["foo", "foo"])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:979: "
+{-# LINE 979 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 979 "src/Test/Predicates.hs" #-}
+      (accept (each (eq "foo" `orP` eq "bar")) ["foo", "foo"])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1005: "
+{-# LINE 1005 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1005 "src/Test/Predicates.hs" #-}
+      (accept (keys (each (eq "foo"))) [("foo", 5)])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1008: "
+{-# LINE 1008 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1008 "src/Test/Predicates.hs" #-}
+      (accept (keys (each (eq "foo"))) [("foo", 5), ("bar", 6)])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1024: "
+{-# LINE 1024 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1024 "src/Test/Predicates.hs" #-}
+      (accept (values (each (eq 5))) [("foo", 5), ("bar", 5)])
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1027: "
+{-# LINE 1027 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1027 "src/Test/Predicates.hs" #-}
+      (accept (values (each (eq 5))) [("foo", 5), ("bar", 6)])
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1047: "
+{-# LINE 1047 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1047 "src/Test/Predicates.hs" #-}
+      (accept (eq 1.0) (sum (replicate 100 0.01)))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1054: "
+{-# LINE 1054 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1054 "src/Test/Predicates.hs" #-}
+      (accept (approxEq 1.0) (sum (replicate 100 0.01)))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1056: "
+{-# LINE 1056 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1056 "src/Test/Predicates.hs" #-}
+      (accept (approxEq 1.0) (sum (replicate 100 0.009999)))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1071: "
+{-# LINE 1071 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1071 "src/Test/Predicates.hs" #-}
+      (accept positive 1)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1074: "
+{-# LINE 1074 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1074 "src/Test/Predicates.hs" #-}
+      (accept positive 0)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1077: "
+{-# LINE 1077 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1077 "src/Test/Predicates.hs" #-}
+      (accept positive (-1))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1095: "
+{-# LINE 1095 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1095 "src/Test/Predicates.hs" #-}
+      (accept negative 1)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1098: "
+{-# LINE 1098 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1098 "src/Test/Predicates.hs" #-}
+      (accept negative 0)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1101: "
+{-# LINE 1101 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1101 "src/Test/Predicates.hs" #-}
+      (accept negative (-1))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1120: "
+{-# LINE 1120 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1120 "src/Test/Predicates.hs" #-}
+      (accept nonPositive 1)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1123: "
+{-# LINE 1123 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1123 "src/Test/Predicates.hs" #-}
+      (accept nonPositive 0)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1126: "
+{-# LINE 1126 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1126 "src/Test/Predicates.hs" #-}
+      (accept nonPositive (-1))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1134: "
+{-# LINE 1134 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1134 "src/Test/Predicates.hs" #-}
+      (accept nonNegative 1)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1137: "
+{-# LINE 1137 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1137 "src/Test/Predicates.hs" #-}
+      (accept nonNegative 0)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1140: "
+{-# LINE 1140 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1140 "src/Test/Predicates.hs" #-}
+      (accept nonNegative (-1))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1147: "
+{-# LINE 1147 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1147 "src/Test/Predicates.hs" #-}
+      (accept finite 1.0)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1149: "
+{-# LINE 1149 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1149 "src/Test/Predicates.hs" #-}
+      (accept finite (0 / 0))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1151: "
+{-# LINE 1151 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1151 "src/Test/Predicates.hs" #-}
+      (accept finite (1 / 0))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1169: "
+{-# LINE 1169 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1169 "src/Test/Predicates.hs" #-}
+      (accept infinite 1.0)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1171: "
+{-# LINE 1171 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1171 "src/Test/Predicates.hs" #-}
+      (accept infinite (0 / 0))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1173: "
+{-# LINE 1173 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1173 "src/Test/Predicates.hs" #-}
+      (accept infinite (1 / 0))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1189: "
+{-# LINE 1189 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1189 "src/Test/Predicates.hs" #-}
+      (accept nAn 1.0)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1191: "
+{-# LINE 1191 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1191 "src/Test/Predicates.hs" #-}
+      (accept nAn (0 / 0))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1193: "
+{-# LINE 1193 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1193 "src/Test/Predicates.hs" #-}
+      (accept nAn (1 / 0))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1212: "
+{-# LINE 1212 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1212 "src/Test/Predicates.hs" #-}
+      (accept (is even) 3)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1214: "
+{-# LINE 1214 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1214 "src/Test/Predicates.hs" #-}
+      (accept (is even) 4)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1231: "
+{-# LINE 1231 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1231 "src/Test/Predicates.hs" #-}
+      (accept $(qIs [| even |]) 3)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1233: "
+{-# LINE 1233 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1233 "src/Test/Predicates.hs" #-}
+      (accept $(qIs [| even |]) 4)
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1236: "
+{-# LINE 1236 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1236 "src/Test/Predicates.hs" #-}
+      (show $(qIs [| even |]))
+  [ExpectedLine [LineChunk "\"even\""]]
+ DocTest.printPrefix "Test.Predicates:1256: "
+{-# LINE 1256 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1256 "src/Test/Predicates.hs" #-}
+      (accept (with abs (gt 5)) (-6))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1258: "
+{-# LINE 1258 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1258 "src/Test/Predicates.hs" #-}
+      (accept (with abs (gt 5)) (-5))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1260: "
+{-# LINE 1260 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1260 "src/Test/Predicates.hs" #-}
+      (accept (with reverse (eq "olleh")) "hello")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1262: "
+{-# LINE 1262 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1262 "src/Test/Predicates.hs" #-}
+      (accept (with reverse (eq "olleh")) "goodbye")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1288: "
+{-# LINE 1288 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1288 "src/Test/Predicates.hs" #-}
+      (accept ($(qWith [| abs |]) (gt 5)) (-6))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1290: "
+{-# LINE 1290 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1290 "src/Test/Predicates.hs" #-}
+      (accept ($(qWith [| abs |]) (gt 5)) (-5))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1292: "
+{-# LINE 1292 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1292 "src/Test/Predicates.hs" #-}
+      (accept ($(qWith [| reverse |]) (eq "olleh")) "hello")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1294: "
+{-# LINE 1294 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1294 "src/Test/Predicates.hs" #-}
+      (accept ($(qWith [| reverse |]) (eq "olleh")) "goodbye")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1297: "
+{-# LINE 1297 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1297 "src/Test/Predicates.hs" #-}
+      (show ($(qWith [| abs |]) (gt 5)))
+  [ExpectedLine [LineChunk "\"abs: > 5\""]]
+ DocTest.printPrefix "Test.Predicates:1317: "
+{-# LINE 1317 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1317 "src/Test/Predicates.hs" #-}
+      (accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Left 1))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1319: "
+{-# LINE 1319 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1319 "src/Test/Predicates.hs" #-}
+      (accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Left 0))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1321: "
+{-# LINE 1321 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1321 "src/Test/Predicates.hs" #-}
+      (accept (inBranch "Left" (\case {Left x -> Just x; _ -> Nothing}) positive) (Right 1))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1399: "
+{-# LINE 1399 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1399 "src/Test/Predicates.hs" #-}
+      (accept $(qMatch [p| Just (Left _) |]) Nothing)
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1401: "
+{-# LINE 1401 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1401 "src/Test/Predicates.hs" #-}
+      (accept $(qMatch [p| Just (Left _) |]) (Just (Left 5)))
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1403: "
+{-# LINE 1403 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1403 "src/Test/Predicates.hs" #-}
+      (accept $(qMatch [p| Just (Left _) |]) (Just (Right 5)))
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1406: "
+{-# LINE 1406 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1406 "src/Test/Predicates.hs" #-}
+      (show $(qMatch [p| Just (Left _) |]))
+  [ExpectedLine [LineChunk "\"Just (Left _)\""]]
+ DocTest.printPrefix "Test.Predicates:1428: "
+{-# LINE 1428 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1428 "src/Test/Predicates.hs" #-}
+      (accept (typed @String anything) "foo")
+  [ExpectedLine [LineChunk "True"]]
+ DocTest.printPrefix "Test.Predicates:1430: "
+{-# LINE 1430 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1430 "src/Test/Predicates.hs" #-}
+      (accept (typed @String (sizeIs (gt 5))) "foo")
+  [ExpectedLine [LineChunk "False"]]
+ DocTest.printPrefix "Test.Predicates:1432: "
+{-# LINE 1432 "src/Test/Predicates.hs" #-}
+ DocTest.example
+{-# LINE 1432 "src/Test/Predicates.hs" #-}
       (accept (typed @String anything) (42 :: Int))
   [ExpectedLine [LineChunk "False"]]
diff --git a/test/DocTests/Test/Predicates/Internal/FlowMatcher.hs b/test/DocTests/Test/Predicates/Internal/FlowMatcher.hs
--- a/test/DocTests/Test/Predicates/Internal/FlowMatcher.hs
+++ b/test/DocTests/Test/Predicates/Internal/FlowMatcher.hs
@@ -1,5 +1,5 @@
 -- Do not edit! Automatically created with doctest-extract from src/Test/Predicates/Internal/FlowMatcher.hs
-{-# LINE 14 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}
+{-# LINE 21 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}
 
 {-# OPTIONS_GHC -Wno-type-defaults #-}
 module DocTests.Test.Predicates.Internal.FlowMatcher where
@@ -8,13 +8,13 @@
 import Test.DocTest.Base
 import qualified Test.DocTest.Driver as DocTest
 
-{-# LINE 16 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}
+{-# LINE 23 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}
 
 test :: DocTest.T ()
 test = do
- DocTest.printPrefix "Test.Predicates.Internal.FlowMatcher:23: "
-{-# LINE 23 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}
+ DocTest.printPrefix "Test.Predicates.Internal.FlowMatcher:30: "
+{-# LINE 30 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}
  DocTest.example
-{-# LINE 23 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}
+{-# LINE 30 "src/Test/Predicates/Internal/FlowMatcher.hs" #-}
       (bipartiteMatching (==) [1 .. 5] [6, 5 .. 2])
   [ExpectedLine [LineChunk "([(2,2),(3,3),(4,4),(5,5)],[1],[6])"]]
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,17 +1,30 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeApplications #-}
 
 import Data.List (isPrefixOf)
 import Data.Typeable (Typeable)
-import qualified DocTests.All
-import qualified Test.DocTest.Driver as DocTest
 import Test.Hspec
 import Test.Predicates
 
+#ifdef DOCTESTS
+
+import qualified DocTests.All
+import qualified Test.DocTest.Driver as DocTest
+
+#endif
+
+-- Sample ADT to use for testing.
+data Foo = Foo0 | Foo1 Int | Foo2 Int Int
+
+$(pure [])
+
 main :: IO ()
 main = do
   hspec predicateTests
+#ifdef DOCTESTS
   DocTest.run DocTests.All.main
+#endif
 
 predicateTests :: SpecWith ()
 predicateTests = do
@@ -46,6 +59,17 @@
         show (lt "bar" `orP` gt "foo")
           `shouldBe` "< \"bar\" or > \"foo\""
         show (notP (gt "foo")) `shouldBe` "≤ \"foo\""
+#ifdef REGEX
+        show (matchesRegex "foo" :: Predicate String)
+          `shouldBe` "/foo/"
+        show (matchesCaseInsensitiveRegex "foo" :: Predicate String)
+          `shouldBe` "/foo/i"
+        show (containsRegex "foo" :: Predicate String)
+          `shouldBe` "contains /foo/"
+        show (containsCaseInsensitiveRegex "foo" :: Predicate String)
+          `shouldBe` "contains /foo/i"
+#endif
+#ifdef CONTAINERS
         show (startsWith "fun") `shouldBe` "starts with \"fun\""
         show (endsWith "ing") `shouldBe` "ends with \"ing\""
         show (hasSubstr "i") `shouldBe` "has substring \"i\""
@@ -55,14 +79,6 @@
           `shouldBe` "(case insensitive) starts with \"foo\""
         show (caseInsensitive endsWith "foo")
           `shouldBe` "(case insensitive) ends with \"foo\""
-        show (matchesRegex "foo" :: Predicate String)
-          `shouldBe` "/foo/"
-        show (matchesCaseInsensitiveRegex "foo" :: Predicate String)
-          `shouldBe` "/foo/i"
-        show (containsRegex "foo" :: Predicate String)
-          `shouldBe` "contains /foo/"
-        show (containsCaseInsensitiveRegex "foo" :: Predicate String)
-          `shouldBe` "contains /foo/i"
         show (isEmpty :: Predicate [()]) `shouldBe` "empty"
         show (nonEmpty :: Predicate [()]) `shouldBe` "non-empty"
         show (sizeIs (gt 5) :: Predicate [()]) `shouldBe` "size > 5"
@@ -90,6 +106,7 @@
         show
           (values (elemsAre [eq "one", eq "two"]) :: Predicate [(Int, String)])
           `shouldBe` "values ([\"one\",\"two\"])"
+#endif
         show (approxEq 1.0 :: Predicate Double) `shouldBe` "≈ 1.0"
         show (finite :: Predicate Double) `shouldBe` "finite"
         show (infinite :: Predicate Double) `shouldBe` "infinite"
@@ -105,6 +122,23 @@
           `shouldSatisfy` ("property at " `isPrefixOf`)
         show ($(qWith [|length|]) (gt 5) :: Predicate String)
           `shouldBe` "length: > 5"
+
+    it "matches ADTs" $
+      example $ do
+        accept $(qADT 'Foo0) Foo0 `shouldBe` True
+        accept $(qADT 'Foo0) (Foo1 5) `shouldBe` False
+        accept $(qADT 'Foo0) (Foo2 5 6) `shouldBe` False
+
+        accept ($(qADT 'Foo1) positive) Foo0 `shouldBe` False
+        accept ($(qADT 'Foo1) positive) (Foo1 5) `shouldBe` True
+        accept ($(qADT 'Foo1) positive) (Foo1 0) `shouldBe` False
+        accept ($(qADT 'Foo1) positive) (Foo2 5 6) `shouldBe` False
+
+        accept ($(qADT 'Foo2) positive positive) Foo0 `shouldBe` False
+        accept ($(qADT 'Foo2) positive positive) (Foo1 5) `shouldBe` False
+        accept ($(qADT 'Foo2) positive positive) (Foo2 5 6) `shouldBe` True
+        accept ($(qADT 'Foo2) positive positive) (Foo2 0 6) `shouldBe` False
+        accept ($(qADT 'Foo2) positive positive) (Foo2 5 0) `shouldBe` False
 
     it "matches patterns" $
       example $ do
