úÎñßSafed None Q$automatically build functions named  buildArbnÿ where n is an integer greater than 0. $(buildArbAny 3) creates a function buildArb3 which takes a constructor that takes 3 parameters, and returns an arbitrary instances of that constructor. It assumes that the constructors type is an instance of Arbitrary.UbuildArb1 :: Arbitrary a => (a -> b) -> Gen b buildArb1 f = f  $ arbitrarykbuildArb2 :: (Arbitrary a, Arbitrary a1) => (a1 -> a -> b) -> Gen b buildArb2 f = f  $ arbitrary  * arbitraryNone‘ 1create buildArb1 through buildArb20 automatically "Boilerplate for top level splices. The given  › must be from a type constructor. Furthermore, the type constructor must be either a data type or a newtype. Any other value will result in an exception.%Extracts the name from a constructor.Make a (  a) for type aH Currently support arbitrary Sum types up to 7 params per constructor.$Record Types not currently supported3build the function taht applys the type constructor<select one of the list of generators Q Exp == oneOf [Gen *]8Normal Constructors are the only ones we are considering.This is where we run the sum type thing Q Exp ‚Function that generates the actual code. Will be applied to the type variable binders and constructors extracted from the given  .Resulting value in the  uasi monad.NoneÑ