content: -- | Arbitrary instances for LLVM AST nodes, for QuickCheck.
  --
  -- These declarations are actually spread across a number of files.  This spread
  -- must allow for dependencies between instances, which would not be as much of
  -- an issue if they were all collected in a single file, but the single file
  -- takes much more time and memory to compile.
  --
  -- In one file:                                  2m13s compilation, ~10GB RAM
  -- top + triple + prim + expr + stmt + funcdata:   32s compilation, ~ 1GB RAM
  
  module Tests.Instances where
  
  import Generic.Random hiding ((%))
  import Test.QuickCheck.Arbitrary (Arbitrary(..))
  
  import Data.LLVM.Internal
  import Text.LLVM.AST
  
  import Tests.TripleInstances ()
  import Tests.FuncDataInstances ()
  import Tests.ExpressionInstances ()
  import Tests.StmtInstances ()
  
  -------------------------------------------------------------------------
  -- ** llvm-pretty
  
  instance Arbitrary Module where arbitrary = genericArbitrary uniform
  instance Arbitrary NamedMd where arbitrary = genericArbitrary uniform
  instance Arbitrary UnnamedMd where arbitrary = genericArbitrary uniform
  instance Arbitrary GlobalAlias where arbitrary = genericArbitrary uniform
  instance Arbitrary LayoutSpec where arbitrary = genericArbitrary uniform
  instance Arbitrary FunctionPointerAlignType where arbitrary = genericArbitrary uniform
  instance Arbitrary Mangling where arbitrary = genericArbitrary uniform
  instance Arbitrary SelectionKind where arbitrary = genericArbitrary uniform
  instance Arbitrary lab => Arbitrary (NullResult lab) where arbitrary = genericArbitrary uniform
  
  -------------------------------------------------------------------------
  -- ** llvm-pretty-bc-parser
  
  instance Arbitrary PartialUnnamedMd where arbitrary = genericArbitrary uniform
  