diff --git a/purescript.cabal b/purescript.cabal
--- a/purescript.cabal
+++ b/purescript.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               purescript
-version:            0.15.12
+version:            0.15.13
 license:            BSD-3-Clause
 license-file:       LICENSE
 copyright:
diff --git a/src/Language/PureScript/AST/Declarations.hs b/src/Language/PureScript/AST/Declarations.hs
--- a/src/Language/PureScript/AST/Declarations.hs
+++ b/src/Language/PureScript/AST/Declarations.hs
@@ -104,6 +104,17 @@
   deriving (Show, Eq)
 
 -- |
+-- In constraint solving, indicates whether there were `TypeUnknown`s that prevented
+-- an instance from being found, and whether VTAs are required 
+-- due to type class members not referencing all the type class
+-- head's type variables.
+data UnknownsHint
+  = NoUnknowns
+  | Unknowns
+  | UnknownsWithVtaRequiringArgs (NEL.NonEmpty (Qualified Ident, [[Text]]))
+  deriving (Show)
+
+-- |
 -- A module declaration, consisting of comments about the module, a module name,
 -- a list of declarations, and a list of the declarations that are
 -- explicitly exported. If the export list is Nothing, everything is exported.
diff --git a/src/Language/PureScript/Docs/Convert/ReExports.hs b/src/Language/PureScript/Docs/Convert/ReExports.hs
--- a/src/Language/PureScript/Docs/Convert/ReExports.hs
+++ b/src/Language/PureScript/Docs/Convert/ReExports.hs
@@ -441,7 +441,7 @@
           ++ T.unpack cdeclTitle)
 
   addConstraint constraint =
-    P.quantify . P.moveQuantifiersToFront . P.ConstrainedType () constraint
+    P.quantify . P.moveQuantifiersToFront () . P.ConstrainedType () constraint
 
 splitMap :: Map k (v1, v2) -> (Map k v1, Map k v2)
 splitMap = fmap fst &&& fmap snd
diff --git a/src/Language/PureScript/Environment.hs b/src/Language/PureScript/Environment.hs
--- a/src/Language/PureScript/Environment.hs
+++ b/src/Language/PureScript/Environment.hs
@@ -14,7 +14,7 @@
 import Data.IntSet qualified as IS
 import Data.Map qualified as M
 import Data.Set qualified as S
-import Data.Maybe (fromMaybe)
+import Data.Maybe (fromMaybe, mapMaybe)
 import Data.Semigroup (First(..))
 import Data.Text (Text)
 import Data.Text qualified as T
@@ -25,7 +25,7 @@
 import Language.PureScript.Names (Ident, ProperName(..), ProperNameType(..), Qualified, QualifiedBy, coerceProperName)
 import Language.PureScript.Roles (Role(..))
 import Language.PureScript.TypeClassDictionaries (NamedDict)
-import Language.PureScript.Types (SourceConstraint, SourceType, Type(..), TypeVarVisibility(..), eqType, srcTypeConstructor)
+import Language.PureScript.Types (SourceConstraint, SourceType, Type(..), TypeVarVisibility(..), eqType, srcTypeConstructor, freeTypeVariables)
 import Language.PureScript.Constants.Prim qualified as C
 
 -- | The @Environment@ defines all values and types which are currently in scope:
@@ -54,9 +54,10 @@
   { typeClassArguments :: [(Text, Maybe SourceType)]
   -- ^ A list of type argument names, and their kinds, where kind annotations
   -- were provided.
-  , typeClassMembers :: [(Ident, SourceType)]
-  -- ^ A list of type class members and their types. Type arguments listed above
-  -- are considered bound in these types.
+  , typeClassMembers :: [(Ident, SourceType, Maybe (S.Set (NEL.NonEmpty Int)))]
+  -- ^ A list of type class members and their types and whether or not
+  -- they have type variables that must be defined using Visible Type Applications.
+  -- Type arguments listed above are considered bound in these types.
   , typeClassSuperclasses :: [SourceConstraint]
   -- ^ A list of superclasses of this type class. Type arguments listed above
   -- are considered bound in the types appearing in these constraints.
@@ -129,9 +130,22 @@
   -> [FunctionalDependency]
   -> Bool
   -> TypeClassData
-makeTypeClassData args m s deps = TypeClassData args m s deps determinedArgs coveringSets
+makeTypeClassData args m s deps = TypeClassData args m' s deps determinedArgs coveringSets
   where
     ( determinedArgs, coveringSets ) = computeCoveringSets (length args) deps
+
+    coveringSets' = S.toList coveringSets
+
+    m' = map (\(a, b) -> (a, b, addVtaInfo b)) m
+    
+    addVtaInfo :: SourceType -> Maybe (S.Set (NEL.NonEmpty Int))
+    addVtaInfo memberTy = do
+      let mentionedArgIndexes = S.fromList (mapMaybe argToIndex $ freeTypeVariables memberTy)
+      let leftovers = map (`S.difference` mentionedArgIndexes) coveringSets'
+      S.fromList <$> traverse (NEL.nonEmpty . S.toList) leftovers
+
+    argToIndex :: Text -> Maybe Int
+    argToIndex = flip M.lookup $ M.fromList (zipWith ((,) . fst) args [0..])
 
 -- A moving frontier of sets to consider, along with the fundeps that can be
 -- applied in each case. At each stage, all sets in the frontier will be the
diff --git a/src/Language/PureScript/Errors.hs b/src/Language/PureScript/Errors.hs
--- a/src/Language/PureScript/Errors.hs
+++ b/src/Language/PureScript/Errors.hs
@@ -111,7 +111,7 @@
   | NoInstanceFound
       SourceConstraint -- ^ constraint that could not be solved
       [Qualified (Either SourceType Ident)] -- ^ a list of instances that stopped further progress in instance chains due to ambiguity
-      Bool -- ^ whether eliminating unknowns with annotations might help
+      UnknownsHint -- ^ whether eliminating unknowns with annotations might help or if visible type applications are required
   | AmbiguousTypeVariables SourceType [(Text, Int)]
   | UnknownClass (Qualified (ProperName 'ClassName))
   | PossiblyInfiniteInstance (Qualified (ProperName 'ClassName)) [SourceType]
@@ -177,8 +177,6 @@
   | ClassInstanceArityMismatch Ident (Qualified (ProperName 'ClassName)) Int Int
   -- | a user-defined warning raised by using the Warn type class
   | UserDefinedWarning SourceType
-  -- | a declaration couldn't be used because it contained free variables
-  | UnusableDeclaration Ident [[Text]]
   | CannotDefinePrimModules ModuleName
   | MixedAssociativityError (NEL.NonEmpty (Qualified (OpName 'AnyOpName), Associativity))
   | NonAssociativeError (NEL.NonEmpty (Qualified (OpName 'AnyOpName)))
@@ -352,7 +350,6 @@
   CannotUseBindWithDo{} -> "CannotUseBindWithDo"
   ClassInstanceArityMismatch{} -> "ClassInstanceArityMismatch"
   UserDefinedWarning{} -> "UserDefinedWarning"
-  UnusableDeclaration{} -> "UnusableDeclaration"
   CannotDefinePrimModules{} -> "CannotDefinePrimModules"
   MixedAssociativityError{} -> "MixedAssociativityError"
   NonAssociativeError{} -> "NonAssociativeError"
@@ -917,7 +914,8 @@
             , line ("You can use " <> markCode "_ <- ..." <> " to explicitly discard the result.")
             ]
     renderSimpleErrorMessage (NoInstanceFound (Constraint _ nm _ ts _) ambiguous unks) =
-      paras [ line "No type class instance was found for"
+      paras $
+            [ line "No type class instance was found for"
             , markCodeBox $ indent $ Box.hsep 1 Box.left
                 [ line (showQualified runProperName nm)
                 , Box.vcat Box.left (map prettyTypeAtom ts)
@@ -930,10 +928,32 @@
                         [] -> []
                         [_] -> useMessage "The following instance partially overlaps the above constraint, which means the rest of its instance chain will not be considered:"
                         _ -> useMessage "The following instances partially overlap the above constraint, which means the rest of their instance chains will not be considered:"
-            , paras [ line "The instance head contains unknown type variables. Consider adding a type annotation."
-                    | unks
-                    ]
-            ]
+            ] <> case unks of
+                  NoUnknowns ->
+                    []
+                  Unknowns ->
+                    [ line "The instance head contains unknown type variables. Consider adding a type annotation." ]
+                  UnknownsWithVtaRequiringArgs tyClassMembersRequiringVtas ->
+                    let
+                      renderSingleTyClassMember (tyClassMember, argsRequiringVtas) =
+                        Box.moveRight 2 $ paras $
+                          [ line $ markCode (showQualified showIdent tyClassMember) ]
+                          <> case argsRequiringVtas of
+                              [required] ->
+                                [ Box.moveRight 2 $ line $ T.intercalate ", " required ]
+                              options -> 
+                                [ Box.moveRight 2 $ line "One of the following sets of type variables:"
+                                , Box.moveRight 2 $ paras $
+                                    map (\set -> Box.moveRight 2 $ line $ T.intercalate ", " set) options
+                                ]
+                    in
+                      [ paras
+                        [ line "The instance head contains unknown type variables."
+                        , Box.moveDown 1 $ paras $
+                            [ line $ "Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. " <> markCode "tyClassMember @Int" <> ")."]
+                            <> map renderSingleTyClassMember (NEL.toList tyClassMembersRequiringVtas)
+                        ]
+                      ]
     renderSimpleErrorMessage (AmbiguousTypeVariables t uis) =
       paras [ line "The inferred type"
             , markCodeBox $ indent $ prettyType t
@@ -1275,22 +1295,6 @@
       let msg = fromMaybe (prettyType msgTy) (toTypelevelString msgTy) in
       paras [ line "A custom warning occurred while solving type class constraints:"
             , indent msg
-            ]
-
-    renderSimpleErrorMessage (UnusableDeclaration ident unexplained) =
-      paras $
-        [ line $ "The declaration " <> markCode (showIdent ident) <> " contains arguments that couldn't be determined."
-        ] <>
-
-        case unexplained of
-          [required] ->
-            [ line $ "These arguments are: { " <> T.intercalate ", " required <> " }"
-            ]
-
-          options  ->
-            [ line "To fix this, one of the following sets of variables must be determined:"
-            , Box.moveRight 2 . Box.vsep 0 Box.top $
-                map (\set -> line $ "{ " <> T.intercalate ", " set <> " }") options
             ]
 
     renderSimpleErrorMessage (CannotDefinePrimModules mn) =
diff --git a/src/Language/PureScript/Externs.hs b/src/Language/PureScript/Externs.hs
--- a/src/Language/PureScript/Externs.hs
+++ b/src/Language/PureScript/Externs.hs
@@ -254,7 +254,7 @@
     = [ EDType (coerceProperName className) kind tk
       , EDType dictName dictKind dictData
       , EDDataConstructor dctor dty dictName ty args
-      , EDClass className typeClassArguments typeClassMembers typeClassSuperclasses typeClassDependencies typeClassIsEmpty
+      , EDClass className typeClassArguments ((\(a, b, _) -> (a, b)) <$> typeClassMembers) typeClassSuperclasses typeClassDependencies typeClassIsEmpty
       ]
   toExternsDeclaration (TypeInstanceRef ss' ident ns)
     = [ EDInstance tcdClassName (lookupRenamedIdent ident) tcdForAll tcdInstanceKinds tcdInstanceTypes tcdDependencies tcdChain tcdIndex ns ss'
diff --git a/src/Language/PureScript/Interactive/Printer.hs b/src/Language/PureScript/Interactive/Printer.hs
--- a/src/Language/PureScript/Interactive/Printer.hs
+++ b/src/Language/PureScript/Interactive/Printer.hs
@@ -69,7 +69,7 @@
                     textT (P.runProperName name)
                     Box.<> textT (foldMap ((" " <>) . fst) typeClassArguments)
                 classBody =
-                    Box.vcat Box.top (map (\(i, t) -> textT (P.showIdent i <> " ::") Box.<+> P.typeAsBox maxBound t) typeClassMembers)
+                    Box.vcat Box.top (map (\(i, t, _) -> textT (P.showIdent i <> " ::") Box.<+> P.typeAsBox maxBound t) typeClassMembers)
 
             in
               Just $
diff --git a/src/Language/PureScript/Sugar/TypeClasses.hs b/src/Language/PureScript/Sugar/TypeClasses.hs
--- a/src/Language/PureScript/Sugar/TypeClasses.hs
+++ b/src/Language/PureScript/Sugar/TypeClasses.hs
@@ -305,7 +305,7 @@
   in ValueDecl sa ident Private []
     [MkUnguarded (
      TypedValue False (Abs (VarBinder ss dictIdent) (Case [Var ss $ Qualified ByNullSourcePos dictIdent] [CaseAlternative [ctor] [MkUnguarded acsr]])) $
-       addVisibility visibility (moveQuantifiersToFront (quantify (srcConstrainedType (srcConstraint className [] (map (srcTypeVar . fst) args) Nothing) ty)))
+       addVisibility visibility (moveQuantifiersToFront NullSourceAnn (quantify (srcConstrainedType (srcConstraint className [] (map (srcTypeVar . fst) args) Nothing) ty)))
     )]
 typeClassMemberToDictionaryAccessor _ _ _ _ = internalError "Invalid declaration in type class definition"
 
@@ -333,7 +333,7 @@
       M.lookup (qualify mn className) m
 
   -- Replace the type arguments with the appropriate types in the member types
-  let memberTypes = map (second (replaceAllTypeVars (zip (map fst typeClassArguments) tys))) typeClassMembers
+  let memberTypes = map (second (replaceAllTypeVars (zip (map fst typeClassArguments) tys)) . tuple3To2) typeClassMembers
 
   let declaredMembers = S.fromList $ mapMaybe declIdent decls
 
@@ -386,3 +386,6 @@
   [ superclassName pn index
   | (index, Constraint _ pn _ _ _) <- zip [0..] supers
   ]
+
+tuple3To2 :: (a, b, c) -> (a, b)
+tuple3To2 (a, b, _) = (a, b)
diff --git a/src/Language/PureScript/TypeChecker.hs b/src/Language/PureScript/TypeChecker.hs
--- a/src/Language/PureScript/TypeChecker.hs
+++ b/src/Language/PureScript/TypeChecker.hs
@@ -18,7 +18,7 @@
 import Control.Monad.Writer.Class (MonadWriter, tell)
 
 import Data.Foldable (for_, traverse_, toList)
-import Data.List (nub, nubBy, (\\), sort, group)
+import Data.List (nubBy, (\\), sort, group)
 import Data.Maybe (fromMaybe, listToMaybe, mapMaybe)
 import Data.Either (partitionEithers)
 import Data.Text (Text)
@@ -45,7 +45,7 @@
 import Language.PureScript.TypeChecker.Types as T
 import Language.PureScript.TypeChecker.Unify (varIfUnknown)
 import Language.PureScript.TypeClassDictionaries (NamedDict, TypeClassDictionaryInScope(..))
-import Language.PureScript.Types (Constraint(..), SourceConstraint, SourceType, Type(..), containsForAll, eqType, everythingOnTypes, freeTypeVariables, overConstraintArgs, srcInstanceType, unapplyTypes)
+import Language.PureScript.Types (Constraint(..), SourceConstraint, SourceType, Type(..), containsForAll, eqType, everythingOnTypes, overConstraintArgs, srcInstanceType, unapplyTypes)
 
 addDataType
   :: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
@@ -161,7 +161,6 @@
       hasSig = qualName `M.member` types env
   unless (hasSig || not (containsForAll kind)) $ do
     tell . errorMessage $ MissingKindDeclaration ClassSig (disqualify qualName) kind
-  traverse_ (checkMemberIsUsable newClass (typeSynonyms env) (types env)) classMembers
   putEnv $ env { types = M.insert qualName (kind, ExternData (nominalRolesForKind kind)) (types env)
                , typeClasses = M.insert qualifiedClassName newClass (typeClasses env) }
   where
@@ -179,29 +178,8 @@
         Just tcd -> tcd
         Nothing -> internalError "Unknown super class in TypeClassDeclaration"
 
-    coveringSets :: TypeClassData -> [S.Set Int]
-    coveringSets = S.toList . typeClassCoveringSets
-
-    argToIndex :: Text -> Maybe Int
-    argToIndex = flip M.lookup $ M.fromList (zipWith ((,) . fst) args [0..])
-
     toPair (TypeDeclaration (TypeDeclarationData _ ident ty)) = (ident, ty)
     toPair _ = internalError "Invalid declaration in TypeClassDeclaration"
-
-    -- Currently we are only checking usability based on the type class currently
-    -- being defined.  If the mentioned arguments don't include a covering set,
-    -- then we won't be able to find a instance.
-    checkMemberIsUsable :: TypeClassData -> T.SynonymMap -> T.KindMap -> (Ident, SourceType) -> m ()
-    checkMemberIsUsable newClass syns kinds (ident, memberTy) = do
-      memberTy' <- T.replaceAllTypeSynonymsM syns kinds memberTy
-      let mentionedArgIndexes = S.fromList (mapMaybe argToIndex (freeTypeVariables memberTy'))
-      let leftovers = map (`S.difference` mentionedArgIndexes) (coveringSets newClass)
-
-      unless (any null leftovers) . throwError . errorMessage $
-        let
-          solutions = map (map (fst . (args !!)) . S.toList) leftovers
-        in
-          UnusableDeclaration ident (nub solutions)
 
 addTypeClassDictionaries
   :: (MonadState CheckState m)
diff --git a/src/Language/PureScript/TypeChecker/Entailment.hs b/src/Language/PureScript/TypeChecker/Entailment.hs
--- a/src/Language/PureScript/TypeChecker/Entailment.hs
+++ b/src/Language/PureScript/TypeChecker/Entailment.hs
@@ -11,7 +11,7 @@
   ) where
 
 import Prelude
-import Protolude (ordNub)
+import Protolude (ordNub, headMay)
 
 import Control.Arrow (second, (&&&))
 import Control.Monad.Error.Class (MonadError(..))
@@ -22,7 +22,7 @@
 import Data.Either (lefts, partitionEithers)
 import Data.Foldable (for_, fold, toList)
 import Data.Function (on)
-import Data.Functor (($>))
+import Data.Functor (($>), (<&>))
 import Data.List (delete, findIndices, minimumBy, nubBy, sortOn, tails)
 import Data.Maybe (catMaybes, fromMaybe, listToMaybe, mapMaybe)
 import Data.Map qualified as M
@@ -33,7 +33,8 @@
 import Data.List.NonEmpty (NonEmpty(..))
 import Data.List.NonEmpty qualified as NEL
 
-import Language.PureScript.AST (Binder(..), ErrorMessageHint(..), Expr(..), Literal(..), pattern NullSourceSpan, everywhereOnValuesTopDownM, nullSourceSpan)
+import Language.PureScript.AST (Binder(..), ErrorMessageHint(..), Expr(..), Literal(..), pattern NullSourceSpan, everywhereOnValuesTopDownM, nullSourceSpan, everythingOnValues)
+import Language.PureScript.AST.Declarations (UnknownsHint(..))
 import Language.PureScript.Crash (internalError)
 import Language.PureScript.Environment (Environment(..), FunctionalDependency(..), TypeClassData(..), dictTypeName, kindRow, tyBoolean, tyInt, tyString)
 import Language.PureScript.Errors (MultipleErrors, SimpleErrorMessage(..), addHint, addHints, errorMessage, rethrow)
@@ -250,9 +251,11 @@
             env <- lift . lift $ gets checkEnv
             let classesInScope = typeClasses env
             TypeClassData
-              { typeClassDependencies
+              { typeClassArguments
+              , typeClassDependencies
               , typeClassIsEmpty
               , typeClassCoveringSets
+              , typeClassMembers 
               } <- case M.lookup className' classesInScope of
                 Nothing -> throwError . errorMessage $ UnknownClass className'
                 Just tcd -> pure tcd
@@ -276,7 +279,9 @@
                                     else Left (Left (tcdToInstanceDescription tcd)) -- can't continue with this chain yet, need proof of apartness
 
                   lefts [found]
-            solution <- lift . lift $ unique kinds'' tys'' ambiguous instances (unknownsInAllCoveringSets tys'' typeClassCoveringSets)
+            solution <- lift . lift 
+              $ unique kinds'' tys'' ambiguous instances 
+              $ unknownsInAllCoveringSets (fst . (typeClassArguments !!)) typeClassMembers tys'' typeClassCoveringSets
             case solution of
               Solved substs tcd -> do
                 -- Note that we solved something.
@@ -354,7 +359,7 @@
                       (substituteType currentSubst . replaceAllTypeVars (M.toList subst) $ instKind)
                       (substituteType currentSubst tyKind)
 
-            unique :: [SourceType] -> [SourceType] -> [Qualified (Either SourceType Ident)] -> [(a, TypeClassDict)] -> Bool -> m (EntailsResult a)
+            unique :: [SourceType] -> [SourceType] -> [Qualified (Either SourceType Ident)] -> [(a, TypeClassDict)] -> UnknownsHint -> m (EntailsResult a)
             unique kindArgs tyArgs ambiguous [] unks
               | solverDeferErrors = return Deferred
               -- We need a special case for nullary type classes, since we want
@@ -421,9 +426,42 @@
               let fields = [ ("reflectType", Abs (VarBinder nullSourceSpan UnusedIdent) (asExpression ref)) ] in
               pure $ App (Constructor nullSourceSpan (coerceProperName . dictTypeName <$> C.Reflectable)) (Literal nullSourceSpan (ObjectLiteral fields))
 
-            unknownsInAllCoveringSets :: [SourceType] -> S.Set (S.Set Int) -> Bool
-            unknownsInAllCoveringSets tyArgs = all (\s -> any (`S.member` s) unkIndices)
-              where unkIndices = findIndices containsUnknowns tyArgs
+            unknownsInAllCoveringSets :: (Int -> Text) -> [(Ident, SourceType, Maybe (S.Set (NEL.NonEmpty Int)))] -> [SourceType] -> S.Set (S.Set Int) -> UnknownsHint
+            unknownsInAllCoveringSets indexToArgText tyClassMembers tyArgs coveringSets = do
+              let unkIndices = findIndices containsUnknowns tyArgs
+              if all (\s -> any (`S.member` s) unkIndices) coveringSets then 
+                fromMaybe Unknowns unknownsRequiringVtas
+              else 
+                NoUnknowns
+              where
+                unknownsRequiringVtas = do
+                  tyClassModuleName <- getQual className'
+                  let
+                    tyClassMemberVta :: M.Map (Qualified Ident) [[Text]]
+                    tyClassMemberVta = M.fromList $ mapMaybe qualifyAndFilter tyClassMembers
+                      where
+                        -- Only keep type class members that need VTAs to resolve their type class instances
+                        qualifyAndFilter (ident, _, mbVtaRequiredArgs) = mbVtaRequiredArgs <&> \vtaRequiredArgs ->
+                          (Qualified (ByModuleName tyClassModuleName) ident, map (map indexToArgText . NEL.toList) $ S.toList vtaRequiredArgs)
+
+                    tyClassMembersInExpr :: Expr -> [(Qualified Ident, [[Text]])]
+                    tyClassMembersInExpr = getVars
+                      where
+                        (_, getVars, _, _, _) = everythingOnValues (++) ignore getVarIdents ignore ignore ignore
+                        ignore = const []
+                        getVarIdents = \case
+                          Var _ ident | Just vtas <- M.lookup ident tyClassMemberVta -> 
+                            [(ident, vtas)]
+                          _ -> 
+                            []
+
+                    getECTExpr = \case
+                      ErrorCheckingType expr _ -> Just expr
+                      _ -> Nothing
+                      
+                  tyClassMembers' <- headMay $ mapMaybe (fmap tyClassMembersInExpr . getECTExpr) hints
+                  membersWithVtas <- NEL.nonEmpty tyClassMembers'
+                  pure $ UnknownsWithVtaRequiringArgs membersWithVtas
 
         -- Turn a DictionaryValue into a Expr
         subclassDictionaryValue :: Expr -> Qualified (ProperName 'ClassName) -> Integer -> Expr
diff --git a/src/Language/PureScript/TypeChecker/Entailment/Coercible.hs b/src/Language/PureScript/TypeChecker/Entailment/Coercible.hs
--- a/src/Language/PureScript/TypeChecker/Entailment/Coercible.hs
+++ b/src/Language/PureScript/TypeChecker/Entailment/Coercible.hs
@@ -37,7 +37,7 @@
 
 import Language.PureScript.Crash (internalError)
 import Language.PureScript.Environment (DataDeclType(..), Environment(..), TypeKind(..), unapplyKinds)
-import Language.PureScript.Errors (DeclarationRef(..), ErrorMessageHint(..), ExportSource, ImportDeclarationType(..), MultipleErrors, SimpleErrorMessage(..), SourceAnn, errorMessage)
+import Language.PureScript.Errors (DeclarationRef(..), ErrorMessageHint(..), ExportSource, ImportDeclarationType(..), MultipleErrors, SimpleErrorMessage(..), SourceAnn, errorMessage, UnknownsHint(..))
 import Language.PureScript.Names (ModuleName, ProperName, ProperNameType(..), Qualified(..), byMaybeModuleName, toMaybeModuleName)
 import Language.PureScript.TypeChecker.Kinds (elaborateKind, freshKindWithKind, unifyKinds')
 import Language.PureScript.TypeChecker.Monad (CheckState(..))
@@ -531,7 +531,8 @@
   -- "Consider adding a type annotation" hint, because annotating kinds to
   -- instantiate unknowns in Coercible constraints should never resolve
   -- NoInstanceFound errors.
-  errorMessage $ NoInstanceFound (srcConstraint Prim.Coercible [k] [a, b] Nothing) [] (any containsUnknowns [a, b])
+  errorMessage $ NoInstanceFound (srcConstraint Prim.Coercible [k] [a, b] Nothing) [] 
+    $ if any containsUnknowns [a, b] then Unknowns else NoUnknowns
 
 -- | Constraints of the form @Coercible a b@ can be solved if the two arguments
 -- are the same. Since we currently don't support higher-rank arguments in
diff --git a/src/Language/PureScript/TypeChecker/Synonyms.hs b/src/Language/PureScript/TypeChecker/Synonyms.hs
--- a/src/Language/PureScript/TypeChecker/Synonyms.hs
+++ b/src/Language/PureScript/TypeChecker/Synonyms.hs
@@ -7,7 +7,6 @@
   ( SynonymMap
   , KindMap
   , replaceAllTypeSynonyms
-  , replaceAllTypeSynonymsM
   ) where
 
 import Prelude
@@ -61,12 +60,3 @@
 replaceAllTypeSynonyms d = do
   env <- getEnv
   either throwError return $ replaceAllTypeSynonyms' (typeSynonyms env) (types env) d
-
--- | Replace fully applied type synonyms by explicitly providing a 'SynonymMap'.
-replaceAllTypeSynonymsM
-  :: MonadError MultipleErrors m
-  => SynonymMap
-  -> KindMap
-  -> SourceType
-  -> m SourceType
-replaceAllTypeSynonymsM syns kinds = either throwError pure . replaceAllTypeSynonyms' syns kinds
diff --git a/src/Language/PureScript/Types.hs b/src/Language/PureScript/Types.hs
--- a/src/Language/PureScript/Types.hs
+++ b/src/Language/PureScript/Types.hs
@@ -4,7 +4,7 @@
 module Language.PureScript.Types where
 
 import Prelude
-import Protolude (ordNub)
+import Protolude (ordNub, fromMaybe)
 
 import Codec.Serialise (Serialise)
 import Control.Applicative ((<|>))
@@ -18,7 +18,7 @@
 import Data.Foldable (fold, foldl')
 import Data.IntSet qualified as IS
 import Data.List (sortOn)
-import Data.Maybe (fromMaybe, isJust)
+import Data.Maybe (isJust)
 import Data.Text (Text)
 import Data.Text qualified as T
 import GHC.Generics (Generic)
@@ -530,7 +530,7 @@
   go bs m (ForAll ann vis v mbK t sco)
     | v `elem` keys = go bs (filter ((/= v) . fst) m) $ ForAll ann vis v mbK' t sco
     | v `elem` usedVars =
-      let v' = genName v (keys ++ bs ++ usedVars)
+      let v' = genPureName v (keys ++ bs ++ usedVars)
           t' = go bs [(v, TypeVar ann v')] t
       in ForAll ann vis v' mbK' (go (v' : bs) m t') sco
     | otherwise = ForAll ann vis v mbK' (go (v : bs) m t) sco
@@ -545,10 +545,12 @@
   go bs m (ParensInType ann t) = ParensInType ann (go bs m t)
   go _  _ ty = ty
 
-  genName orig inUse = try' 0 where
-    try' :: Integer -> Text
-    try' n | (orig <> T.pack (show n)) `elem` inUse = try' (n + 1)
-           | otherwise = orig <> T.pack (show n)
+genPureName :: Text -> [Text] -> Text
+genPureName orig inUse = try' 0
+  where
+  try' :: Integer -> Text
+  try' n | (orig <> T.pack (show n)) `elem` inUse = try' (n + 1)
+         | otherwise = orig <> T.pack (show n)
 
 -- | Add visible type abstractions to top-level foralls.
 addVisibility :: [(Text, TypeVarVisibility)] -> Type a -> Type a
@@ -597,11 +599,24 @@
 quantify ty = foldr (\arg t -> ForAll (getAnnForType ty) TypeVarInvisible arg Nothing t Nothing) ty $ freeTypeVariables ty
 
 -- | Move all universal quantifiers to the front of a type
-moveQuantifiersToFront :: Type a -> Type a
-moveQuantifiersToFront = go [] [] where
-  go qs cs (ForAll ann vis q mbK ty sco) = go ((ann, q, sco, mbK, vis) : qs) cs ty
-  go qs cs (ConstrainedType ann c ty) = go qs ((ann, c) : cs) ty
-  go qs cs ty = foldl (\ty' (ann, q, sco, mbK, vis) -> ForAll ann vis q mbK ty' sco) (foldl (\ty' (ann, c) -> ConstrainedType ann c ty') ty cs) qs
+moveQuantifiersToFront :: a -> Type a -> Type a
+moveQuantifiersToFront syntheticAnn = go [] [] 
+  where
+  go qs cs = \case
+    ForAll ann vis q mbK ty sco -> do
+      let 
+        cArgs :: [Text] = cs >>= constraintArgs . snd >>= freeTypeVariables
+        (q'', ty')
+          | q `elem` cArgs = do
+              let q' = genPureName q $ cArgs <> freeTypeVariables ty
+              (q', replaceTypeVars q (TypeVar syntheticAnn q') ty)
+          | otherwise =
+              (q, ty)
+      go ((ann, q'', sco, mbK, vis) : qs) cs ty'
+    ConstrainedType ann c ty ->
+      go qs ((ann, c) : cs) ty
+    ty -> 
+      foldl (\ty' (ann, q, sco, mbK, vis) -> ForAll ann vis q mbK ty' sco) (foldl (\ty' (ann, c) -> ConstrainedType ann c ty') ty cs) qs
 
 -- | Check if a type contains `forall`
 containsForAll :: Type a -> Bool
diff --git a/tests/purs/failing/ClassHeadNoVTA1.out b/tests/purs/failing/ClassHeadNoVTA1.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA1.out
@@ -0,0 +1,25 @@
+Error found:
+in module [33mMain[0m
+at tests/purs/failing/ClassHeadNoVTA1.purs:8:10 - 8:19 (line 8, column 10 - line 8, column 19)
+
+  No type class instance was found for
+  [33m                [0m
+  [33m  Main.Single t0[0m
+  [33m                [0m
+  The instance head contains unknown type variables.
+
+  Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. [33mtyClassMember @Int[0m).
+    [33mMain.useSingle[0m
+      tyNotAppearInBody
+
+while checking that type [33mforall (t12 :: Type) (@tyNotAppearInBody :: t12). Single @t12 tyNotAppearInBody => Int[0m
+  is at least as general as type [33mInt[0m
+while checking that expression [33museSingle[0m
+  has type [33mInt[0m
+in value declaration [33msingle[0m
+
+where [33mt0[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA1.purs b/tests/purs/failing/ClassHeadNoVTA1.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA1.purs
@@ -0,0 +1,8 @@
+-- @shouldFailWith NoInstanceFound
+module Main where
+
+class Single tyNotAppearInBody where
+  useSingle :: Int
+
+single :: Int
+single = useSingle
diff --git a/tests/purs/failing/ClassHeadNoVTA2.out b/tests/purs/failing/ClassHeadNoVTA2.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA2.out
@@ -0,0 +1,27 @@
+Error found:
+in module [33mMain[0m
+at tests/purs/failing/ClassHeadNoVTA2.purs:10:9 - 10:17 (line 10, column 9 - line 10, column 17)
+
+  No type class instance was found for
+  [33m               [0m
+  [33m  Main.Multi t0[0m
+  [33m             t1[0m
+  [33m               [0m
+  The instance head contains unknown type variables.
+
+  Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. [33mtyClassMember @Int[0m).
+    [33mMain.useMulti[0m
+      tyNotAppearInBody, norThisOne
+
+while checking that type [33mforall (t20 :: Type) (t21 :: Type) (@tyNotAppearInBody :: t20) (@norThisOne :: t21). Multi @t20 @t21 tyNotAppearInBody norThisOne => Int[0m
+  is at least as general as type [33mInt[0m
+while checking that expression [33museMulti[0m
+  has type [33mInt[0m
+in value declaration [33mmulti[0m
+
+where [33mt0[0m is an unknown type
+      [33mt1[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA2.purs b/tests/purs/failing/ClassHeadNoVTA2.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA2.purs
@@ -0,0 +1,11 @@
+-- @shouldFailWith NoInstanceFound
+module Main where
+
+import Prelude
+
+class Multi tyNotAppearInBody norThisOne where
+  useMulti :: Int
+
+multi :: Int
+multi = useMulti
+
diff --git a/tests/purs/failing/ClassHeadNoVTA3.out b/tests/purs/failing/ClassHeadNoVTA3.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA3.out
@@ -0,0 +1,28 @@
+Error found:
+in module [33mMain[0m
+at tests/purs/failing/ClassHeadNoVTA3.purs:8:16 - 8:36 (line 8, column 16 - line 8, column 36)
+
+  No type class instance was found for
+  [33m                       [0m
+  [33m  Main.MultiMissing Int[0m
+  [33m                    t2 [0m
+  [33m                       [0m
+  The instance head contains unknown type variables.
+
+  Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. [33mtyClassMember @Int[0m).
+    [33mMain.useMultiMissing[0m
+      tyNotAppearInBody, norThisOne
+
+while checking that type [33mforall (@norThisOne :: t0). MultiMissing @t1 @t0 Int norThisOne => Int[0m
+  is at least as general as type [33mInt[0m
+while checking that expression [33museMultiMissing[0m
+  has type [33mInt[0m
+in value declaration [33mmultiMissing[0m
+
+where [33mt1[0m is an unknown type
+      [33mt0[0m is an unknown type
+      [33mt2[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA3.purs b/tests/purs/failing/ClassHeadNoVTA3.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA3.purs
@@ -0,0 +1,9 @@
+-- @shouldFailWith NoInstanceFound
+module Main where
+
+class MultiMissing tyNotAppearInBody norThisOne where
+  useMultiMissing :: Int
+
+multiMissing :: Int
+multiMissing = useMultiMissing @Int
+
diff --git a/tests/purs/failing/ClassHeadNoVTA4.out b/tests/purs/failing/ClassHeadNoVTA4.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA4.out
@@ -0,0 +1,27 @@
+Error found:
+in module [33mMain[0m
+at tests/purs/failing/ClassHeadNoVTA4.purs:8:11 - 8:21 (line 8, column 11 - line 8, column 21)
+
+  No type class instance was found for
+  [33m                 [0m
+  [33m  Main.MultiFd t0[0m
+  [33m               t1[0m
+  [33m                 [0m
+  The instance head contains unknown type variables.
+
+  Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. [33mtyClassMember @Int[0m).
+    [33mMain.useMultiFd[0m
+      tyNotAppearInBody
+
+while checking that type [33mforall (t20 :: Type) (t21 :: Type) (@tyNotAppearInBody :: t20) (@norThisOne :: t21). MultiFd @t20 @t21 tyNotAppearInBody norThisOne => Int[0m
+  is at least as general as type [33mInt[0m
+while checking that expression [33museMultiFd[0m
+  has type [33mInt[0m
+in value declaration [33mmultiFd[0m
+
+where [33mt0[0m is an unknown type
+      [33mt1[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA4.purs b/tests/purs/failing/ClassHeadNoVTA4.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA4.purs
@@ -0,0 +1,8 @@
+-- @shouldFailWith NoInstanceFound
+module Main where
+
+class MultiFd tyNotAppearInBody norThisOne | tyNotAppearInBody -> norThisOne where
+  useMultiFd :: Int
+
+multiFd :: Int
+multiFd = useMultiFd
diff --git a/tests/purs/failing/ClassHeadNoVTA5.out b/tests/purs/failing/ClassHeadNoVTA5.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA5.out
@@ -0,0 +1,29 @@
+Error found:
+in module [33mMain[0m
+at tests/purs/failing/ClassHeadNoVTA5.purs:10:15 - 10:29 (line 10, column 15 - line 10, column 29)
+
+  No type class instance was found for
+  [33m                     [0m
+  [33m  Main.MultiFdBidi t0[0m
+  [33m                   t1[0m
+  [33m                     [0m
+  The instance head contains unknown type variables.
+
+  Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. [33mtyClassMember @Int[0m).
+    [33mMain.useMultiFdBidi[0m
+      One of the following sets of type variables:
+        tyNotAppearInBody
+        norThisOne
+
+while checking that type [33mforall (t20 :: Type) (t21 :: Type) (@tyNotAppearInBody :: t20) (@norThisOne :: t21). MultiFdBidi @t20 @t21 tyNotAppearInBody norThisOne => Int[0m
+  is at least as general as type [33mInt[0m
+while checking that expression [33museMultiFdBidi[0m
+  has type [33mInt[0m
+in value declaration [33mmultiFdBidi[0m
+
+where [33mt0[0m is an unknown type
+      [33mt1[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA5.purs b/tests/purs/failing/ClassHeadNoVTA5.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA5.purs
@@ -0,0 +1,10 @@
+-- @shouldFailWith NoInstanceFound
+module Main where
+
+-- Verify that args in output match order defined here:
+-- `tyNotAppearInBody` appears before `norThisOne`
+class MultiFdBidi tyNotAppearInBody norThisOne | tyNotAppearInBody -> norThisOne, norThisOne -> tyNotAppearInBody where
+  useMultiFdBidi :: Int
+
+multiFdBidi :: Int
+multiFdBidi = useMultiFdBidi
diff --git a/tests/purs/failing/ClassHeadNoVTA6a.out b/tests/purs/failing/ClassHeadNoVTA6a.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA6a.out
@@ -0,0 +1,37 @@
+Error found:
+in module [33mMain[0m
+at tests/purs/failing/ClassHeadNoVTA6a.purs:12:15 - 12:25 (line 12, column 15 - line 12, column 25)
+
+  No type class instance was found for
+  [33m                           [0m
+  [33m  Main.MultiCoveringSets t0[0m
+  [33m                         t1[0m
+  [33m                         t2[0m
+  [33m                         t3[0m
+  [33m                         t4[0m
+  [33m                         t5[0m
+  [33m                           [0m
+  The instance head contains unknown type variables.
+
+  Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. [33mtyClassMember @Int[0m).
+    [33mMain.noneOfSets[0m
+      One of the following sets of type variables:
+        a, b
+        e, f
+
+while checking that type [33mforall (t82 :: Type) (t83 :: Type) (@a :: Type) (@b :: t82) (@c :: Type) (@d :: Type) (@e :: t83) (@f :: Type). MultiCoveringSets @t82 @t83 a b c d e f => Int[0m
+  is at least as general as type [33mInt[0m
+while checking that expression [33mnoneOfSets[0m
+  has type [33mInt[0m
+in value declaration [33mnoneOfSets'[0m
+
+where [33mt0[0m is an unknown type
+      [33mt1[0m is an unknown type
+      [33mt2[0m is an unknown type
+      [33mt3[0m is an unknown type
+      [33mt4[0m is an unknown type
+      [33mt5[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA6a.purs b/tests/purs/failing/ClassHeadNoVTA6a.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA6a.purs
@@ -0,0 +1,12 @@
+-- @shouldFailWith NoInstanceFound
+module Main where
+
+class MultiCoveringSets a b c d e f | a b -> c d e f, f e -> a b c d where
+  noneOfSets :: Int
+
+  partialOfABSet :: a -> { c :: c, d :: d }
+
+  partialOfFESet :: f -> { c :: c, d :: d }
+
+noneOfSets' :: Int
+noneOfSets' = noneOfSets
diff --git a/tests/purs/failing/ClassHeadNoVTA6b.out b/tests/purs/failing/ClassHeadNoVTA6b.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA6b.out
@@ -0,0 +1,50 @@
+Error found:
+in module [33mMain[0m
+at tests/purs/failing/ClassHeadNoVTA6b.purs:16:19 - 16:33 (line 16, column 19 - line 16, column 33)
+
+  No type class instance was found for
+  [33m                           [0m
+  [33m  Main.MultiCoveringSets a0[0m
+  [33m                         t3[0m
+  [33m                         c1[0m
+  [33m                         d2[0m
+  [33m                         t4[0m
+  [33m                         t5[0m
+  [33m                           [0m
+  The instance head contains unknown type variables.
+
+  Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. [33mtyClassMember @Int[0m).
+    [33mMain.partialOfABSet[0m
+      One of the following sets of type variables:
+        b
+        e, f
+
+while checking that type [33mforall (t70 :: Type) (t71 :: Type) (@a :: Type) (@b :: t70) (@c :: Type) (@d :: Type) (@e :: t71) (@f :: Type).[0m
+                         [33m  MultiCoveringSets @t70 @t71 a b c d e f => a                                                                 [0m
+                         [33m                                             -> { c :: c                                                       [0m
+                         [33m                                                , d :: d                                                       [0m
+                         [33m                                                }                                                              [0m
+  is at least as general as type [33ma0          [0m
+                                 [33m-> { c :: c1[0m
+                                 [33m   , d :: d2[0m
+                                 [33m   }        [0m
+while checking that expression [33mpartialOfABSet[0m
+  has type [33ma0          [0m
+           [33m-> { c :: c1[0m
+           [33m   , d :: d2[0m
+           [33m   }        [0m
+in value declaration [33mpartialOfABSet'[0m
+
+where [33ma0[0m is a rigid type variable
+        bound at (line 16, column 19 - line 16, column 33)
+      [33mc1[0m is a rigid type variable
+        bound at (line 16, column 19 - line 16, column 33)
+      [33md2[0m is a rigid type variable
+        bound at (line 16, column 19 - line 16, column 33)
+      [33mt3[0m is an unknown type
+      [33mt4[0m is an unknown type
+      [33mt5[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA6b.purs b/tests/purs/failing/ClassHeadNoVTA6b.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA6b.purs
@@ -0,0 +1,16 @@
+-- @shouldFailWith NoInstanceFound
+module Main where
+
+class MultiCoveringSets a b c d e f | a b -> c d e f, f e -> a b c d where
+  noneOfSets :: Int
+
+  partialOfABSet :: a -> { c :: c, d :: d }
+
+  partialOfFESet :: f -> { c :: c, d :: d }
+
+partialOfABSet' 
+  :: forall a b c d e f
+   . MultiCoveringSets a b c d e f
+  => a
+  -> { c :: c, d :: d }
+partialOfABSet' = partialOfABSet
diff --git a/tests/purs/failing/ClassHeadNoVTA6c.out b/tests/purs/failing/ClassHeadNoVTA6c.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA6c.out
@@ -0,0 +1,50 @@
+Error found:
+in module [33mMain[0m
+at tests/purs/failing/ClassHeadNoVTA6c.purs:16:19 - 16:33 (line 16, column 19 - line 16, column 33)
+
+  No type class instance was found for
+  [33m                           [0m
+  [33m  Main.MultiCoveringSets t3[0m
+  [33m                         t4[0m
+  [33m                         c1[0m
+  [33m                         d2[0m
+  [33m                         t5[0m
+  [33m                         f0[0m
+  [33m                           [0m
+  The instance head contains unknown type variables.
+
+  Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. [33mtyClassMember @Int[0m).
+    [33mMain.partialOfFESet[0m
+      One of the following sets of type variables:
+        a, b
+        e
+
+while checking that type [33mforall (t58 :: Type) (t59 :: Type) (@a :: Type) (@b :: t58) (@c :: Type) (@d :: Type) (@e :: t59) (@f :: Type).[0m
+                         [33m  MultiCoveringSets @t58 @t59 a b c d e f => f                                                                 [0m
+                         [33m                                             -> { c :: c                                                       [0m
+                         [33m                                                , d :: d                                                       [0m
+                         [33m                                                }                                                              [0m
+  is at least as general as type [33mf0          [0m
+                                 [33m-> { c :: c1[0m
+                                 [33m   , d :: d2[0m
+                                 [33m   }        [0m
+while checking that expression [33mpartialOfFESet[0m
+  has type [33mf0          [0m
+           [33m-> { c :: c1[0m
+           [33m   , d :: d2[0m
+           [33m   }        [0m
+in value declaration [33mpartialOfFESet'[0m
+
+where [33mc1[0m is a rigid type variable
+        bound at (line 16, column 19 - line 16, column 33)
+      [33md2[0m is a rigid type variable
+        bound at (line 16, column 19 - line 16, column 33)
+      [33mf0[0m is a rigid type variable
+        bound at (line 16, column 19 - line 16, column 33)
+      [33mt3[0m is an unknown type
+      [33mt4[0m is an unknown type
+      [33mt5[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA6c.purs b/tests/purs/failing/ClassHeadNoVTA6c.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA6c.purs
@@ -0,0 +1,16 @@
+-- @shouldFailWith NoInstanceFound
+module Main where
+
+class MultiCoveringSets a b c d e f | a b -> c d e f, f e -> a b c d where
+  noneOfSets :: Int
+
+  partialOfABSet :: a -> { c :: c, d :: d }
+
+  partialOfFESet :: f -> { c :: c, d :: d }
+
+partialOfFESet'
+  :: forall a b c d e f
+   . MultiCoveringSets a b c d e f
+  => f
+  -> { c :: c, d :: d }
+partialOfFESet' = partialOfFESet
diff --git a/tests/purs/failing/ClassHeadNoVTA7.out b/tests/purs/failing/ClassHeadNoVTA7.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA7.out
@@ -0,0 +1,25 @@
+Error found:
+in module [33mClassHeadNoVTA7[0m
+at tests/purs/failing/ClassHeadNoVTA7.purs:12:8 - 12:26 (line 12, column 8 - line 12, column 26)
+
+  No type class instance was found for
+  [33m                              [0m
+  [33m  ClassHeadNoVTA7.TestClass t1[0m
+  [33m                            t2[0m
+  [33m                              [0m
+  The instance head contains unknown type variables. Consider adding a type annotation.
+
+while applying a function [33mtestMethod[0m
+  of type [33mTestClass @t0 t1 t2 => Maybe t1 -> Int[0m
+  to argument [33mNothing[0m
+while checking that expression [33mtestMethod Nothing[0m
+  has type [33mInt[0m
+in value declaration [33mtest[0m
+
+where [33mt0[0m is an unknown type
+      [33mt1[0m is an unknown type
+      [33mt2[0m is an unknown type
+
+See https://github.com/purescript/documentation/blob/master/errors/NoInstanceFound.md for more information,
+or to contribute content related to this error.
+
diff --git a/tests/purs/failing/ClassHeadNoVTA7.purs b/tests/purs/failing/ClassHeadNoVTA7.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/failing/ClassHeadNoVTA7.purs
@@ -0,0 +1,12 @@
+-- @shouldFailWith NoInstanceFound
+module ClassHeadNoVTA7 where
+
+import Prelude
+
+import Data.Maybe (Maybe(..))
+
+class TestClass a b | a -> b, b -> a where
+  testMethod :: Maybe a -> Int
+
+test :: Int
+test = testMethod Nothing
diff --git a/tests/purs/failing/TypedHole.out b/tests/purs/failing/TypedHole.out
--- a/tests/purs/failing/TypedHole.out
+++ b/tests/purs/failing/TypedHole.out
@@ -7,12 +7,14 @@
   [33m  Effect Unit[0m
   [33m             [0m
   You could substitute the hole with one of these values:
-  [33m                                                                  [0m
-  [33m  Data.Monoid.mempty          :: forall @m. Monoid m => m         [0m
-  [33m  Effect.Class.Console.clear  :: forall m. MonadEffect m => m Unit[0m
-  [33m  Effect.Console.clear        :: Effect Unit                      [0m
-  [33m  Main.main                   :: Effect Unit                      [0m
-  [33m                                                                  [0m
+  [33m                                                                     [0m
+  [33m  Data.Monoid.mempty             :: forall @m. Monoid m => m         [0m
+  [33m  Effect.Class.Console.clear     :: forall m. MonadEffect m => m Unit[0m
+  [33m  Effect.Class.Console.groupEnd  :: forall m. MonadEffect m => m Unit[0m
+  [33m  Effect.Console.clear           :: Effect Unit                      [0m
+  [33m  Effect.Console.groupEnd        :: Effect Unit                      [0m
+  [33m  Main.main                      :: Effect Unit                      [0m
+  [33m                                                                     [0m
 
 in value declaration [33mmain[0m
 
diff --git a/tests/purs/failing/UnusableTypeClassMethod.out b/tests/purs/failing/UnusableTypeClassMethod.out
deleted file mode 100644
--- a/tests/purs/failing/UnusableTypeClassMethod.out
+++ /dev/null
@@ -1,12 +0,0 @@
-Error found:
-in module [33mMain[0m
-at tests/purs/failing/UnusableTypeClassMethod.purs:4:1 - 6:9 (line 4, column 1 - line 6, column 9)
-
-  The declaration [33mc[0m contains arguments that couldn't be determined.
-  These arguments are: { a }
-
-in type class declaration for [33mC[0m
-
-See https://github.com/purescript/documentation/blob/master/errors/UnusableDeclaration.md for more information,
-or to contribute content related to this error.
-
diff --git a/tests/purs/failing/UnusableTypeClassMethod.purs b/tests/purs/failing/UnusableTypeClassMethod.purs
deleted file mode 100644
--- a/tests/purs/failing/UnusableTypeClassMethod.purs
+++ /dev/null
@@ -1,7 +0,0 @@
--- @shouldFailWith UnusableDeclaration
-module Main where
-
-class C a b where
-  -- type doesn't contain `a`, which is also required to determine an instance
-  c :: b
-
diff --git a/tests/purs/failing/UnusableTypeClassMethodConflictingIdent.out b/tests/purs/failing/UnusableTypeClassMethodConflictingIdent.out
deleted file mode 100644
--- a/tests/purs/failing/UnusableTypeClassMethodConflictingIdent.out
+++ /dev/null
@@ -1,12 +0,0 @@
-Error found:
-in module [33mMain[0m
-at tests/purs/failing/UnusableTypeClassMethodConflictingIdent.purs:4:1 - 6:19 (line 4, column 1 - line 6, column 19)
-
-  The declaration [33mc[0m contains arguments that couldn't be determined.
-  These arguments are: { a }
-
-in type class declaration for [33mC[0m
-
-See https://github.com/purescript/documentation/blob/master/errors/UnusableDeclaration.md for more information,
-or to contribute content related to this error.
-
diff --git a/tests/purs/failing/UnusableTypeClassMethodConflictingIdent.purs b/tests/purs/failing/UnusableTypeClassMethodConflictingIdent.purs
deleted file mode 100644
--- a/tests/purs/failing/UnusableTypeClassMethodConflictingIdent.purs
+++ /dev/null
@@ -1,7 +0,0 @@
--- @shouldFailWith UnusableDeclaration
-module Main where
-
-class C a where
-  -- type doesn't contain the type class var `a`
-  c :: forall a. a
-
diff --git a/tests/purs/failing/UnusableTypeClassMethodSynonym.out b/tests/purs/failing/UnusableTypeClassMethodSynonym.out
deleted file mode 100644
--- a/tests/purs/failing/UnusableTypeClassMethodSynonym.out
+++ /dev/null
@@ -1,12 +0,0 @@
-Error found:
-in module [33mMain[0m
-at tests/purs/failing/UnusableTypeClassMethodSynonym.purs:6:1 - 8:11 (line 6, column 1 - line 8, column 11)
-
-  The declaration [33mc[0m contains arguments that couldn't be determined.
-  These arguments are: { a }
-
-in type class declaration for [33mC[0m
-
-See https://github.com/purescript/documentation/blob/master/errors/UnusableDeclaration.md for more information,
-or to contribute content related to this error.
-
diff --git a/tests/purs/failing/UnusableTypeClassMethodSynonym.purs b/tests/purs/failing/UnusableTypeClassMethodSynonym.purs
deleted file mode 100644
--- a/tests/purs/failing/UnusableTypeClassMethodSynonym.purs
+++ /dev/null
@@ -1,9 +0,0 @@
--- @shouldFailWith UnusableDeclaration
-module Main where
-
-type M x = forall a. a
-
-class C a where
-  -- after synonym expansion, the type doesn't actually contain an `a`
-  c :: M a
-
diff --git a/tests/purs/passing/VTAsClassHeads.purs b/tests/purs/passing/VTAsClassHeads.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/passing/VTAsClassHeads.purs
@@ -0,0 +1,196 @@
+module Main where
+
+import Prelude
+import Data.Array as Array
+import Data.Array.NonEmpty as NEA
+import Data.Maybe (Maybe(..))
+import Data.Either (Either(..), either)
+import Data.Foldable (traverse_)
+import Data.Traversable (sequence)
+import Effect (Effect)
+import Effect.Console (log)
+
+class Singleton x where
+  singleton :: String
+
+instance Singleton Int where
+  singleton = "int"
+
+instance Singleton String where
+  singleton = "string"
+
+singletonWorks :: Effect (Maybe String)
+singletonWorks = do
+  let
+    left = singleton @Int
+    right = singleton @String
+  pure if left /= right then Nothing else Just "Singleton failed"
+
+class ConflictingIdent :: Type -> Constraint
+class ConflictingIdent a where
+  -- The `a` in the type below should refer to the `a`
+  -- introduced by the `forall`, not the class head.
+  conflictingIdent :: forall a. a -> Int
+
+instance ConflictingIdent String where
+  conflictingIdent _ = 1
+
+instance ConflictingIdent Int where
+  conflictingIdent _ = 2
+
+conflictingIdentWorks :: Effect (Maybe String)
+conflictingIdentWorks = do
+  pure if (1 == conflictingIdent @String 4) then Nothing else Just "ConflictingIdent failed"
+
+type M :: Type -> Type
+type M x = forall a. a -> Int
+
+class ConflictingIdentSynonym :: Type -> Constraint
+class ConflictingIdentSynonym a where
+  -- The `a` in the type below should refer to the `a`
+  -- introduced by the `forall`, not the class head.
+  conflictingIdentSynonym :: M a
+
+instance ConflictingIdentSynonym String where
+  conflictingIdentSynonym _ = 1
+
+instance ConflictingIdentSynonym Int where
+  conflictingIdentSynonym _ = 2
+
+conflictingIdentSynonymWorks :: Effect (Maybe String)
+conflictingIdentSynonymWorks = do
+  pure if (1 == conflictingIdentSynonym @String 4) then Nothing else Just "ConflictingIdentSynonym failed"
+
+class MultiNoFDs a b where
+  multiNoFds :: Int
+
+instance MultiNoFDs Int Int where
+  multiNoFds = 0
+
+instance MultiNoFDs String Int where
+  multiNoFds = 1
+
+multiNoFdsWorks :: Effect (Maybe String)
+multiNoFdsWorks = do
+  let
+    left = multiNoFds @Int @Int
+    right = multiNoFds @String @Int
+  pure if left /= right then Nothing else Just "MultiNoFDs failed"
+
+class MultiWithFDs a b | a -> b where
+  multiWithFDs :: Int
+
+instance MultiWithFDs Int Int where
+  multiWithFDs = 0
+
+instance MultiWithFDs String Int where
+  multiWithFDs = 1
+
+multiWithFdsWorks :: Effect (Maybe String)
+multiWithFdsWorks = do
+  let
+    left = multiWithFDs @Int
+    right = multiWithFDs @String
+  pure if left /= right then Nothing else Just "MultiWithFds failed"
+
+class MultiWithBidiFDs a b | a -> b, b -> a where
+  multiWithBidiFDs :: Int
+
+instance MultiWithBidiFDs Int Int where
+  multiWithBidiFDs = 0
+
+instance MultiWithBidiFDs String String where
+  multiWithBidiFDs = 1
+
+multiWithBidiFDsLeftWorks :: Effect (Maybe String)
+multiWithBidiFDsLeftWorks = do
+  let
+    left = multiWithBidiFDs @Int
+    right = multiWithBidiFDs @String
+  pure if left /= right then Nothing else Just "MultiWithFds failed"
+
+multiWithBidiFDsRightWorks :: Effect (Maybe String)
+multiWithBidiFDsRightWorks = do
+  let
+    left = multiWithBidiFDs @_ @Int
+    right = multiWithBidiFDs @_ @String
+  pure if left /= right then Nothing else Just "MultiWithFds failed"
+
+class Superclass a where
+  superClassValue :: a
+
+class Superclass a <= MainClass a where
+  mainClassInt :: Int
+
+data A2 = A2
+
+derive instance Eq A2
+
+instance Superclass A2 where
+  superClassValue = A2
+
+instance MainClass A2 where
+  mainClassInt = 0
+
+data B2 = B2
+
+derive instance Eq B2
+
+instance Superclass B2 where
+  superClassValue = B2
+
+instance MainClass B2 where
+  mainClassInt = 3
+
+mainClassWorks :: Effect (Maybe String)
+mainClassWorks = do
+  let
+    test1 = 0 == mainClassInt @A2
+    test2 = A2 == superClassValue @A2
+  pure if test1 && test2 then Nothing else Just "MainClass failed"
+
+class MultiCoveringSets a b c d e f | a b -> c d e f, f e -> a b c d where
+  noneOfSets :: Int
+
+  partialOfABSet :: a -> { c :: c, d :: d }
+
+  partialOfFESet :: f -> { c :: c, d :: d }
+
+instance MultiCoveringSets Boolean Boolean String String Int Int where
+  noneOfSets = 1
+  partialOfABSet a = { c: if a then "101" else "100", d: "1" }
+  partialOfFESet f = { c: show f, d: "1" }
+
+instance MultiCoveringSets Int Int String String Boolean Boolean where
+  noneOfSets = 2
+  partialOfABSet a = { c: show a, d: "2" }
+  partialOfFESet f = { c: show f, d: "2" }
+
+multiCoveringSetsWorks :: Effect (Maybe String)
+multiCoveringSetsWorks = do
+  let
+    test1a = 1 == noneOfSets @Boolean @Boolean
+    test1b = "101" == (partialOfABSet @Boolean @Boolean true).c
+    test1c = show 3 == (partialOfFESet @_ @_ @_ @_ @Int @Int 3).c
+    test2a = 2 == noneOfSets @_ @_ @_ @_ @Boolean @Boolean
+    test2b = show 20 == (partialOfABSet @_ @_ @_ @_ @Boolean @Boolean 20).c
+    test2c = show false == (partialOfFESet @_ @_ @_ @_ @Boolean @Boolean false).c
+    passes = test1a && test1b && test1c && test2a && test2b && test2c
+  pure if passes then Nothing else Just "MultiCoveringSets failed"
+
+main = do
+  arr' <- sequence
+    [ singletonWorks
+    , conflictingIdentWorks
+    , conflictingIdentSynonymWorks
+    , multiNoFdsWorks
+    , multiWithFdsWorks
+    , multiWithBidiFDsLeftWorks
+    , multiWithBidiFDsRightWorks
+    , mainClassWorks
+    ]
+  case NEA.fromArray $ Array.catMaybes arr' of
+    Just errs ->
+      log $ "Errors..." <> (Array.intercalate "\n" $ NEA.toArray errs)
+    Nothing ->
+      log "Done"
diff --git a/tests/purs/publish/basic-example/output/Effect.Class.Console/docs.json b/tests/purs/publish/basic-example/output/Effect.Class.Console/docs.json
--- a/tests/purs/publish/basic-example/output/Effect.Class.Console/docs.json
+++ b/tests/purs/publish/basic-example/output/Effect.Class.Console/docs.json
@@ -1,1 +1,1 @@
-{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[9,51],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[9,1]},"title":"log"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[12,62],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[12,1]},"title":"logShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[15,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[15,1]},"title":"warn"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[18,63],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[18,1]},"title":"warnShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[21,53],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[21,1]},"title":"error"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[24,64],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[24,1]},"title":"errorShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[27,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[27,1]},"title":"info"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[30,63],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[30,1]},"title":"infoShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[33,53],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[33,1]},"title":"debug"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[36,64],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[36,1]},"title":"debugShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[39,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[39,1]},"title":"time"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[42,55],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[42,1]},"title":"timeLog"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[45,55],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[45,1]},"title":"timeEnd"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[48,43],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[48,1]},"title":"clear"}],"name":"Effect.Class.Console","reExports":[]}
+{"comments":null,"declarations":[{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[10,51],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[10,1]},"title":"log"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[13,62],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[13,1]},"title":"logShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[16,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[16,1]},"title":"warn"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[19,63],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[19,1]},"title":"warnShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[22,53],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[22,1]},"title":"error"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[25,64],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[25,1]},"title":"errorShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[28,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[28,1]},"title":"info"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[31,63],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[31,1]},"title":"infoShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[34,53],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[34,1]},"title":"debug"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[37,64],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[37,1]},"title":"debugShow"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[40,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[40,1]},"title":"time"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[43,55],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[43,1]},"title":"timeLog"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[46,55],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[46,1]},"title":"timeEnd"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[49,43],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[49,1]},"title":"clear"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[52,53],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[52,1]},"title":"group"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[55,62],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[55,1]},"title":"groupCollapsed"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[58,46],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[58,1]},"title":"groupEnd"},{"children":[],"comments":null,"info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"m","kind":null,"skolem":null,"type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"m","tag":"TypeVar"}],"constraintClass":[["Effect","Class"],"MonadEffect"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":"m","tag":"TypeVar"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[61,61],"name":"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs","start":[61,1]},"title":"grouped"}],"name":"Effect.Class.Console","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/Effect.Console/docs.json b/tests/purs/publish/basic-example/output/Effect.Console/docs.json
--- a/tests/purs/publish/basic-example/output/Effect.Console/docs.json
+++ b/tests/purs/publish/basic-example/output/Effect.Console/docs.json
@@ -1,1 +1,1 @@
-{"comments":null,"declarations":[{"children":[],"comments":"Write a message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[11,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[9,1]},"title":"log"},{"children":[],"comments":"Write a value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[15,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[15,1]},"title":"logShow"},{"children":[],"comments":"Write an warning to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[21,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[19,1]},"title":"warn"},{"children":[],"comments":"Write an warning value to the console, using its `Show` instance to produce\na `String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[25,49],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[25,1]},"title":"warnShow"},{"children":[],"comments":"Write an error to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[31,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[29,1]},"title":"error"},{"children":[],"comments":"Write an error value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[35,50],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[35,1]},"title":"errorShow"},{"children":[],"comments":"Write an info message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[41,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[39,1]},"title":"info"},{"children":[],"comments":"Write an info value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[45,49],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[45,1]},"title":"infoShow"},{"children":[],"comments":"Write an debug message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[51,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[49,1]},"title":"debug"},{"children":[],"comments":"Write an debug value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[55,50],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[55,1]},"title":"debugShow"},{"children":[],"comments":"Start a named timer.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[59,45],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[59,1]},"title":"time"},{"children":[],"comments":"Print the time since a named timer started in milliseconds.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[62,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[62,1]},"title":"timeLog"},{"children":[],"comments":"Stop a named timer and print time since it started in milliseconds.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[65,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[65,1]},"title":"timeEnd"},{"children":[],"comments":"Clears the console\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[68,36],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[68,1]},"title":"clear"}],"name":"Effect.Console","reExports":[]}
+{"comments":null,"declarations":[{"children":[],"comments":"Write a message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[12,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[10,1]},"title":"log"},{"children":[],"comments":"Write a value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[16,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[16,1]},"title":"logShow"},{"children":[],"comments":"Write an warning to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[22,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[20,1]},"title":"warn"},{"children":[],"comments":"Write an warning value to the console, using its `Show` instance to produce\na `String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[26,49],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[26,1]},"title":"warnShow"},{"children":[],"comments":"Write an error to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[32,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[30,1]},"title":"error"},{"children":[],"comments":"Write an error value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[36,50],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[36,1]},"title":"errorShow"},{"children":[],"comments":"Write an info message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[42,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[40,1]},"title":"info"},{"children":[],"comments":"Write an info value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[46,49],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[46,1]},"title":"infoShow"},{"children":[],"comments":"Write an debug message to the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[52,17],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[50,1]},"title":"debug"},{"children":[],"comments":"Write an debug value to the console, using its `Show` instance to produce a\n`String`.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"constraintAnn":[],"constraintArgs":[{"annotation":[],"contents":"a","tag":"TypeVar"}],"constraintClass":[["Data","Show"],"Show"],"constraintData":null,"constraintKindArgs":[]},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"ConstrainedType"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[56,50],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[56,1]},"title":"debugShow"},{"children":[],"comments":"Start a named timer.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[60,45],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[60,1]},"title":"time"},{"children":[],"comments":"Print the time since a named timer started in milliseconds.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[63,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[63,1]},"title":"timeLog"},{"children":[],"comments":"Stop a named timer and print time since it started in milliseconds.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[66,48],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[66,1]},"title":"timeEnd"},{"children":[],"comments":"Clears the console\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[69,36],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[69,1]},"title":"clear"},{"children":[],"comments":"Creates a new inline group in the console. This indents following console\nmessages by an additional level, until `groupEnd` is called.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[73,46],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[73,1]},"title":"group"},{"children":[],"comments":"Same as `group`, but groups are collapsed by default.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[76,55],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[76,1]},"title":"groupCollapsed"},{"children":[],"comments":"Exits the current inline group in the console.\n","info":{"declType":"value","type":{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Data","Unit"],"Unit"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":null,"sourceSpan":{"end":[79,39],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[79,1]},"title":"groupEnd"},{"children":[],"comments":"Perform an effect within the context of an inline group in the console.\nCalls `group` and `groupEnd` before and after the effect, respectively.\n","info":{"declType":"value","type":{"annotation":[],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[{"annotation":[],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[],"contents":[{"annotation":[],"contents":[["Effect"],"Effect"],"tag":"TypeConstructor"},{"annotation":[],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"kind":null,"sourceSpan":{"end":[83,52],"name":"../../../support/bower_components/purescript-console/src/Effect/Console.purs","start":[83,1]},"title":"grouped"}],"name":"Effect.Console","reExports":[]}
diff --git a/tests/purs/publish/basic-example/output/cache-db.json b/tests/purs/publish/basic-example/output/cache-db.json
--- a/tests/purs/publish/basic-example/output/cache-db.json
+++ b/tests/purs/publish/basic-example/output/cache-db.json
@@ -1,1 +1,1 @@
-{"Control.Applicative":{"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs":["2022-08-18T20:04:00Z","5889c8a23c34d2d9c7d1fe41df1512314055fafda79900099b37a76451fb6394dac06633caf5c206c432817a9c07b892b18c3b99d1013a298acc85a579aee2f1"]},"Control.Apply":{"../../../support/bower_components/purescript-prelude/src/Control/Apply.js":["2022-08-18T20:04:00Z","73ee829e5dfad80f1d5f957d0e52b1d069ea798919d608b4733cedda4736681ec26d7e33501428966bf213b8a344c1272f7658867780c7237baf90da4c9d5ad3"],"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs":["2022-08-18T20:04:00Z","524e797c42f16dbc375aa2403a4867a5744116d9302bda790333251ccf88d773e079fb8c3af1f87eccdc0c0bbf682b932a48506ca5f51ef441832177fafd4eb0"]},"Control.Bind":{"../../../support/bower_components/purescript-prelude/src/Control/Bind.js":["2022-08-18T20:04:00Z","abbbecd9697ae2109a9b74f70bfce37c0589e0d99b10e090660e1c76a491744c84fd459c53172256c70cdaffde3f0dc1abe0464fa32b977cf71e789425ca8bfe"],"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs":["2022-08-18T20:04:00Z","27f217ea2d5e4ab2745ad05b6d0aa36ee8809dc9d5c22162f722b2f003cf140bb18747f158daeca469a1083b7b054f9a6a9681d092598b3ea25cada7fe510d75"]},"Control.Category":{"../../../support/bower_components/purescript-prelude/src/Control/Category.purs":["2022-08-18T20:04:00Z","6431719d022f6d4230f338935381a7e116a18cdf80c67bdf76d87a7624518bc9fd1e4adfe45c8a59d77f07caf7c8e9faae741e99fada42455143c4fb924e7988"]},"Control.Monad":{"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs":["2022-08-18T20:04:00Z","5d13918b1f360fb201125c334399566fdef398f1b44af0754cb261b6e514481b26a0d4ad892944d4a52d513c41a20702d9973be000d9e2436c4fb48940cc07ca"]},"Control.Semigroupoid":{"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs":["2022-08-18T20:04:00Z","f5b1e9fdd81471d37f763b7fff8bd94f2111fd9ad6092bc925e409d5c69261860045230cde5c95ebbb3141acce54372bcf4d01c9b044fd59959822c9576135e8"]},"Data.Boolean":{"../../../support/bower_components/purescript-prelude/src/Data/Boolean.purs":["2022-08-18T20:04:00Z","aa81cf83948d1c45051dcfb835b0caef7a8ed8a39c58d8126f4efde1973880dbcd169d36bbe8c82a62586c386810bf0824f018674a93c606e43bc451fb6c3819"]},"Data.BooleanAlgebra":{"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs":["2022-08-18T20:04:00Z","464f2df7f5bc3fc5e64cb0462c841f93fa2a609545e10f0adce637185e345aa45eed2a7e164ba648bb947168279c999ef8cd9f5dab9fce9af3b9329a8829b971"]},"Data.Bounded":{"../../../support/bower_components/purescript-prelude/src/Data/Bounded.js":["2022-08-18T20:04:00Z","8bfa62b2e886ce6d58793d840513c68cefc1fa0c4a15a5e6a0c0ee5d607fea425f8080365c0f3f421116c4362eba447617cd65a221ee1e4cc0a75610752d3b75"],"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs":["2022-08-18T20:04:00Z","36762aa05b71843e1d2f23cc64b1a17ea3acf91745de39e8723a04f3cc12f50c83e6a9b8a58c0463eaed0e93dfe3112e1f896130bab0660a5a009391f00ed468"]},"Data.Bounded.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs":["2022-08-18T20:04:00Z","15f4f3499dd9c2a1f37345357db2f131cc57e37a4ddfaa8497dabd3d123abd8b9670bdd3910b84b6c44c8b63bf1873af783adb1edc8455985f244b6ecbef733b"]},"Data.CommutativeRing":{"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs":["2022-08-18T20:04:00Z","c8bf53bf06454a74ba3a605d100b59bb5ba9111dd20e073713422c080075555b653bcaddde078d55130e737de30ba336920a099a6016fd4158af88b1f430b631"]},"Data.DivisionRing":{"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs":["2022-08-18T20:04:00Z","1f3c74ecd87798ace30371f036ef1590f7e4dbc5be05f51162f9b3700d61c0befd6a5b53ace34626103e500043de3b67225de2c442841106f6d8960658355aae"]},"Data.Eq":{"../../../support/bower_components/purescript-prelude/src/Data/Eq.js":["2022-08-18T20:04:00Z","6718a356e77f3fe29c3f353f02fd94583b4edf5a0a0d7bdfdbcb046e7ef3440781aaa466ee88f12be6a72f274eb9c51d4d051673f4893fc408e9053bb8d84368"],"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs":["2022-08-18T20:04:00Z","65598d7093548c9848e1c661bb778ebd402f09b4584570c09082d765997056b335bf0f05397cd788c44bb2f00b3bd2115cba2ed45033ade9ac40d91efd64301d"]},"Data.Eq.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs":["2022-08-18T20:04:00Z","88d9841c3e55b1063721bc8ff168aa8b53cd3581a8c3ffee6ed71a96ba4d2d20b7b454cb0e7f13b2fa7a6bcaf4ca0dfc609ce624f5ad74eece1e13a93b0a121d"]},"Data.EuclideanRing":{"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.js":["2022-08-18T20:04:00Z","9bf37abbb8d5c826e2152f62c99251e9cfeac8226ead81262527a2c544765336b6a0a8df731664d1b7d7804ad821ddfb0bd2c58d91d61fea6232d6adaeb6fc69"],"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs":["2022-08-18T20:04:00Z","252c8162d273ea69e96619d760b48f7302ad048ed2bdd542695fbf0489948d24369b2bd40addd7fa505e810cf411727fe9fd57546a3011ebe1fa3c534beac414"]},"Data.Field":{"../../../support/bower_components/purescript-prelude/src/Data/Field.purs":["2022-08-18T20:04:00Z","21c8a682ad74b9389e1c538ca1dbc5cc4da34b13945a1bd11812631f8f56e723e65f9452eba5b43ea8209f88c57e8566529667673b6b78ade1a08350a28b04cc"]},"Data.Function":{"../../../support/bower_components/purescript-prelude/src/Data/Function.purs":["2022-08-18T20:04:00Z","42320940aa4cdbab54308acc9ad8eac48cb3facf1f695eeb32c8473bdf31e6d51e9d689bd256c833cedd3cf40882c484153f56e8582bfc1353cc0f3b7867aa0f"]},"Data.Functor":{"../../../support/bower_components/purescript-prelude/src/Data/Functor.js":["2022-08-18T20:04:00Z","889e7781cb01bcb3007c8400d844b250905a7cc893d0391a09c2f907c8993271b0daf081548206d4c5a3948fdc7a51df5a99c6fe38c61a90ccdcb38f22886ae7"],"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs":["2022-08-18T20:04:00Z","077d9d6d3e754807e5200b970988daf12894942995bb7f8698c0e0a2d08b64842dc5257efe088c045d7d0a6de2a10cb6c58b976b26243f66f69d0fa9791f60e7"]},"Data.Generic.Rep":{"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs":["2022-08-18T20:04:00Z","69c6cac0ae8035b7a0bad28c1fb8c0c0d99bc93087392f5dbebac6a30bca3b5fa352741f93f432b7aa4c617e1f23d59939a69c716775e84375e112b4bb9175d1"]},"Data.HeytingAlgebra":{"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.js":["2022-08-18T20:04:00Z","3603479b96cd22a9b312ef922b95d5b342ecd8d4b1b8984a15fcfa64b92ec66128f14fdc795c2c525c9b6e6912934f2ea542df9f30b3caac3bbb085ba3326265"],"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs":["2022-08-18T20:04:00Z","d8942636d4f1804c94eb7527b48f48f500843d34e2ec0b45515f4d5c836ce4437806feb4a603735f1a799243f244a72c6fda218ffe5d58f7f0cbbcbfadb01bbd"]},"Data.HeytingAlgebra.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs":["2022-08-18T20:04:00Z","ea49a37bf16af73cb930d0eb573bca8cc8e63de0a796c504f531f05d503976a59f464fa5a039a2ae9b486c9ba70857008bfb06acaaeaad6ee0f9f429355043e2"]},"Data.Monoid":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs":["2022-08-18T20:04:00Z","172ecdf1da579ac35b44cb9d87424b7bb45f27b2f49a0e51be34cc1d2863a15929436321b8ed46059601b3ba171053b4129067066be0596da42607d697d8d484"]},"Data.Monoid.Additive":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs":["2022-08-18T20:04:00Z","514e26851127fb9b52c618a36f17758513d9a7ea6724866b208e2c2447c3c3b3a9a18218b715b765e5e1e00908e2ebc0d9f2e67171ab3e46543a01508b54de67"]},"Data.Monoid.Conj":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs":["2022-08-18T20:04:00Z","441eb08d322aa39654f68fe39676ba5fe470252adc4da087c590245ff7b0b624885c57ade6e66f24485862873767198678a219afbd7c2fc68f2ca59978d7d9c2"]},"Data.Monoid.Disj":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs":["2022-08-18T20:04:00Z","f38cea70c5a7216b6b17c796dfbc8b08d9f05bed22d81d3784322f9f06f127435b4c9009a2027c24efc998c781796b9007bc70bc3bd1eee935b1a9695077bc7a"]},"Data.Monoid.Dual":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs":["2022-08-18T20:04:00Z","54058218c4c5323d42e95d54a1c64b9e2ded8afdaeef2f846ef123bd4fd6772551e2158a6a9802ca327bbc4fb995f4fd5d416fd59c7a6efc8f8fe9bc5e7dc709"]},"Data.Monoid.Endo":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs":["2022-08-18T20:04:00Z","543f16c8df42353334deddd7e25a58340aaa3f4a902a997d6b08e3128ca0afb82b3ac720e8ca8d4475cfc063906df1439afd3f2e22f7684aeb9ee0bc2992e774"]},"Data.Monoid.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs":["2022-08-18T20:04:00Z","9e2ef0cf0469c1e798f8767cb472ee1b0103dfd6b08ed0a777c89d5043358b70cf14c2784ea59f05795f648daf80e11b2150fa89a05bc8c0afa6dafeb2fc09ac"]},"Data.Monoid.Multiplicative":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs":["2022-08-18T20:04:00Z","f0c40f939ed3a3f00712fc7485926733668101c201e5d57e19d72ce6be84455b7b2d7360d747154a9d071df9b72e4e5ad2ac2a36db093a1b702fed4e6f4de9e3"]},"Data.NaturalTransformation":{"../../../support/bower_components/purescript-prelude/src/Data/NaturalTransformation.purs":["2022-08-18T20:04:00Z","6b9fc42ec524a517d464dea99867c64345cdbcbada4260a772373a956961ad1c9a4a3a4f8ed4a0c7c7f3e36120068954141841c5d6bdc4e5898ea06435104bb7"]},"Data.Newtype":{"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs":["2022-04-27T15:04:33Z","4289a67b60c9760f41b6fb86b71bb0bb2c576b279ae447be7fe4c3ff408ea4705ca17522647bcd8da582ef646a4abfd53fc3310d4d9d6c68816a8ccd480140be"]},"Data.Ord":{"../../../support/bower_components/purescript-prelude/src/Data/Ord.js":["2022-08-18T20:04:00Z","d3f620d4e07a9ce41745d2df0c43701dc41726e4be601b790bb054089ca52d97380299b90fe88f166e2195d76c4cbe195d941e8619fd2d14242a6a347881b1a9"],"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs":["2022-08-18T20:04:00Z","f0ca6f6131e2699584e55846fb9f4300b778c12f39f0c5a19286081c39c537c1a511c69d01ca6d7216776c73daeeced9ae0b6e1281d4b2e39abb4cc5432e6b75"]},"Data.Ord.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs":["2022-08-18T20:04:00Z","d566cfa79ec03e335f632d3edc3b913081583188d8496897c1b0904c1895525caeb5b0464b76d40ae5ef79e5c7b516ad061c1d98aa6e1c649f555be4c839087e"]},"Data.Ordering":{"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs":["2022-08-18T20:04:00Z","321b8de9b25c2616a3dbc6bff2e2def1cf7592ad54e575bd2b62d440d5dd88d7b5332f6c68fc010424e36ac13d61b5bcaadcf619ff940c667360b2c102f6e2af"]},"Data.Reflectable":{"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.js":["2022-08-18T20:04:00Z","1bbaef3b7bb472cbc13eb30d9a75f2d580d5950fe692a3e137322558a651d0352f8a7499538028404a611afecde17f551b7cbc4030bdaf0b50e6828362cf29bd"],"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs":["2022-08-18T20:04:00Z","02beca227031091fd31673ff64153c2f84ba22c61f362acc88411643233fe91d8cabf6206319785f7b910d8dff7c81528ca7e05048e284bfc720e71f804f7a6c"]},"Data.Ring":{"../../../support/bower_components/purescript-prelude/src/Data/Ring.js":["2022-08-18T20:04:00Z","bce8767b39bf1d9af8182f80f91e376db07ae8912b991fcea6eaf37900f91c6b6ede6fb874c40ff5b3d40fc6a893468d0f0cb31106f6188ca52514ae0a081da6"],"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs":["2022-08-18T20:04:00Z","4e727f1f786ced8ce8202805713a9a2810c6ef9522694535c219ce22f66e032ca374163c82db137dd7d2ded6ae4dc2786ee8b6efd1df810d5cbda9c7e2c0832e"]},"Data.Ring.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs":["2022-08-18T20:04:00Z","8c94b1a5765b99950600e690e01e3da65cd7e43fe78f651f8531c45d41775572af47e62f21705857c82ae52251626c34f0f41180ee0563115f749c7bc0459324"]},"Data.Semigroup":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.js":["2022-08-18T20:04:00Z","fb416511575b93baf1081317aba42e97da52fdb724c07110a05c360e5254528f54715a47fa22ed4298bbdfb62c8641c8ea5ef92af9a259d51164cf541026fabc"],"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs":["2022-08-18T20:04:00Z","43c3fbd4ab0a7a5346bdc69ce26ad3e6143f1f0e92bf8e7601af43d2ad68cfe4080411029ba3a9f29592f75e139a8fb923e67237b8e1cee3024c54b32ccf0b5d"]},"Data.Semigroup.First":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs":["2022-08-18T20:04:00Z","8ff357056284af9050954e7695babcc76f5f632019b66f635a49502170508a37b2cb20a2e863f022bf077726480d2cc32951fb910c80559806e50830f25e884e"]},"Data.Semigroup.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs":["2022-08-18T20:04:00Z","8c07803971e03a3c3d4a617198eae5a3e825c411fd17af68eee57571717a2301eaf5ec5bd34bfddf14da1f1c40d780ab9538d02f22d1d19117135388c848ca89"]},"Data.Semigroup.Last":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs":["2022-08-18T20:04:00Z","75b3660341f9c0570031d2304c83eb8592098e2d96577c030ae969b3b958d00b21234c2c836377e7b338e4323fa4aa0c97a4a8abb7ed49e2741907a411eb0b08"]},"Data.Semiring":{"../../../support/bower_components/purescript-prelude/src/Data/Semiring.js":["2022-08-18T20:04:00Z","71c1f69848adaf5667acc7668bb53b42a14dd64f559e72d88ae879f123aa9d5892debb1758067b8c48bfcdbbd7392e2e9ea0e5d18603ab62dbdde5032662cf33"],"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs":["2022-08-18T20:04:00Z","70fe8b0c9eb461a6058b6c89ad182fb99d4e930f158b015a386ee67ece2445b5e7aba5e539dd7377822de1b045b80d1e439f191a2274c6e95c7fb3dba535d8c0"]},"Data.Semiring.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs":["2022-08-18T20:04:00Z","e1aeb61208e3b96999f07cc41307d50fa8025c2f688e9dc24d7286933a11cc1ec253375e10e25fb578801bcda7b18b7342bb13275f4ca72478a2aff9ea872799"]},"Data.Show":{"../../../support/bower_components/purescript-prelude/src/Data/Show.js":["2022-08-18T20:04:00Z","588e533a8d2dce9eb3815e58e38fe06ac7758adb50295d4325c47db26031d0ea48cb341d5e3d7caaeae40f4d95a9c3c5381feba3a50653d1a76e3835b0628f0d"],"../../../support/bower_components/purescript-prelude/src/Data/Show.purs":["2022-08-18T20:04:00Z","b52834da5151dffab06693e15efb93608a43ab7866901f86ee47191f085fade2d7ebbad800aff8ad7d7171d349e312bfc01dd4e8cad4eb6c12eacd50d9381764"]},"Data.Show.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.js":["2022-08-18T20:04:00Z","f8b9a3c651ceb9e8f2ee15ae532ecd371794b4e9f3b14eb0508656c1ae853654d7e3d3c719a9a98f0dcbc81df3b03266c05d3bc01c9b62d6d8ce29d4794e4b1b"],"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs":["2022-08-18T20:04:00Z","37b5a1168cd88f5f6f2d2a584cfe2c69e326b9f3e62291ec607c6e4a12da144450088fe65e95cbd04204d9c616a04696b5b3d0d7e444e8628b4a1eb3597c534d"]},"Data.Symbol":{"../../../support/bower_components/purescript-prelude/src/Data/Symbol.js":["2022-08-18T20:04:00Z","c980adfe8e297bfe8e257903de3ac13f5675c6f52ed95e8c2786fcacc52adde10b5de56c9432859c3c7c8f51d1866f2e8d4a961d60e1bff656def39e3b3cdcf7"],"../../../support/bower_components/purescript-prelude/src/Data/Symbol.purs":["2022-08-18T20:04:00Z","579409ca0036164a1a0534b266cc1c90de7b020ecea470cdedf0a97cc34ae1f25ab441df9789798dc30f6a4c8f6c6368c79dc5523d9de336e57dcc6325127cb2"]},"Data.Unit":{"../../../support/bower_components/purescript-prelude/src/Data/Unit.js":["2022-08-18T20:04:00Z","d7185d75aa1f2fe353e4e200ab4181472e354d6295cb2e6587a56636b1bc733be77b2f5616b20275fe7be0138a6442b2979864b1b234a813f8d9237baa4cd5f3"],"../../../support/bower_components/purescript-prelude/src/Data/Unit.purs":["2022-08-18T20:04:00Z","425d50d748941435bf7f4d6b61769e2b0931973280ba6dd91dcca3f963cc9223b2a7ccd5827611182348041c0813b3be828e2dacc54933ddc152d6e50f7f2f3d"]},"Data.Void":{"../../../support/bower_components/purescript-prelude/src/Data/Void.purs":["2022-08-18T20:04:00Z","28ae6f4ecd4ee9a07dc5c034f189a8740a9e14bef332d6bab73b8e3b2ea51ed2bec88d84862ff4cd989e671be324b019282a2678a6d73e59f05af414705bd47e"]},"Effect":{"../../../support/bower_components/purescript-effect/src/Effect.js":["2022-04-27T14:04:24Z","9683b917c04f50b5b8a41d8294b101d7787cd0a742840e6f05ec143f881bfb51807a2efd29a9296def2676e7c1860352f3d89f78f9205567575c5040f790da32"],"../../../support/bower_components/purescript-effect/src/Effect.purs":["2022-04-27T14:04:24Z","25ea461900466a6aade8a56c20921d46eb037a71efb12c4265dd378e760843e5793efb9f7cb47322511459136d9d4ecd6d09e5a089a432d96ef4af4530ad8e8d"]},"Effect.Class":{"../../../support/bower_components/purescript-effect/src/Effect/Class.purs":["2022-04-27T14:04:24Z","47e0114539e25826ffba341faf99133ed2499027f0955fa606d563d3504c6b41dc9d425dfa619c0c83b5fc2ab8dbb3c1bf2166b5980c5674fb93560c9b80d585"]},"Effect.Class.Console":{"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs":["2022-04-27T14:11:24Z","5a3a1a7efb4ca9d61673d954d5bed9be6eec0b512fcdffdbcca411b0fe10353da1ec9ac9e32d19f6ffe3ccb358a177cc6238064ae7dee8dfce2363ec26600edc"]},"Effect.Console":{"../../../support/bower_components/purescript-console/src/Effect/Console.js":["2022-04-27T14:11:24Z","37d5914c1c03387fb61991fa0c7273560b38a9cca1ab22a5a1071f58fb5e3cc41952c87e404f22a928e674c04fce0fa18d469b2481d6078645d20650280c9a84"],"../../../support/bower_components/purescript-console/src/Effect/Console.purs":["2022-04-27T14:11:24Z","71c92750574fc7e669d3e0a7d0f40101b91836e69275074eaf3b534fe5f68a6f3b4ebc1dc1f950f89a381996f8bdca297eac522893733bc0fd5ef2ce790af8c7"]},"Effect.Uncurried":{"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.js":["2022-04-27T14:04:24Z","4c6c5db78b72ff3b84623d894b05dd916cc0732dc08d1fd45d8b0768983fdd7377b7299add3c70475459d0e190af99e2176e4c17a8cfbf295c675456bd5ba7d2"],"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs":["2022-04-27T14:04:24Z","a948cb1cab11f5019fe20dd697b5c6e248c3b29c7ab332c2cb9d792cfcb58021a77c0f4f71e1c8d7c0b3b9cb18bd1497a0d2f40680926390f3303ecb1fe25beb"]},"Effect.Unsafe":{"../../../support/bower_components/purescript-effect/src/Effect/Unsafe.js":["2022-04-27T14:04:24Z","e66a1117e55534d61b7cd8e1859b54ef97446e0374116867383d2027bd85b73e510cbd1e4e74067b740fffb66c11e243af8d0976b2dc225d9865d882486cccdd"],"../../../support/bower_components/purescript-effect/src/Effect/Unsafe.purs":["2022-04-27T14:04:24Z","c112c559df0f177472e96655b09165d5535f68caddc2b419b4cdfe796af19b962b0659cb609a2ce501002da7de34e66592b5491ebe6f538824c2db8a1e800ea7"]},"Main":{"src/Main.purs":["2021-10-25T20:49:21Z","55bdd6dd11fb1679cb11793dd2996de21972f7aa53826557273bd649004f5907ff8cf6dff840718a12084c421529c9da7d70f698689d3923ab4ae3d608591c66"]},"Prelude":{"../../../support/bower_components/purescript-prelude/src/Prelude.purs":["2022-08-18T20:04:00Z","c67b6a882790c17476eb477da2cfc71dc4c26f297e7b4581b5ae9b0d08040ea7c7b55ed3afb3e824806e573ea4dd307eaa7cb49cfb2a756973b226ee1023e6fc"]},"Record.Unsafe":{"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.js":["2022-08-18T20:04:00Z","667d613a0e1265a710e98c9f6e64ff791b9e9b7227cdf699c3a25724077c02e42726c807c0387ca4484454fd853d5b41522bf2e048887f22a894413ef80cbb92"],"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.purs":["2022-08-18T20:04:00Z","af8a7c83127f5e61853ad0e572be799c04e321562a375d51ab133706ac6a6777e169b057f01a709ad7aae2d8c7a5ae8daa28eae8793c4fe92e2e8f0cfaecf870"]},"Safe.Coerce":{"../../../support/bower_components/purescript-safe-coerce/src/Safe/Coerce.purs":["2022-04-27T14:56:52Z","595abade13e21ed7893a92b338d9e7c7bf56e9067d51ca25c387d6d93a1c5542925f062e282602e89476a45501645c76dbd57eac31cc4e5c1cf341e2902beb89"]},"Type.Proxy":{"../../../support/bower_components/purescript-prelude/src/Type/Proxy.purs":["2022-08-18T20:04:00Z","333d0ae90b05098eada860ad476ed9e1eacd67d969dc1573c74375610cf8de22e85a358a7783a0a461d7ffa6fe322d8c3e90696be02555a02793ac99aba687f2"]},"Unsafe.Coerce":{"../../../support/bower_components/purescript-unsafe-coerce/src/Unsafe/Coerce.js":["2022-04-27T14:15:44Z","031c3187f7ce65110a359260041309506e1ff39a97b6eb22c9a8f2e5c14b35db87d509bb5929f245c5d80df6ccd6dadf83579ebe4ac46650acdfa34a493cfc0d"],"../../../support/bower_components/purescript-unsafe-coerce/src/Unsafe/Coerce.purs":["2022-04-27T14:15:44Z","04b214d9cbbf0c438bb2af4b25f8db5d04f247059241982f718c6d83322c3180f0eced0eb5c410860dcdb35650e9129a1cffe87f7279308cc4cf6c6570bba74f"]}}
+{"Control.Applicative":{"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs":["2022-08-18T20:04:00Z","5889c8a23c34d2d9c7d1fe41df1512314055fafda79900099b37a76451fb6394dac06633caf5c206c432817a9c07b892b18c3b99d1013a298acc85a579aee2f1"]},"Control.Apply":{"../../../support/bower_components/purescript-prelude/src/Control/Apply.js":["2022-08-18T20:04:00Z","73ee829e5dfad80f1d5f957d0e52b1d069ea798919d608b4733cedda4736681ec26d7e33501428966bf213b8a344c1272f7658867780c7237baf90da4c9d5ad3"],"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs":["2022-08-18T20:04:00Z","524e797c42f16dbc375aa2403a4867a5744116d9302bda790333251ccf88d773e079fb8c3af1f87eccdc0c0bbf682b932a48506ca5f51ef441832177fafd4eb0"]},"Control.Bind":{"../../../support/bower_components/purescript-prelude/src/Control/Bind.js":["2022-08-18T20:04:00Z","abbbecd9697ae2109a9b74f70bfce37c0589e0d99b10e090660e1c76a491744c84fd459c53172256c70cdaffde3f0dc1abe0464fa32b977cf71e789425ca8bfe"],"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs":["2022-08-18T20:04:00Z","27f217ea2d5e4ab2745ad05b6d0aa36ee8809dc9d5c22162f722b2f003cf140bb18747f158daeca469a1083b7b054f9a6a9681d092598b3ea25cada7fe510d75"]},"Control.Category":{"../../../support/bower_components/purescript-prelude/src/Control/Category.purs":["2022-08-18T20:04:00Z","6431719d022f6d4230f338935381a7e116a18cdf80c67bdf76d87a7624518bc9fd1e4adfe45c8a59d77f07caf7c8e9faae741e99fada42455143c4fb924e7988"]},"Control.Monad":{"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs":["2022-08-18T20:04:00Z","5d13918b1f360fb201125c334399566fdef398f1b44af0754cb261b6e514481b26a0d4ad892944d4a52d513c41a20702d9973be000d9e2436c4fb48940cc07ca"]},"Control.Semigroupoid":{"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs":["2022-08-18T20:04:00Z","f5b1e9fdd81471d37f763b7fff8bd94f2111fd9ad6092bc925e409d5c69261860045230cde5c95ebbb3141acce54372bcf4d01c9b044fd59959822c9576135e8"]},"Data.Boolean":{"../../../support/bower_components/purescript-prelude/src/Data/Boolean.purs":["2022-08-18T20:04:00Z","aa81cf83948d1c45051dcfb835b0caef7a8ed8a39c58d8126f4efde1973880dbcd169d36bbe8c82a62586c386810bf0824f018674a93c606e43bc451fb6c3819"]},"Data.BooleanAlgebra":{"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs":["2022-08-18T20:04:00Z","464f2df7f5bc3fc5e64cb0462c841f93fa2a609545e10f0adce637185e345aa45eed2a7e164ba648bb947168279c999ef8cd9f5dab9fce9af3b9329a8829b971"]},"Data.Bounded":{"../../../support/bower_components/purescript-prelude/src/Data/Bounded.js":["2022-08-18T20:04:00Z","8bfa62b2e886ce6d58793d840513c68cefc1fa0c4a15a5e6a0c0ee5d607fea425f8080365c0f3f421116c4362eba447617cd65a221ee1e4cc0a75610752d3b75"],"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs":["2022-08-18T20:04:00Z","36762aa05b71843e1d2f23cc64b1a17ea3acf91745de39e8723a04f3cc12f50c83e6a9b8a58c0463eaed0e93dfe3112e1f896130bab0660a5a009391f00ed468"]},"Data.Bounded.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Bounded/Generic.purs":["2022-08-18T20:04:00Z","15f4f3499dd9c2a1f37345357db2f131cc57e37a4ddfaa8497dabd3d123abd8b9670bdd3910b84b6c44c8b63bf1873af783adb1edc8455985f244b6ecbef733b"]},"Data.CommutativeRing":{"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs":["2022-08-18T20:04:00Z","c8bf53bf06454a74ba3a605d100b59bb5ba9111dd20e073713422c080075555b653bcaddde078d55130e737de30ba336920a099a6016fd4158af88b1f430b631"]},"Data.DivisionRing":{"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs":["2022-08-18T20:04:00Z","1f3c74ecd87798ace30371f036ef1590f7e4dbc5be05f51162f9b3700d61c0befd6a5b53ace34626103e500043de3b67225de2c442841106f6d8960658355aae"]},"Data.Eq":{"../../../support/bower_components/purescript-prelude/src/Data/Eq.js":["2022-08-18T20:04:00Z","6718a356e77f3fe29c3f353f02fd94583b4edf5a0a0d7bdfdbcb046e7ef3440781aaa466ee88f12be6a72f274eb9c51d4d051673f4893fc408e9053bb8d84368"],"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs":["2022-08-18T20:04:00Z","65598d7093548c9848e1c661bb778ebd402f09b4584570c09082d765997056b335bf0f05397cd788c44bb2f00b3bd2115cba2ed45033ade9ac40d91efd64301d"]},"Data.Eq.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Eq/Generic.purs":["2022-08-18T20:04:00Z","88d9841c3e55b1063721bc8ff168aa8b53cd3581a8c3ffee6ed71a96ba4d2d20b7b454cb0e7f13b2fa7a6bcaf4ca0dfc609ce624f5ad74eece1e13a93b0a121d"]},"Data.EuclideanRing":{"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.js":["2022-08-18T20:04:00Z","9bf37abbb8d5c826e2152f62c99251e9cfeac8226ead81262527a2c544765336b6a0a8df731664d1b7d7804ad821ddfb0bd2c58d91d61fea6232d6adaeb6fc69"],"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs":["2022-08-18T20:04:00Z","252c8162d273ea69e96619d760b48f7302ad048ed2bdd542695fbf0489948d24369b2bd40addd7fa505e810cf411727fe9fd57546a3011ebe1fa3c534beac414"]},"Data.Field":{"../../../support/bower_components/purescript-prelude/src/Data/Field.purs":["2022-08-18T20:04:00Z","21c8a682ad74b9389e1c538ca1dbc5cc4da34b13945a1bd11812631f8f56e723e65f9452eba5b43ea8209f88c57e8566529667673b6b78ade1a08350a28b04cc"]},"Data.Function":{"../../../support/bower_components/purescript-prelude/src/Data/Function.purs":["2022-08-18T20:04:00Z","42320940aa4cdbab54308acc9ad8eac48cb3facf1f695eeb32c8473bdf31e6d51e9d689bd256c833cedd3cf40882c484153f56e8582bfc1353cc0f3b7867aa0f"]},"Data.Functor":{"../../../support/bower_components/purescript-prelude/src/Data/Functor.js":["2022-08-18T20:04:00Z","889e7781cb01bcb3007c8400d844b250905a7cc893d0391a09c2f907c8993271b0daf081548206d4c5a3948fdc7a51df5a99c6fe38c61a90ccdcb38f22886ae7"],"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs":["2022-08-18T20:04:00Z","077d9d6d3e754807e5200b970988daf12894942995bb7f8698c0e0a2d08b64842dc5257efe088c045d7d0a6de2a10cb6c58b976b26243f66f69d0fa9791f60e7"]},"Data.Generic.Rep":{"../../../support/bower_components/purescript-prelude/src/Data/Generic/Rep.purs":["2022-08-18T20:04:00Z","69c6cac0ae8035b7a0bad28c1fb8c0c0d99bc93087392f5dbebac6a30bca3b5fa352741f93f432b7aa4c617e1f23d59939a69c716775e84375e112b4bb9175d1"]},"Data.HeytingAlgebra":{"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.js":["2022-08-18T20:04:00Z","3603479b96cd22a9b312ef922b95d5b342ecd8d4b1b8984a15fcfa64b92ec66128f14fdc795c2c525c9b6e6912934f2ea542df9f30b3caac3bbb085ba3326265"],"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs":["2022-08-18T20:04:00Z","d8942636d4f1804c94eb7527b48f48f500843d34e2ec0b45515f4d5c836ce4437806feb4a603735f1a799243f244a72c6fda218ffe5d58f7f0cbbcbfadb01bbd"]},"Data.HeytingAlgebra.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra/Generic.purs":["2022-08-18T20:04:00Z","ea49a37bf16af73cb930d0eb573bca8cc8e63de0a796c504f531f05d503976a59f464fa5a039a2ae9b486c9ba70857008bfb06acaaeaad6ee0f9f429355043e2"]},"Data.Monoid":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid.purs":["2022-08-18T20:04:00Z","172ecdf1da579ac35b44cb9d87424b7bb45f27b2f49a0e51be34cc1d2863a15929436321b8ed46059601b3ba171053b4129067066be0596da42607d697d8d484"]},"Data.Monoid.Additive":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Additive.purs":["2022-08-18T20:04:00Z","514e26851127fb9b52c618a36f17758513d9a7ea6724866b208e2c2447c3c3b3a9a18218b715b765e5e1e00908e2ebc0d9f2e67171ab3e46543a01508b54de67"]},"Data.Monoid.Conj":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Conj.purs":["2022-08-18T20:04:00Z","441eb08d322aa39654f68fe39676ba5fe470252adc4da087c590245ff7b0b624885c57ade6e66f24485862873767198678a219afbd7c2fc68f2ca59978d7d9c2"]},"Data.Monoid.Disj":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Disj.purs":["2022-08-18T20:04:00Z","f38cea70c5a7216b6b17c796dfbc8b08d9f05bed22d81d3784322f9f06f127435b4c9009a2027c24efc998c781796b9007bc70bc3bd1eee935b1a9695077bc7a"]},"Data.Monoid.Dual":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Dual.purs":["2022-08-18T20:04:00Z","54058218c4c5323d42e95d54a1c64b9e2ded8afdaeef2f846ef123bd4fd6772551e2158a6a9802ca327bbc4fb995f4fd5d416fd59c7a6efc8f8fe9bc5e7dc709"]},"Data.Monoid.Endo":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Endo.purs":["2022-08-18T20:04:00Z","543f16c8df42353334deddd7e25a58340aaa3f4a902a997d6b08e3128ca0afb82b3ac720e8ca8d4475cfc063906df1439afd3f2e22f7684aeb9ee0bc2992e774"]},"Data.Monoid.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Generic.purs":["2022-08-18T20:04:00Z","9e2ef0cf0469c1e798f8767cb472ee1b0103dfd6b08ed0a777c89d5043358b70cf14c2784ea59f05795f648daf80e11b2150fa89a05bc8c0afa6dafeb2fc09ac"]},"Data.Monoid.Multiplicative":{"../../../support/bower_components/purescript-prelude/src/Data/Monoid/Multiplicative.purs":["2022-08-18T20:04:00Z","f0c40f939ed3a3f00712fc7485926733668101c201e5d57e19d72ce6be84455b7b2d7360d747154a9d071df9b72e4e5ad2ac2a36db093a1b702fed4e6f4de9e3"]},"Data.NaturalTransformation":{"../../../support/bower_components/purescript-prelude/src/Data/NaturalTransformation.purs":["2022-08-18T20:04:00Z","6b9fc42ec524a517d464dea99867c64345cdbcbada4260a772373a956961ad1c9a4a3a4f8ed4a0c7c7f3e36120068954141841c5d6bdc4e5898ea06435104bb7"]},"Data.Newtype":{"../../../support/bower_components/purescript-newtype/src/Data/Newtype.purs":["2022-04-27T15:04:33Z","4289a67b60c9760f41b6fb86b71bb0bb2c576b279ae447be7fe4c3ff408ea4705ca17522647bcd8da582ef646a4abfd53fc3310d4d9d6c68816a8ccd480140be"]},"Data.Ord":{"../../../support/bower_components/purescript-prelude/src/Data/Ord.js":["2022-08-18T20:04:00Z","d3f620d4e07a9ce41745d2df0c43701dc41726e4be601b790bb054089ca52d97380299b90fe88f166e2195d76c4cbe195d941e8619fd2d14242a6a347881b1a9"],"../../../support/bower_components/purescript-prelude/src/Data/Ord.purs":["2022-08-18T20:04:00Z","f0ca6f6131e2699584e55846fb9f4300b778c12f39f0c5a19286081c39c537c1a511c69d01ca6d7216776c73daeeced9ae0b6e1281d4b2e39abb4cc5432e6b75"]},"Data.Ord.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Ord/Generic.purs":["2022-08-18T20:04:00Z","d566cfa79ec03e335f632d3edc3b913081583188d8496897c1b0904c1895525caeb5b0464b76d40ae5ef79e5c7b516ad061c1d98aa6e1c649f555be4c839087e"]},"Data.Ordering":{"../../../support/bower_components/purescript-prelude/src/Data/Ordering.purs":["2022-08-18T20:04:00Z","321b8de9b25c2616a3dbc6bff2e2def1cf7592ad54e575bd2b62d440d5dd88d7b5332f6c68fc010424e36ac13d61b5bcaadcf619ff940c667360b2c102f6e2af"]},"Data.Reflectable":{"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.js":["2022-08-18T20:04:00Z","1bbaef3b7bb472cbc13eb30d9a75f2d580d5950fe692a3e137322558a651d0352f8a7499538028404a611afecde17f551b7cbc4030bdaf0b50e6828362cf29bd"],"../../../support/bower_components/purescript-prelude/src/Data/Reflectable.purs":["2022-08-18T20:04:00Z","02beca227031091fd31673ff64153c2f84ba22c61f362acc88411643233fe91d8cabf6206319785f7b910d8dff7c81528ca7e05048e284bfc720e71f804f7a6c"]},"Data.Ring":{"../../../support/bower_components/purescript-prelude/src/Data/Ring.js":["2022-08-18T20:04:00Z","bce8767b39bf1d9af8182f80f91e376db07ae8912b991fcea6eaf37900f91c6b6ede6fb874c40ff5b3d40fc6a893468d0f0cb31106f6188ca52514ae0a081da6"],"../../../support/bower_components/purescript-prelude/src/Data/Ring.purs":["2022-08-18T20:04:00Z","4e727f1f786ced8ce8202805713a9a2810c6ef9522694535c219ce22f66e032ca374163c82db137dd7d2ded6ae4dc2786ee8b6efd1df810d5cbda9c7e2c0832e"]},"Data.Ring.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Ring/Generic.purs":["2022-08-18T20:04:00Z","8c94b1a5765b99950600e690e01e3da65cd7e43fe78f651f8531c45d41775572af47e62f21705857c82ae52251626c34f0f41180ee0563115f749c7bc0459324"]},"Data.Semigroup":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.js":["2022-08-18T20:04:00Z","fb416511575b93baf1081317aba42e97da52fdb724c07110a05c360e5254528f54715a47fa22ed4298bbdfb62c8641c8ea5ef92af9a259d51164cf541026fabc"],"../../../support/bower_components/purescript-prelude/src/Data/Semigroup.purs":["2022-08-18T20:04:00Z","43c3fbd4ab0a7a5346bdc69ce26ad3e6143f1f0e92bf8e7601af43d2ad68cfe4080411029ba3a9f29592f75e139a8fb923e67237b8e1cee3024c54b32ccf0b5d"]},"Data.Semigroup.First":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/First.purs":["2022-08-18T20:04:00Z","8ff357056284af9050954e7695babcc76f5f632019b66f635a49502170508a37b2cb20a2e863f022bf077726480d2cc32951fb910c80559806e50830f25e884e"]},"Data.Semigroup.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Generic.purs":["2022-08-18T20:04:00Z","8c07803971e03a3c3d4a617198eae5a3e825c411fd17af68eee57571717a2301eaf5ec5bd34bfddf14da1f1c40d780ab9538d02f22d1d19117135388c848ca89"]},"Data.Semigroup.Last":{"../../../support/bower_components/purescript-prelude/src/Data/Semigroup/Last.purs":["2022-08-18T20:04:00Z","75b3660341f9c0570031d2304c83eb8592098e2d96577c030ae969b3b958d00b21234c2c836377e7b338e4323fa4aa0c97a4a8abb7ed49e2741907a411eb0b08"]},"Data.Semiring":{"../../../support/bower_components/purescript-prelude/src/Data/Semiring.js":["2022-08-18T20:04:00Z","71c1f69848adaf5667acc7668bb53b42a14dd64f559e72d88ae879f123aa9d5892debb1758067b8c48bfcdbbd7392e2e9ea0e5d18603ab62dbdde5032662cf33"],"../../../support/bower_components/purescript-prelude/src/Data/Semiring.purs":["2022-08-18T20:04:00Z","70fe8b0c9eb461a6058b6c89ad182fb99d4e930f158b015a386ee67ece2445b5e7aba5e539dd7377822de1b045b80d1e439f191a2274c6e95c7fb3dba535d8c0"]},"Data.Semiring.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Semiring/Generic.purs":["2022-08-18T20:04:00Z","e1aeb61208e3b96999f07cc41307d50fa8025c2f688e9dc24d7286933a11cc1ec253375e10e25fb578801bcda7b18b7342bb13275f4ca72478a2aff9ea872799"]},"Data.Show":{"../../../support/bower_components/purescript-prelude/src/Data/Show.js":["2022-08-18T20:04:00Z","588e533a8d2dce9eb3815e58e38fe06ac7758adb50295d4325c47db26031d0ea48cb341d5e3d7caaeae40f4d95a9c3c5381feba3a50653d1a76e3835b0628f0d"],"../../../support/bower_components/purescript-prelude/src/Data/Show.purs":["2022-08-18T20:04:00Z","b52834da5151dffab06693e15efb93608a43ab7866901f86ee47191f085fade2d7ebbad800aff8ad7d7171d349e312bfc01dd4e8cad4eb6c12eacd50d9381764"]},"Data.Show.Generic":{"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.js":["2022-08-18T20:04:00Z","f8b9a3c651ceb9e8f2ee15ae532ecd371794b4e9f3b14eb0508656c1ae853654d7e3d3c719a9a98f0dcbc81df3b03266c05d3bc01c9b62d6d8ce29d4794e4b1b"],"../../../support/bower_components/purescript-prelude/src/Data/Show/Generic.purs":["2022-08-18T20:04:00Z","37b5a1168cd88f5f6f2d2a584cfe2c69e326b9f3e62291ec607c6e4a12da144450088fe65e95cbd04204d9c616a04696b5b3d0d7e444e8628b4a1eb3597c534d"]},"Data.Symbol":{"../../../support/bower_components/purescript-prelude/src/Data/Symbol.js":["2022-08-18T20:04:00Z","c980adfe8e297bfe8e257903de3ac13f5675c6f52ed95e8c2786fcacc52adde10b5de56c9432859c3c7c8f51d1866f2e8d4a961d60e1bff656def39e3b3cdcf7"],"../../../support/bower_components/purescript-prelude/src/Data/Symbol.purs":["2022-08-18T20:04:00Z","579409ca0036164a1a0534b266cc1c90de7b020ecea470cdedf0a97cc34ae1f25ab441df9789798dc30f6a4c8f6c6368c79dc5523d9de336e57dcc6325127cb2"]},"Data.Unit":{"../../../support/bower_components/purescript-prelude/src/Data/Unit.js":["2022-08-18T20:04:00Z","d7185d75aa1f2fe353e4e200ab4181472e354d6295cb2e6587a56636b1bc733be77b2f5616b20275fe7be0138a6442b2979864b1b234a813f8d9237baa4cd5f3"],"../../../support/bower_components/purescript-prelude/src/Data/Unit.purs":["2022-08-18T20:04:00Z","425d50d748941435bf7f4d6b61769e2b0931973280ba6dd91dcca3f963cc9223b2a7ccd5827611182348041c0813b3be828e2dacc54933ddc152d6e50f7f2f3d"]},"Data.Void":{"../../../support/bower_components/purescript-prelude/src/Data/Void.purs":["2022-08-18T20:04:00Z","28ae6f4ecd4ee9a07dc5c034f189a8740a9e14bef332d6bab73b8e3b2ea51ed2bec88d84862ff4cd989e671be324b019282a2678a6d73e59f05af414705bd47e"]},"Effect":{"../../../support/bower_components/purescript-effect/src/Effect.js":["2022-04-27T14:04:24Z","9683b917c04f50b5b8a41d8294b101d7787cd0a742840e6f05ec143f881bfb51807a2efd29a9296def2676e7c1860352f3d89f78f9205567575c5040f790da32"],"../../../support/bower_components/purescript-effect/src/Effect.purs":["2022-04-27T14:04:24Z","25ea461900466a6aade8a56c20921d46eb037a71efb12c4265dd378e760843e5793efb9f7cb47322511459136d9d4ecd6d09e5a089a432d96ef4af4530ad8e8d"]},"Effect.Class":{"../../../support/bower_components/purescript-effect/src/Effect/Class.purs":["2022-04-27T14:04:24Z","47e0114539e25826ffba341faf99133ed2499027f0955fa606d563d3504c6b41dc9d425dfa619c0c83b5fc2ab8dbb3c1bf2166b5980c5674fb93560c9b80d585"]},"Effect.Class.Console":{"../../../support/bower_components/purescript-console/src/Effect/Class/Console.purs":["2023-10-08T17:07:02Z","83dd2086be201a053908c2f6083c342c7ac3dd1eedd16d28eda405f97fe51c4d50363e837c79a95aef78de222d2fcf579c19fed4b5c3ba9f16ea7e537912a996"]},"Effect.Console":{"../../../support/bower_components/purescript-console/src/Effect/Console.js":["2023-10-08T17:07:02Z","b3d1b0aacf58d500207502e4fda74bf6ee203c3650c8ccc061eaafcac512ce76ee1347aa7d44630a1420013fd7ae262d5b7755b216002125d9c58d29ee84ec03"],"../../../support/bower_components/purescript-console/src/Effect/Console.purs":["2023-10-08T17:07:02Z","44ab0ee3661fb4d26d5cbeb22d2dcf111b3a4391c9f20c0ef906a27714d8a90524bd22eb1351c2795388f66241983242089b58377a8ea0723f17b259ace592c0"]},"Effect.Uncurried":{"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.js":["2022-04-27T14:04:24Z","4c6c5db78b72ff3b84623d894b05dd916cc0732dc08d1fd45d8b0768983fdd7377b7299add3c70475459d0e190af99e2176e4c17a8cfbf295c675456bd5ba7d2"],"../../../support/bower_components/purescript-effect/src/Effect/Uncurried.purs":["2022-04-27T14:04:24Z","a948cb1cab11f5019fe20dd697b5c6e248c3b29c7ab332c2cb9d792cfcb58021a77c0f4f71e1c8d7c0b3b9cb18bd1497a0d2f40680926390f3303ecb1fe25beb"]},"Effect.Unsafe":{"../../../support/bower_components/purescript-effect/src/Effect/Unsafe.js":["2022-04-27T14:04:24Z","e66a1117e55534d61b7cd8e1859b54ef97446e0374116867383d2027bd85b73e510cbd1e4e74067b740fffb66c11e243af8d0976b2dc225d9865d882486cccdd"],"../../../support/bower_components/purescript-effect/src/Effect/Unsafe.purs":["2022-04-27T14:04:24Z","c112c559df0f177472e96655b09165d5535f68caddc2b419b4cdfe796af19b962b0659cb609a2ce501002da7de34e66592b5491ebe6f538824c2db8a1e800ea7"]},"Main":{"src/Main.purs":["2021-10-25T20:49:21Z","55bdd6dd11fb1679cb11793dd2996de21972f7aa53826557273bd649004f5907ff8cf6dff840718a12084c421529c9da7d70f698689d3923ab4ae3d608591c66"]},"Prelude":{"../../../support/bower_components/purescript-prelude/src/Prelude.purs":["2022-08-18T20:04:00Z","c67b6a882790c17476eb477da2cfc71dc4c26f297e7b4581b5ae9b0d08040ea7c7b55ed3afb3e824806e573ea4dd307eaa7cb49cfb2a756973b226ee1023e6fc"]},"Record.Unsafe":{"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.js":["2022-08-18T20:04:00Z","667d613a0e1265a710e98c9f6e64ff791b9e9b7227cdf699c3a25724077c02e42726c807c0387ca4484454fd853d5b41522bf2e048887f22a894413ef80cbb92"],"../../../support/bower_components/purescript-prelude/src/Record/Unsafe.purs":["2022-08-18T20:04:00Z","af8a7c83127f5e61853ad0e572be799c04e321562a375d51ab133706ac6a6777e169b057f01a709ad7aae2d8c7a5ae8daa28eae8793c4fe92e2e8f0cfaecf870"]},"Safe.Coerce":{"../../../support/bower_components/purescript-safe-coerce/src/Safe/Coerce.purs":["2022-04-27T14:56:52Z","595abade13e21ed7893a92b338d9e7c7bf56e9067d51ca25c387d6d93a1c5542925f062e282602e89476a45501645c76dbd57eac31cc4e5c1cf341e2902beb89"]},"Type.Proxy":{"../../../support/bower_components/purescript-prelude/src/Type/Proxy.purs":["2022-08-18T20:04:00Z","333d0ae90b05098eada860ad476ed9e1eacd67d969dc1573c74375610cf8de22e85a358a7783a0a461d7ffa6fe322d8c3e90696be02555a02793ac99aba687f2"]},"Unsafe.Coerce":{"../../../support/bower_components/purescript-unsafe-coerce/src/Unsafe/Coerce.js":["2022-04-27T14:15:44Z","031c3187f7ce65110a359260041309506e1ff39a97b6eb22c9a8f2e5c14b35db87d509bb5929f245c5d80df6ccd6dadf83579ebe4ac46650acdfa34a493cfc0d"],"../../../support/bower_components/purescript-unsafe-coerce/src/Unsafe/Coerce.purs":["2022-04-27T14:15:44Z","04b214d9cbbf0c438bb2af4b25f8db5d04f247059241982f718c6d83322c3180f0eced0eb5c410860dcdb35650e9129a1cffe87f7279308cc4cf6c6570bba74f"]}}
diff --git a/tests/purs/warning/TypeClassMethodSynonym.out b/tests/purs/warning/TypeClassMethodSynonym.out
new file mode 100644
--- /dev/null
+++ b/tests/purs/warning/TypeClassMethodSynonym.out
@@ -0,0 +1,11 @@
+Warning found:
+in module [33mMain[0m
+at tests/purs/warning/TypeClassMethodSynonym.purs:8:3 - 8:19 (line 8, column 3 - line 8, column 19)
+
+  Type variable [33ma[0m was shadowed.
+
+in type declaration for [33mc[0m
+
+See https://github.com/purescript/documentation/blob/master/errors/ShadowedTypeVar.md for more information,
+or to contribute content related to this warning.
+
diff --git a/tests/purs/warning/TypeClassMethodSynonym.purs b/tests/purs/warning/TypeClassMethodSynonym.purs
new file mode 100644
--- /dev/null
+++ b/tests/purs/warning/TypeClassMethodSynonym.purs
@@ -0,0 +1,8 @@
+-- @shouldWarnWith ShadowedTypeVar
+module Main where
+
+class C :: Type -> Constraint
+class C a where
+  -- The `a` in the type below should refer to the `a`
+  -- introduced by the `forall`, not the class head.
+  c :: forall a. a
